curl --request GET \
--url https://tapipay-facade.homo.tapila.cloud/payment-links \
--header 'x-api-key: <api-key>' \
--header 'x-authorization-token: <api-key>'import requests
url = "https://tapipay-facade.homo.tapila.cloud/payment-links"
headers = {
"x-api-key": "<api-key>",
"x-authorization-token": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'x-api-key': '<api-key>', 'x-authorization-token': '<api-key>'}
};
fetch('https://tapipay-facade.homo.tapila.cloud/payment-links', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://tapipay-facade.homo.tapila.cloud/payment-links",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>",
"x-authorization-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://tapipay-facade.homo.tapila.cloud/payment-links"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-authorization-token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://tapipay-facade.homo.tapila.cloud/payment-links")
.header("x-api-key", "<api-key>")
.header("x-authorization-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://tapipay-facade.homo.tapila.cloud/payment-links")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
request["x-authorization-token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"paymentLinkId": "plk_61a837f5-3c67-423a-ade7-94b78e0007cb",
"status": "ACTIVE",
"amount": 4500,
"currency": "MXN",
"description": "Factura única #777",
"singleUse": true,
"paymentUrl": "https://app.tapipay.la/s/acme-corp/portal/McXmbnKaju/debts/payment-methods?externalRequestId=pl-debt-FAC-777",
"createdAt": "2026-06-03T19:20:00.000Z",
"debtId": "debt_pl-debt-FAC-777",
"externalPaymentLinkId": "FAC-777",
"expiresAt": "2026-06-30T23:59:59.000Z",
"successUrl": null,
"metadata": null,
"identifierValue": "acm-x3kM9pQr",
"contact": null,
"product": null
}
],
"meta": {
"page": 2,
"limit": 250,
"total": 1,
"hasMore": true,
"capped": true
},
"requestId": "<string>"
}Listar links de pago
Devuelve tus links de pago con filtros y paginación, ordenados por externalPaymentLinkId descendente (no por fecha).
curl --request GET \
--url https://tapipay-facade.homo.tapila.cloud/payment-links \
--header 'x-api-key: <api-key>' \
--header 'x-authorization-token: <api-key>'import requests
url = "https://tapipay-facade.homo.tapila.cloud/payment-links"
headers = {
"x-api-key": "<api-key>",
"x-authorization-token": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'x-api-key': '<api-key>', 'x-authorization-token': '<api-key>'}
};
fetch('https://tapipay-facade.homo.tapila.cloud/payment-links', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://tapipay-facade.homo.tapila.cloud/payment-links",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>",
"x-authorization-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://tapipay-facade.homo.tapila.cloud/payment-links"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-authorization-token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://tapipay-facade.homo.tapila.cloud/payment-links")
.header("x-api-key", "<api-key>")
.header("x-authorization-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://tapipay-facade.homo.tapila.cloud/payment-links")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
request["x-authorization-token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"paymentLinkId": "plk_61a837f5-3c67-423a-ade7-94b78e0007cb",
"status": "ACTIVE",
"amount": 4500,
"currency": "MXN",
"description": "Factura única #777",
"singleUse": true,
"paymentUrl": "https://app.tapipay.la/s/acme-corp/portal/McXmbnKaju/debts/payment-methods?externalRequestId=pl-debt-FAC-777",
"createdAt": "2026-06-03T19:20:00.000Z",
"debtId": "debt_pl-debt-FAC-777",
"externalPaymentLinkId": "FAC-777",
"expiresAt": "2026-06-30T23:59:59.000Z",
"successUrl": null,
"metadata": null,
"identifierValue": "acm-x3kM9pQr",
"contact": null,
"product": null
}
],
"meta": {
"page": 2,
"limit": 250,
"total": 1,
"hasMore": true,
"capped": true
},
"requestId": "<string>"
}Autorizaciones
API key del API Gateway de Tapi. Requerida en todas las operaciones. Distinta por ambiente (desarrollo, homologación, producción).
Token TAPI JWT. Requerido en todas las operaciones. Se envía sin prefijo "Bearer". Ej: x-authorization-token: eyJhbGci...
Parámetros de consulta
Filtrar por estado (ACTIVE, PAID, EXPIRED, CANCELLED). Es case-sensitive: un valor inválido devuelve 400.
ACTIVE, PAID, EXPIRED, CANCELLED Filtrar por llave externa exacta
Filtrar por el debtId de la deuda asociada (match exacto)
Inicio del rango de creación. Acepta fecha (YYYY-MM-DD, desde 00:00:00.000Z de ese día UTC) o date-time RFC 3339; otro formato devuelve 400. A diferencia de GET /debts, un date-time se compara de forma exacta (no diaria).
"2026-09-24"
Fin del rango de creación, inclusivo. Acepta fecha (YYYY-MM-DD, hasta 23:59:59.999Z de ese día UTC) o date-time RFC 3339 (comparación exacta); otro formato devuelve 400.
"2026-09-24"
x >= 11 <= x <= 500
