curl --request GET \
--url https://api.prod.payana.cloud/public/api/v1/payments \
--header 'api-key: <api-key>'import requests
url = "https://api.prod.payana.cloud/public/api/v1/payments"
headers = {"api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'api-key': '<api-key>'}};
fetch('https://api.prod.payana.cloud/public/api/v1/payments', 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://api.prod.payana.cloud/public/api/v1/payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"api-key: <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://api.prod.payana.cloud/public/api/v1/payments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api-key", "<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://api.prod.payana.cloud/public/api/v1/payments")
.header("api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.prod.payana.cloud/public/api/v1/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"reference": "aaea7db4-647c-4d92-9f86-89e34a68e1aa",
"beneficiary": {
"reference": "616263a5-a677-4ad1-92ca-7e120adad8d4",
"name": "0411test STG",
"identifier_type": "NIT",
"identifier_number": "1100",
"is_deleted": false,
"deleted_at": null,
"contact_information": []
},
"email": null,
"document": {
"reference": "b2c3d4e5-f6a7-4890-b123-c456d7890abc",
"type": "invoice",
"document_number": "FC-2024-001",
"fiscal_reference": "e19d3e7867371a12fd53b67a56db087faa871c9797993d9bbf7806ae4e1466ea",
"origin": "fiscal_entity",
"amount": 10000,
"amount_currency": "COP",
"is_canceled": false
},
"amount": 10000,
"amount_currency": "COP",
"exchange_amount": 10000,
"exchange_currency": null,
"exchange_rate": null,
"status": "pending",
"file_path": null,
"receipt_file_path": null,
"is_archived": false,
"payable": {
"reference": "a1cde862-db4f-427f-bd95-91a2f8dd06a1",
"type": "supplier",
"status": "pending",
"amount": 10000,
"amount_currency": "COP",
"file_path": null,
"balance": null,
"issue_date": "2025-11-27",
"expiration_date": "2025-11-28",
"concept": "Factura FC-2024-001",
"origin": "fiscal_entity",
"projects": []
},
"batch": null,
"tags": [],
"accounting_receipt": null,
"source_of_fund": null,
"paid_at": null,
"payment_method": null,
"created_at": "2025-11-27T16:04:55.400+00:00",
"updated_at": "2025-11-27T16:04:55.400+00:00"
}
],
"total": 1,
"current_page": 1,
"page_size": 30,
"total_pages": 1
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "The request contains invalid data",
"details": {
"amount": [
"Amount must be greater than 0"
],
"beneficiary_id": [
"Beneficiary does not exist"
]
}
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "The request contains invalid data",
"details": {
"amount": [
"Amount must be greater than 0"
],
"beneficiary_id": [
"Beneficiary does not exist"
]
}
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "The request contains invalid data",
"details": {
"amount": [
"Amount must be greater than 0"
],
"beneficiary_id": [
"Beneficiary does not exist"
]
}
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "The request contains invalid data",
"details": {
"amount": [
"Amount must be greater than 0"
],
"beneficiary_id": [
"Beneficiary does not exist"
]
}
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "The request contains invalid data",
"details": {
"amount": [
"Amount must be greater than 0"
],
"beneficiary_id": [
"Beneficiary does not exist"
]
}
}
}List Payments
Lista pagos paginados con filtros opcionales.
Por defecto la lista no incluye los pagos de nómina. Para recibirlos junto con los pagos a proveedores, enviá include_payroll=true y diferencialos con payable.type: supplier (proveedor), payroll (nómina) o advance (anticipo). En el detalle (GET /payments/{reference}) el beneficiario de un pago de nómina es de tipo employee.
Varios filtros aceptan múltiples valores separados por coma (ej. beneficiary_reference=ref-1,ref-2). Las fechas usan formato YYYY-MM-DD y aplican sobre la fecha de vencimiento del payable asociado.
Para obtener el detalle completo de un pago (incluyendo datos de contacto del beneficiario, centro de costo, proyectos e información del ERP) usá GET /payments/{reference}.
curl --request GET \
--url https://api.prod.payana.cloud/public/api/v1/payments \
--header 'api-key: <api-key>'import requests
url = "https://api.prod.payana.cloud/public/api/v1/payments"
headers = {"api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'api-key': '<api-key>'}};
fetch('https://api.prod.payana.cloud/public/api/v1/payments', 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://api.prod.payana.cloud/public/api/v1/payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"api-key: <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://api.prod.payana.cloud/public/api/v1/payments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api-key", "<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://api.prod.payana.cloud/public/api/v1/payments")
.header("api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.prod.payana.cloud/public/api/v1/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"reference": "aaea7db4-647c-4d92-9f86-89e34a68e1aa",
"beneficiary": {
"reference": "616263a5-a677-4ad1-92ca-7e120adad8d4",
"name": "0411test STG",
"identifier_type": "NIT",
"identifier_number": "1100",
"is_deleted": false,
"deleted_at": null,
"contact_information": []
},
"email": null,
"document": {
"reference": "b2c3d4e5-f6a7-4890-b123-c456d7890abc",
"type": "invoice",
"document_number": "FC-2024-001",
"fiscal_reference": "e19d3e7867371a12fd53b67a56db087faa871c9797993d9bbf7806ae4e1466ea",
"origin": "fiscal_entity",
"amount": 10000,
"amount_currency": "COP",
"is_canceled": false
},
"amount": 10000,
"amount_currency": "COP",
"exchange_amount": 10000,
"exchange_currency": null,
"exchange_rate": null,
"status": "pending",
"file_path": null,
"receipt_file_path": null,
"is_archived": false,
"payable": {
"reference": "a1cde862-db4f-427f-bd95-91a2f8dd06a1",
"type": "supplier",
"status": "pending",
"amount": 10000,
"amount_currency": "COP",
"file_path": null,
"balance": null,
"issue_date": "2025-11-27",
"expiration_date": "2025-11-28",
"concept": "Factura FC-2024-001",
"origin": "fiscal_entity",
"projects": []
},
"batch": null,
"tags": [],
"accounting_receipt": null,
"source_of_fund": null,
"paid_at": null,
"payment_method": null,
"created_at": "2025-11-27T16:04:55.400+00:00",
"updated_at": "2025-11-27T16:04:55.400+00:00"
}
],
"total": 1,
"current_page": 1,
"page_size": 30,
"total_pages": 1
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "The request contains invalid data",
"details": {
"amount": [
"Amount must be greater than 0"
],
"beneficiary_id": [
"Beneficiary does not exist"
]
}
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "The request contains invalid data",
"details": {
"amount": [
"Amount must be greater than 0"
],
"beneficiary_id": [
"Beneficiary does not exist"
]
}
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "The request contains invalid data",
"details": {
"amount": [
"Amount must be greater than 0"
],
"beneficiary_id": [
"Beneficiary does not exist"
]
}
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "The request contains invalid data",
"details": {
"amount": [
"Amount must be greater than 0"
],
"beneficiary_id": [
"Beneficiary does not exist"
]
}
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "The request contains invalid data",
"details": {
"amount": [
"Amount must be greater than 0"
],
"beneficiary_id": [
"Beneficiary does not exist"
]
}
}
}Authorizations
API key provista por Payana.
Query Parameters
Búsqueda libre (beneficiario, concepto, etc.).
50Referencia (UUID) del beneficiario. Acepta múltiples valores separados por coma.
Referencia (UUID) del documento asociado. Acepta múltiples valores separados por coma.
Referencia (UUID) del lote de pagos. Acepta múltiples valores separados por coma.
Referencia (UUID) del payable asociado.
Estado de archivado del pago. Si se usa archived, el filtro status se ignora. Por defecto se listan los pagos activos.
active, archived Filtra por estado del pago.
Estado del pago: pending (creado, sin procesar), in_process (en procesamiento), processed (acreditado) o failed (rechazado).
pending, in_process, processed, failed Fecha de vencimiento desde (inclusive), formato YYYY-MM-DD.
Fecha de vencimiento hasta (inclusive), formato YYYY-MM-DD.
IDs de etiquetas separados por coma (ej. 1,2,3).
Métodos de pago separados por coma (ej. card,banking_correspondent).
Si es true, devuelve únicamente pagos de gastos.
Si es true, la lista incluye también los pagos de nómina (payable.type = payroll). Por defecto es false y solo se devuelven pagos a proveedores y anticipos.
Página (1-indexed).
x >= 1Cantidad de ítems por página.
x >= 1Campo de ordenamiento.
created_at, amount, expiration_date, paid_at, beneficiary Dirección de ordenamiento.
asc, desc