# Lectura de llaves Bre-B
Source: https://docs.onepay.la/client/accounts/bre-b-keys
GET /accounts/bre-b/{key}
Endpoint para obtener las llaves de Bre-B.
ID único de la llave que deseas consultar, si es Alfanumérica debe empezar por @
```json 200 theme={null}
{
"document_type":"CC",
"document_number":"1000000000",
"first_name":"Juan",
"last_name":"Pérez",
"status":"ACTIVE",
"key_type":"ALPHANUM",
"key_value":"@prueba-breb",
"bank": {
"id": "4fc80902-6345-4f3a-82f1-0aad2a21ed0b",
"name": "Nu Bank",
"logo": "https://example.com/logo.png"
}
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, llave no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Crear Cuenta
Source: https://docs.onepay.la/client/accounts/create
POST /accounts
Endpoint para crear una cuenta bancaria.
### Headers
Token único para garantizar la idempotencia de la petición
El parámetro `authorization` debe ser `true`. Sin esto, la cuenta se crea pero el usuario nunca recibe la solicitud de enrolamiento en su billetera y no podrás realizar cargos.
Tipo de cuenta bancaria \[SAVINGS, CHECKING, ELECTRONIC\_DEPOSIT, KEY(Bre-B), WALLET]
`WALLET` es el saldo OnePay de otra empresa, para dividir cobros hacia ella. El `account_number`
es el identificador de ese saldo y el `bank_id` es siempre el de ONE BANK.
[Ver la guía completa](/client/accounts/onepay-balance).
Indica si el usuario ha autorizado débitos automáticos para esta cuenta.
Indica si es una re-vinculación de una cuenta que ya existió previamente. Útil para rastrear cuentas que fueron eliminadas y vueltas a crear.
Número de cuenta bancaria, si es cuenta de Bre-B alfa numérica debe empezar con @
Identificador único del cliente.
Identificador único del banco \[requerido si el tipo de cuenta es SAVINGS o CHECKING]
ID del cliente dueño de la cuenta. [Crear cliente](/client/customers/create).
ID del cliente relacionado (opcional). Útil para vincular cuentas de familiares, socios o representantes autorizados al cliente principal.
```json 200 theme={null}
{
"id":"84cc072e-90e8-33cf-9305-098095fed32f",
"title":"Ms.",
"subtype":"CHECKING",
"status":"PENDING",
"authorization":true,
"customer_id":"9e01d019-b438-40d2-89e1-52430c69dfb7",
"re_enroll":false,
"external_id":null,
"bank_id":"9e01d019-b731-48bc-b111-2baa3ea56ef6",
"bank":{
"id":"9e01d019-b731-48bc-b111-2baa3ea56ef6",
"name":"Maggio-Hills",
"logo":null,
"base64_logo":""
},
"customer":{
"id":"9e01d019-b438-40d2-89e1-52430c69dfb7",
"first_name":"Izaiah",
"last_name":"Rogahn",
"email":"",
"phone":"+17478695836",
"document_type":"CC",
"document_number":"156762",
"created_at":"2025-01-19T17:03:55.000000Z",
"is_test":true
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
```bash cURL theme={null}
curl https://api.onepay.la/v1/accounts \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: account-001" \
-d '{
"subtype": "SAVINGS",
"authorization": true,
"re-enrollment": false,
"account_number": "1234567890",
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"bank_id": "9957817c-f17e-472b-b531-e3d1490bf757"
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/accounts', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'account-001'
},
body: JSON.stringify({
subtype: 'SAVINGS',
authorization: true,
're-enrollment': false,
account_number: '1234567890',
customer_id: '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
bank_id: '9957817c-f17e-472b-b531-e3d1490bf757'
})
});
const account = await response.json();
```
```python Python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/accounts',
headers={
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'account-001'
},
json={
'subtype': 'SAVINGS',
'authorization': True,
're-enrollment': False,
'account_number': '1234567890',
'customer_id': '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
'bank_id': '9957817c-f17e-472b-b531-e3d1490bf757'
}
)
account = response.json()
```
```php PHP theme={null}
"https://api.onepay.la/v1/accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json",
"x-idempotency: account-001"
],
CURLOPT_POSTFIELDS => json_encode([
"subtype" => "SAVINGS",
"authorization" => true,
"re-enrollment" => false,
"account_number" => "1234567890",
"customer_id" => "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"bank_id" => "9957817c-f17e-472b-b531-e3d1490bf757"
])
]);
$response = curl_exec($curl);
$account = json_decode($response, true);
?>
```
# Crear Cuenta Bre-B
Source: https://docs.onepay.la/client/accounts/create-breb
POST /accounts
Crea cuentas con llave Bre-B para enviar dinero.
El monto del movimiento debe de ser menor a \$11.552.000 COP.
### Headers
Token único para garantizar la idempotencia de la petición
Tipo de cuenta bancaria.
Llave de Bre-B.
Identificador único del cliente.
ID del cliente dueño de la cuenta. [Crear cliente](/client/customers/create).
```json 200 theme={null}
{
"id":"84cc072e-90e8-33cf-9305-098095fed32f",
"title":"Ms.",
"subtype":"CHECKING",
"status":"PENDING",
"authorization":true,
"customer_id":"9e01d019-b438-40d2-89e1-52430c69dfb7",
"re_enroll":false,
"external_id":null,
"bank_id":"9e01d019-b731-48bc-b111-2baa3ea56ef6",
"bank":{
"id":"9e01d019-b731-48bc-b111-2baa3ea56ef6",
"name":"Maggio-Hills",
"logo":null,
"base64_logo":""
},
"customer":{
"id":"9e01d019-b438-40d2-89e1-52430c69dfb7",
"first_name":"Izaiah",
"last_name":"Rogahn",
"email":"",
"phone":"+17478695836",
"document_type":"CC",
"document_number":"156762",
"created_at":"2025-01-19T17:03:55.000000Z",
"is_test":true
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
```json theme={null}
curl --request POST \
--url https://api.onepay.la/v1/accounts \
--header 'Authorization: Bearer sk_live_C6UfGhhir1gNC5Crs9LIItzU0IoaLRdUenpLsXg3M3vg5vGAAK18' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"subtype": "SAVINGS",
"authorization": true,
"re-enrollment": false,
"account_number": "6253141",
"external_id": "98371293719",
"customer_id": "8f40acb8-be95-49a8-b4cd-c45385fb0603",
"bank_id": "9957817c-f17e-472b-b531-e3d1490bf757"
}
'
```
# Eliminar Cuenta
Source: https://docs.onepay.la/client/accounts/delete
DELETE /accounts/{account_id}
Elimine una cuenta bancaria objetivo.
ID de la cuenta bancaria que deseas eliminar.
```json 204 theme={null}
No content
```
```json 401 theme={null}
{
"message": "No autenticado",
"code": 10000,
"code_name": "unauthenticated"
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Cuenta no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Ver Cuenta
Source: https://docs.onepay.la/client/accounts/detail
GET /accounts/{account_id}
Obtiene los detalles de una cuenta bancaria específica.
ID de la cuenta bancaria registrada. [Ver cómo crear cuentas](/client/accounts/create).
```json 200 theme={null}
{
"id":"84cc072e-90e8-33cf-9305-098095fed32f",
"title":"Ms.",
"subtype":"CHECKING",
"status":"PENDING",
"authorization":true,
"customer_id":"9e01d019-b438-40d2-89e1-52430c69dfb7",
"re_enroll":false,
"external_id":null,
"bank_id":"9e01d019-b731-48bc-b111-2baa3ea56ef6",
"bank":{
"id":"9e01d019-b731-48bc-b111-2baa3ea56ef6",
"name":"Maggio-Hills",
"logo":null,
"base64_logo":""
},
"customer":{
"id":"9e01d019-b438-40d2-89e1-52430c69dfb7",
"first_name":"Izaiah",
"last_name":"Rogahn",
"email":"",
"phone":"+17478695836",
"document_type":"CC",
"document_number":"156762",
"created_at":"2025-01-19T17:03:55.000000Z",
"is_test":true
}
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Cuenta no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Introducción
Source: https://docs.onepay.la/client/accounts/index
Gestiona las cuentas bancarias inscritas de tus clientes.
## ¿Qué es una Cuenta Bancaria?
Una cuenta bancaria es un método de pago registrado a nombre de un [cliente](/client/customers/index). Permite recibir transferencias (dispersiones) o realizar débitos automáticos desde la cuenta del cliente.
Para todos los casos, los datos de **número de cuenta**, **tipo de cuenta** y **tipo de documento** deben coincidir exactamente con los registros del banco. Datos incorrectos causarán rechazo de la transacción.
## ¿Para qué se usa?
| Caso de uso | ¿Necesitas `authorization`? | Descripción |
| ---------------------------------- | --------------------------- | ------------------------------------------------------------------ |
| Débito automático (cobrar) | Sí (`true`) | Debita la cuenta del cliente con un [cargo](/client/charges/index) |
| Recibir transferencias (dispersar) | No | Envía dinero a la cuenta con un [cashout](/client/cashouts/index) |
| Fintech as a Service | No | Envía dinero desde el saldo de un cliente a un tercero |
## Ejemplo rápido
```bash theme={null}
curl https://api.onepay.la/v1/accounts \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cuenta-001" \
-d '{
"customer_id": "CUSTOMER_ID",
"bank_id": "BANK_ID",
"subtype": "SAVINGS",
"account_number": "123456789",
"authorization": true
}'
```
Consulta los bancos disponibles con `GET /accounts/banks` antes de registrar una cuenta.
## Autorización para débitos
Si necesitas **cobrar** desde la cuenta (crear cargos), debes registrarla con `"authorization": true`. Sin este campo, la cuenta solo servirá para recibir transferencias.
El cliente recibirá una notificación de su banco confirmando la autorización.
## Bancos disponibles para débitos
| Banco | Tiempo de procesamiento | Notas |
| ----------------------------- | ----------------------- | --------------------------------------------- |
| AV Villas | Siguiente día hábil | |
| Banco Agrario | Siguiente día hábil | |
| Banco Caja Social | Siguiente día hábil | |
| Banco Compartir | Siguiente día hábil | |
| Banco Cooperativo Coopcentral | Siguiente día hábil | |
| Banco de Bogotá | Siguiente día hábil | |
| Banco de Occidente | Siguiente día hábil | |
| Banco Falabella | Siguiente día hábil | |
| Banco Popular | Siguiente día hábil | |
| Banco Serfinanza | Siguiente día hábil | |
| Bancolombia | Siguiente día hábil | |
| Bancoomeva | Siguiente día hábil | |
| BBVA | Siguiente día hábil | |
| Citibank | Siguiente día hábil | |
| Davivienda | Siguiente día hábil | |
| GNB Sudameris | Siguiente día hábil | |
| Itaú | Siguiente día hábil | |
| Nequi | Tiempo real | Requiere intervención del usuario al conectar |
| Scotiabank Colpatria | Siguiente día hábil | |
| Daviplata | Tiempo real | Requiere intervención del usuario al conectar |
Para vincular Nequi o Daviplata, consulta la guía de [tokenización de cuentas](/client/use-cases/tokenizar-cuentas).
## Endpoints
| Método | Endpoint | Descripción |
| -------- | -------------------- | ------------------------- |
| `GET` | /accounts/banks | Listar bancos disponibles |
| `POST` | [/accounts](create) | Registrar cuenta bancaria |
| `GET` | [/accounts](list) | Listar cuentas bancarias |
| `GET` | [/accounts/](detail) | Detalle de una cuenta |
| `DELETE` | [/accounts/](delete) | Eliminar cuenta |
# Listado de cuentas
Source: https://docs.onepay.la/client/accounts/list
GET /accounts
Endpoint para obtener el listado de cuentas bancarias.
### Query Parameters
Filtra cuentas por ID de cliente.
Número de página para paginación.
Cantidad de resultados por página (máximo 100).
Filtra cuentas por estado \[PENDING, ACTIVE, REJECTED, INACTIVE].
```bash cURL theme={null}
curl https://api.onepay.la/v1/accounts?page=1&limit=20 \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/accounts?page=1&limit=20', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
```
```python Python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/accounts',
params={'page': 1, 'limit': 20},
headers={
'Authorization': 'Bearer sk_test_xxx'
}
)
data = response.json()
```
```php PHP theme={null}
"https://api.onepay.la/v1/accounts?page=1&limit=20",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($curl);
$data = json_decode($response, true);
?>
```
```json 200 theme={null}
{
"data": [
{
"id": "84cc072e-90e8-33cf-9305-098095fed32f",
"title": "Cuenta Ahorros",
"subtype": "SAVINGS",
"status": "ACTIVE",
"authorization": true,
"customer_id": "9e01d019-b438-40d2-89e1-52430c69dfb7",
"re_enroll": false,
"external_id": null,
"bank_id": "9e01d019-b731-48bc-b111-2baa3ea56ef6",
"bank": {
"id": "9e01d019-b731-48bc-b111-2baa3ea56ef6",
"name": "Bancolombia",
"logo": "https://example.com/logo.png"
}
},
{
"id": "9957817d-239b-4032-8dca-bc508a76579c",
"title": "Nequi",
"subtype": "ELECTRONIC_DEPOSIT",
"status": "ACTIVE",
"authorization": true,
"customer_id": "9e01d019-b438-40d2-89e1-52430c69dfb7",
"re_enroll": false,
"external_id": null,
"bank_id": "9957817d-239b-4032-8dca-bc508a76579c",
"bank": {
"id": "9957817d-239b-4032-8dca-bc508a76579c",
"name": "Nequi",
"logo": "https://example.com/nequi.png"
}
}
],
"current_page": 1,
"first_page_url": "https://api.onepay.la/v1/accounts?page=1",
"from": 1,
"next_page_url": null,
"path": "https://api.onepay.la/v1/accounts",
"per_page": 20,
"prev_page_url": null,
"to": 2
}
```
# Listado de bancos
Source: https://docs.onepay.la/client/accounts/list-banks
GET /banks
Endpoint para obtener el listado de bancos soportados por OnePay.
Acá puedes hacer consultar el listado de bancos disponibles sobre los que puedes ejecutar débitos.
Nombre del banco
Indica si el banco está disponible para hacer débitos autorizados
Indica el tipo de conexión del banco
Filtra bancos habilitados para cobro por PSE. Usa `true` para obtener solo bancos con PSE disponible.
Orden de los resultados por prioridad y nombre \[priority | -priority | name | -name]
```json 200 theme={null}
[
{
"id": "9957817d-239b-4032-8dca-bc508a76579c",
"name": "NEQUI",
"supported_types": [
"savings",
"electronic_deposit"
],
"mask": "999 999 9999",
"transaction_avg": 0,
"available": true,
"pse": true,
"connection_type": "CONFIRMATION",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fnequi.jpg?alt=media&token=20984290-ce05-4815-916f-c5362522750f",
"instructions": "Sigue los siguientes pasos para realizar tu pago.
- Abre Nequi y toca la campanita en la esquina derecha.
- Busca la notificación pendiente de Pagos y conexiones y toca Aceptar.
- Confirma el pago a Pagos y conexiones seleccionando Confirmar.
",
"base64_logo": "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"
},
{
"id": "9957817c-f17e-472b-b531-e3d1490bf757",
"name": "BANCOLOMBIA",
"supported_types": [
"savings",
"checking"
],
"mask": "999-999999-99",
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbancolombia.jpg?alt=media&token=b0fa2f5e-6dfc-4cc1-a5f7-1c49877fd1fa",
"instructions": "Por tu seguridad, tu cuenta de Bancolombia está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOImh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjA3NWM2ZDc4LTExOWQtNGI3NS1iNGUyLTkzZDFkMzc5NDQ3MjwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAzPC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8nPgogIDxwZGY6QXV0aG9yPk1hbnVlbCBIZXJyZXJhPC9wZGY6QXV0aG9yPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp4bXA9J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8nPgogIDx4bXA6Q3JlYXRvclRvb2w+Q2FudmEgKFJlbmRlcmVyKSBkb2M9REFHWmZSdFdFOFkgdXNlcj1VQUVUVWNoSVNKUTwveG1wOkNyZWF0b3JUb29sPgogPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKKKKACimyyJFG0krqkajLMxwAPc1yOsfEzwZo+4XviPT9y9Ugk89h7YTJoA7CivGNW/aJ8JWpK2Nrql8w6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"
},
{
"id": "9957817d-20b0-4a9a-a31a-cd2aa2509668",
"name": "DAVIVIENDA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fdavivienda.jpg?alt=media&token=17a44e51-bae5-4eeb-8be6-81a085d1f7c0",
"instructions": "Por tu seguridad, tu cuenta de Davivienda está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOImh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjljZmI4YWI2LWFiMWUtNDljZi04YjYyLTMyYjY2NjAyZjVlYTwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSA0PC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8nPgogIDxwZGY6QXV0aG9yPk1hbnVlbCBIZXJyZXJhPC9wZGY6QXV0aG9yPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp4bXA9J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8nPgogIDx4bXA6Q3JlYXRvclRvb2w+Q2FudmEgKFJlbmRlcmVyKSBkb2M9REFHWmZSdFdFOFkgdXNlcj1VQUVUVWNoSVNKUTwveG1wOkNyZWF0b3JUb29sPgogPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDz+iiivnT92CiiigAooooAKKKKACiiigAooooAKKKKACiiigAorR0DRNQ8QalHY6TbPcXD9l6KPVj0A9zXqiaX4U+G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"
},
{
"id": "9957817d-2f20-4fb8-8759-c7d6b5f8509d",
"name": "BANCO DE OCCIDENTE",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbanco-de-occidente.jpg?alt=media&token=09e32c97-2c41-4645-b4b9-6888b6336368",
"instructions": "Por tu seguridad, tu cuenta del Banco de Occidente está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOImh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPmFmNDNhODg2LTFhYTUtNGRlYS1iMzhiLTE2OWM4ODMxNGJiODwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSA1PC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8nPgogIDxwZGY6QXV0aG9yPk1hbnVlbCBIZXJyZXJhPC9wZGY6QXV0aG9yPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp4bXA9J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8nPgogIDx4bXA6Q3JlYXRvclRvb2w+Q2FudmEgKFJlbmRlcmVyKSBkb2M9REFHWmZSdFdFOFkgdXNlcj1VQUVUVWNoSVNKUTwveG1wOkNyZWF0b3JUb29sPgogPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKKKKACiiqWs6paaPp0t7qEoigjGST1PsPU00nJ2QpSUU5SdkXaK4LwR8SLLxJqM1lPGLScsfs4ZsiRf/iv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"
},
{
"id": "9957817d-2c57-4c19-a4ab-1d3f6a7d427f",
"name": "BBVA",
"supported_types": [
"savings",
"checking"
],
"mask": "9999999999",
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbbva.jpg?alt=media&token=a34d93b0-587e-4674-ac4d-a3584ef903d7",
"instructions": "Por tu seguridad, tu cuenta de BBVA está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAAGQAAAADoAQAAQAAAGQAAAAAAAAA/+EOF2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjZjMDBhMWZmLTY5OGItNGQyMy04MWFiLWVlNWIwZDUwN2M5MTwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSA3PC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8nPgogIDxwZGY6QXV0aG9yPk1hbnVlbCBIZXJyZXJhPC9wZGY6QXV0aG9yPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp4bXA9J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8nPgogIDx4bXA6Q3JlYXRvclRvb2w+Q2FudmEgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+fKKKK9o80KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjNFfSvhOXwz4W/Z70bxNqvhPTNZunnaF/Nhj3vundQS7KTwAKipPkS0uVCPMfNVFfQeh/E3wBrusWWlah8NNNtLe9mW3M8aRMULkKDgIpxkjoc1y3jnwTp3hP46aTotogl0q5u7SZIJTv2o8gDRnPUZB69jUqrraSsNw0umeS5HrRX1J8U/F/gzwF4rbRW+HOj3zCBJ/OWKGMfNnjHln0qp4Zi8DfGXSNbsLPwnB4d1iygE0M9sFGM5CnKgAjIwVI6Hj2lV3bmcdCvZa2T1PmaivoD4d6JovxK+Dmp6Lb6bp9v4u0kAxXMUKJJOBkxlmAyQ3zIc98GvAZFaN3SVWR0JDKwwVI6g+4rSE+ZtdiJRtZjavaNpN/reoLY6VayXV2yu4ijHJVVLMfwANe6yaDpHw2+BS32uaVYXfinXP+PdbuBZGgLrxjcONifMf9oitP9nrStM8C+DLnx54plFst+yWto7jJWIuFyB1+Zuf91c9KzlX91tItUtUmfNI5GaK9Q/aE8FDwj44kuLKMDSNV3XVsVHyqxP7xB9Ccj2YeleX1rCSklJGclyuzCiiiqEFfUfhvU9B0n9mHQ7nxVpDavpv2hkNspAJc3Em1uSOlfLlfQnhPxN8PdU+COleEfGGuXNjNDK0sq28MhdSJndfm2MpBDCsK6ul6mtJ2bI/DfxJ+E+ma5Z3lv4DmsJopAy3WFkMJ/vbdx6e3PpUXxY0C60z49eGtUn1B7+21i9tri3kcAGNVlQeWMcYAK49jzzya9vo/wACbKVbiTxHrV+qEN9naOQB8djiJTj8RWR4++Jtl4u+J/hvUoYZLLQdHuIRH5i/PsEis7lRnHAGAM8D3rOMfevFPbqU3paR6f8AG3xR4A0nxu1r4q8HSaxqQto2NyrADYd21fvDpz+dHw18SeDfF2n654T8EadceEtTv7ZmE6RoxcDg/Nk9A3Q44JwQayPiDe/Bvxz4hOsar4r1OG5MSwlbaGRUwucHBhJzz61S8PeJ/hN8NHuNU8KT6rrmtNC0UXnKwC55xkqoUHAycE46Vmo+5azuXze9e6seY/D3xFd/DP4kpPcZEdpO9jfxoeHiDbXx64IDD6V7lrHwdg1n40WGv2qRyeFbxRqdwVI2NKMHYPZyVb6bq+XtTvZtS1K7vrohri6meeQjoWZix/U161ofxjudN+C134YDyf2yrfZLScfw2rg7jn+8oyo/3l9K3qwlpKO+zM4SjtLYu+L7mf40/G630iwkY6JZsYFkXosCHM0v1Y8D/gNQ/tNeK4L3XbTwlpG1NI0NBG0afdM23G36IuF+pauI+HHxE1P4f/2g+iWWnSXF4qo09zGzvGq5wFwwGMnPIPIFcfcTS3E8s9xI0k0rl3djksxOST7kmnGlaS7LYlzuvNn0d4TK/F/4HXXh+dlfxNoAU2rsfmcKD5Zz6MoaM+4Br5vdWR2R1KupIZWGCCOoPvXR+APGWqeBtfGraKYjMYmhkimBMciHswBB4IBHPUVm+JtYk8Qa/fatNbW1rNeSmaSK2UrGGPUgEkjJ569SaqEHCTXQUpKSXczKKKK1ICiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Z"
},
{
"id": "9957817d-2991-42ac-b89c-4225616c4b97",
"name": "BANCO DE BOGOTA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbanco-de-bogota.jpg?alt=media&token=738a77c1-d271-46e9-a9c0-30ac511150e9",
"instructions": "Por tu seguridad, tu cuenta del Banco Bogotá está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAAGQAAAADoAQAAQAAAGQAAAAAAAAA/+EOF2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPmI3MzIzYjgwLTFiNjgtNGE1Ni1hZDhkLTMxMWEyOTY3MWU2ZTwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSA4PC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8nPgogIDxwZGY6QXV0aG9yPk1hbnVlbCBIZXJyZXJhPC9wZGY6QXV0aG9yPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp4bXA9J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8nPgogIDx4bXA6Q3JlYXRvclRvb2w+Q2FudmEgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorzb4r/EEeG4/7N0pkbVpFyznkW6noSO7HsPxNTOaguZm+Hw9TE1FSpq7Z1nibxZo3hqINq16kchGVhX5pG+ijn8elc/p3jPW/EI8zw54ak+yH7t3qEwhRh6gAEn8K5X4YeAX1Vl8SeLN91JOfMghnJYv6SPnr7L0717MqhVCqAFAwAO1Zwc56vRHViIYfDP2cffkt30+SW5zUd74iiUNfW1oT3FtE7/qWH8qmXxTZhtk0c8bjg5Tp+Ga6CqGq6Vb6jCVlUCQD5ZAORXFjKWNUXLCzV+zW/wAznpzot2qR08h9lqlne8W9wjN/d6H8jVyvKp4ntrl424kiYqSD3Fdr4T1WS9ikguW3TRAEN3Zff3rx8n4k+uVvquIjyz8ttOnkdWLy/wBjD2lN3idBRRRX1Z5gUUUUAFFFFAGZ4m1eLQtBvtTnGUtoi4X+83RR+JwK+a/BenzeM/H0C6kxl8+Vrm6Y91HJH0PC/Q16v+0FeNB4RtbZTj7TdqG9wqlv54rjf2egh8W35bG8WR2/99rn+lcVZ89WMHsfTZbD6vl9XEx+J6I+gUUIoVQFUDAA6ClorF1PW3tty21jcTEfxlCq/wAua1xOKpYWHPVdl9/5HzlOnKo7RNqqGpapBYoc7pJe0aDJJ/pXH3XiTUpWIEiw/wCyiYP61QbUr5jk3c/4ORXymM4voJOFCLv3a/S56dLKqj1m0MuzPNcSzyxOGkYsflIHNdR4L0+WES3cylBIoVAepHXNc0up3yni8n/Fya2dI1TW52xAn2lBwd6gD8+K+fyWthIY1Vpc8pdNL6vrozuxkKro8isl6na0VXspLiSLN1AIZB2D7gasV+owmpxUkfONWdgoooqhBRRRQB5P+0Rbs/hzTJwPliu9p/4Eh/wrzT4S6wmjeObCSdwkFxm2kYngb+hP/Agte+/EfRG8QeDtQsol3XGzzYR/tryB+OMfjXykcg85BH4EV52JvCqpn2WScmKwM8M/P8T7TorzT4UfEGHXLOHS9WmWPV4l2qznAuFHQj/a9R+Nel13wmpq6PlMThqmGqOnUVmitd2FreLtuYEf3I5H41yWu+HGtEaeyLSQjlkPLKP6iu2orzMxyfDZhBqpG0ujW5WHxdSg7xenY8rtkWSZRISI/vMR6Dk1s6Rr8lreASgCzb5fLUcRjsR/X1qDxNZCw1NxENsUy71A7eo/OsivzH22IyjEOnB2lF6+f/A/zPo+SGLhzS2a+49YVg6hlIKkZBHelrI8KTNNokG/JKZTPsDxWvX63hK6xNCFZfaSf3ny1SHs5uHYKKKK6CAooooAK8C+M3gSTTr2bXtKi3WEzbrmNB/qXPVsf3T+h+te+0jqroyOoZWGCCMgis6tNVI2Z2YHGzwVVVIfNd0fFoJUgqSCOQR2rttC+J/ifSI0iF4t5CvRLtd5x/vcN+tekeL/AIPWGoyyXOgTjT52OTAy7oSfbuv4ZHtXm2o/C/xXZOQNOF0g6PbyqwP4HB/SvOdKrSfu/gfYxzDL8fBKrb0kb0nxr11o8R6fpqP/AHiHP6ZrB1T4n+K9QVk/tEWqHtbRhD+fJ/Wq1t8OvFlw4VdFnTPeVlQfqa6zRfhOLMLdeLr+OCEc/ZbZtzv7Fu34fmKU6lWMXKo7JdXoQ1lWH1iot9lq/wBTS8IzXNx4H0uW9mkmmkmuHDyMWYrvA6n3BrRVSzBVBLE4AHc1ejtJb+SOHTLPy7WFRFDGgwkaDoM11mg+Ho7BhPckS3HbH3U+nv718NPLq2dY6VWkrU9PefZK3zuebVxlPDwbe7u7eruaGi2hsdMggb76jLfU8mr1FFfpdGlGjTjThslb7j5mUnOTk92FFFFaEhRRRQAUUUUAFFFFADZEDrtOQPY4qoulWIkMhto3c/xONx/WrtFZzo06ms4p+pSk47MRVVFCqAAOgApaKKtK2iJCiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH/9k="
},
{
"id": "9957817d-3b03-431d-8366-8c375cf93d60",
"name": "CAJA SOCIAL",
"supported_types": [
"savings",
"checking"
],
"mask": "99999999999",
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbanco-caja-social.jpg?alt=media&token=9df4dc93-8b24-4110-b854-98ff25538f25",
"instructions": "Por tu seguridad, tu cuenta del Banco Caja Social está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAAGQAAAADoAQAAQAAAGQAAAAAAAAA/+EOGGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjFmY2NkMDkwLTFmNmItNDdmZC1iZWQ0LTliN2Y2ZjQ1Zjg3MDwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAxMDwvcmRmOmxpPgogICA8L3JkZjpBbHQ+CiAgPC9kYzp0aXRsZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KICA8cGRmOkF1dGhvcj5NYW51ZWwgSGVycmVyYTwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIGRvYz1EQUdaZlJ0V0U4WSB1c2VyPVVBRVRVY2hJU0pRPC94bXA6Q3JlYXRvclRvb2w+CiA8L3JkZjpEZXNjcmlwdGlvbj4KPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0ndyc/Pv/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4PDBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIAGQAZAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APqmiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKZNLHDE8szqkaAszMcBQOpJoA53xx4vs/CFraXF/DPLHcTeV+6AO3jJJz7dq34rqCWyS7SVTbPGJRITg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"
},
{
"id": "9957817d-3de5-4f53-9fff-f5a914c3b7bc",
"name": "CITIBANK",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fcitibank.jpg?alt=media&token=09f71629-a461-45b6-94ef-ee214fb08471",
"instructions": "Por tu seguridad, tu cuenta de itybank está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOI2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPmZkMzFhZDEwLTBmYmItNGVmZi04MWI0LTc0YjE5YTEyZDRiMjwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAxMTwvcmRmOmxpPgogICA8L3JkZjpBbHQ+CiAgPC9kYzp0aXRsZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KICA8cGRmOkF1dGhvcj5NYW51ZWwgSGVycmVyYTwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIChSZW5kZXJlcikgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKz9c1mx0Owa71KdYYhwO7OfRR3NJtRV2XCEq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"
},
{
"id": "9957817d-40cf-428c-a04d-229a4774154f",
"name": "SCOTIABANK COLPATRIA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fscociabank.jpg?alt=media&token=1e8720e3-5985-4924-88c7-66c5180a13ad",
"instructions": "Por tu seguridad, tu cuenta de Scotiabank Colpatria está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAAGQAAAADoAQAAQAAAGQAAAAAAAAA/+EOF2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPmNlMmQ4NTMwLWU0OGUtNDhkOS1hMTA4LWYwOGU0NDU0YzA0NDwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSA5PC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8nPgogIDxwZGY6QXV0aG9yPk1hbnVlbCBIZXJyZXJhPC9wZGY6QXV0aG9yPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp4bXA9J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8nPgogIDx4bXA6Q3JlYXRvclRvb2w+Q2FudmEgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A4qaSTzZP3j/eP8R9aZ5kn/PR/wDvo0Tf66T/AHj/ADplfNn72krD/Mk/56P/AN9GjzJP+ej/APfRplFA7If5kn/PR/8Avo0eZJ/z0f8A76NMooCyH+ZJ/wA9H/76NHmSf89H/wC+jTKKAsh/mSf89H/76NHmSf8APR/++jTKKAsh/mSf89H/AO+jR5kn/PR/++jTKKAsjQsZH8pvnf7394+gopth/qm/3v6CiqRzSSuypN/rpP8AeP8AOmU+b/XSf7x/nTKk6VsFFFFIYUUUUAFFFFABRRRQAUUUUAXrD/VN/vf0FFFh/qm/3v6CirRzS3ZUm/10n+8f50ynzf66T/eP86saRBHdatZW85xDLPHG5/2SwB/SpSu7GspKEHJ9EdT4S+GviHxPaLeWkMVvZt9ya5YqH/3QASR79K6L/hR3iL/n90z/AL7f/wCJr06O81vxJeXFl4VuINH0HT3Nr9s8kSPM6cFY1PAVemTXL/EOHx74V046laeJpL+wTAlP2dEeLPAJGCCPftXpPDUoRu02fBxz3H4muqcKkIOW0Wn8k3Zq/wAzyLxl4Zm8K6itheXtpcXW3c6W5Y+WO24kDk+lYFS3M8t1cy3FzI8s8rF3kc5LMepJrq/hj4Pbxh4h+zSs0dhbqJbmReu3PCj3P6AGuBR9pO0FufZSr/UsL7XFSvyrV2/Jfkc/o2jalrdz5Gk2NxdyjqIkyF+p6D8a7FPhRrsUIl1a70rSkPP+lXQB/Tj9au+LviNJZmTRPA8celaPbkxCaFQJJiOC2ew9+p65rnfCPhHW/Hd9M0DtJHER511cyEhSewJyS3tWyhTT5UnJnmTxeMlS+sVZRo0/Nc0vnsl6akt14Kt4QQni3w3I4/hFww/XBrmtRsHsHw89nMvZ7e4SUfoc/pXsFx8O38L2bXLeFbfxAsa7pGa+cvgdcRhQPwGan8LfErwVuSC+8NwaUOgkSBJEH1IGR+VaPDxvaXuv5nFSzrEOLqYeLrRW/wAK/BNv8Dwyivdvi54D0y90N/FHhhYV2J50yQY8uaPu644BHXjqM968JrnrUXSlZnuZZmdLMqPtaejWjT3TL1h/qm/3v6Ciiw/1Tf739BRUI6ZbsqTf66T/AHj/ADpqkqQQSCDkEU6b/XSf7x/nWj4a0eTXdYgsY54LZXOZJ53CpGvdjnr9O9JJydkaVKkaVNzm7JLU+iPgRrVpf+CbexjkX7bZs6zxk/MdzFg/uDnr65rZ+KepQWXg6/tXAlvL+M2lrbjlppH4AA9s5P0rltP+H/gSxMUkGtSR3KKAZotTEbE9zwePpVy5uvA3gsvq0l8NQ1IKRE0l0bqc/wCyuSdufXivai5Rp8srH5PXhRq411sOpO7uo8vW97XvtfyPnzxRo8vh/XrvS53DyWxVSw75UH+temfs5apbW+sapplwQs15GrxZ/j2Z3L9cHP4GvL/EOqza5rl9qdyAst1KZCoOQueg/AYFU7aea1uIp7aV4p4mDpIhwykdCDXlQqKnV5o7H6Pi8DPHYD6vWdptK781r+Z6D46+FmtaJfzzaXayahpjMWjaEbnjBOdrL149RXTfBbxxpnh7TJdD19X0+TzmljnkjIVt2MhuOCMd+MVmad8bdejtYbe5ttPklUbWuZFfn3Kr/Spp/F3iXxAD5HinwtZhv4RmJ1/GRCa6oOnGXPSfyPnMTSx9fDfVMxgrLaSbW3XRP8keua5488O6TpT30mpW8wCkxxwuGeU9gor5Lvrj7VeXFyVWPzZGk2jouSTj9a7+TwXbXEpuvEXjzRtx5ZknM7/qRVm2vPh54VxNZx3fiXUkOUaZdkAPrgjH6GlXcq1ueySNMnp4fLFL6spVZy7Jpfe0l8zpfB9zN4Z+B2qT6zujS781bKGTgsJF2qAPQnJ+nNeFgYAHoMV0PjLxdqni2+WfU5FWKPIht4+I4h7Dufc1z1c1aop2jHZHu5TgZ4ZVK1aynUd2lsvL/MvWH+qb/e/oKKLD/VN/vf0FFZo75bsqTf66T/eP86YQD1ANPm/10n+8f50ypN1sJtX+6PypQAOgA+lFFA7BRRRSGFFFFAABjpRRRQAUUUUAXrD/AFTf739BRRYf6pv97+goq0c0t2VJv9dJ/vH+dMp83+uk/wB4/wA6ZUnQtgooopDCiiigAooooAKKKKACiiigC9Yf6pv97+goosf9U3+9/QUVaOaW7HS2iGV/mf7x9PX6U37Gn95/0/woopDTdg+xp/ef9P8ACj7Gn95/0/woooHdh9jT+8/6f4UfY0/vP+n+FFFAXYfY0/vP+n+FH2NP7z/p/hRRQF2H2NP7z/p/hR9jT+8/6f4UUUBdh9jT+8/6f4UfY0/vP+n+FFFAXZbs7VBG3zN9729BRRRVo5pt8zP/2Q=="
},
{
"id": "9957817d-43b6-44de-8ebb-63ab06662c7d",
"name": "AV VILLAS",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbanco-av-villas.jpg?alt=media&token=b76fc9e0-de58-4bc8-bae5-326ae83ade2a",
"instructions": "Por tu seguridad, tu cuenta del Banco AV Villas está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOI2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjg4Njc2YzBiLTlkYjktNGJhOC1iYzllLTZkNDk0ZTJlNTAwZjwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAxNzwvcmRmOmxpPgogICA8L3JkZjpBbHQ+CiAgPC9kYzp0aXRsZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KICA8cGRmOkF1dGhvcj5NYW51ZWwgSGVycmVyYTwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIChSZW5kZXJlcikgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKwPFPi7R/DMO/VLpVlIysCfNI30H9TxXkev8Axq1CdnTRLKK2i7STfO5/DoP1rGpXhT3Z7GX5FjcwXNRh7vd6L/g/I97or5Ru/iF4qumLPrV0me0RCD9AKjt/HXiiBwY9cvmOejybx+RzWH16HZnvLgfF2u6kb/P/ACPrKiuG8Aal4i/sGTUfGUtrBahN6M67JAvq/YD2xmp9L1G48aB57GdrTQFcoHjbE1yR1/3F/wDHj7V0qoml3Z8zUy6dKc1KS5YOzktVfsu78v0OqW8t3uTBHKryj7yrzt+uOn41YqCys7ext1gtIUiiXoqjFT1av1OGfLf3dgooopkhRRRQAV5L8TviiulPLpfh5kkvR8stz1WI+g9W/QVo/Gfxk3h/SV07T5Nuo3in5geYo+hb6noPxr54tbqW2uPOj8tn7+bGsgP1DAiuHE4jlfJE+54Y4djiY/XMSrx+zF9fN+Q28up725kuLuaSadzlndiST9ahruNG8ZabkQ+IfDWmXcB4MlvCIZB/3zgH9K7Fvh74Y8X6Y994Mvmt5gOYJSWCn0YHlfryK440nP4Xdn2VfN44FqOKpuEduZax/DVfNHi1ew/BXwNHdAeIdYjBt4zm1jfoxHVz7DtXF6J4K1G58bQaBfwvBIH3THqBGOSwPcEdD716z8ZPEEXhrwvBoel4hmuY/LCpx5cI4P59PzrShTUb1J7L8zzs8x88RKnl+Cl71XdrpHv8/wAvU4D4t+O38RX76dp0hXSYGxlT/r2H8R9vT86l+BXiCXTvFI0x3Jtb8EbSeFkAyCPyIrzOuo+GMTy+PtEWPORcBjj0AJP6CojVlKqpPc7sVlmHoZXUwsV7qi/vSvf1vqfWFFFFeyfi4UUUUAFFFBoA+T/iXqj6v421Sd2JSOUwxj0VOB/LP410vgn4VT61pSapq96NPsnXegC5cr/eOeAK4zxnayWfizV4JQQ63Uh/AsSP0Ne7+DNXsvGvw9fR451t75bT7LJHnlcLtDgdwcCvKpRjUqS59z9YzbFV8Bl9H6n7sfdTla9lbe39fieZalovw9tHaJPEOpzSLwWihDrn8hn8DWVYajb+FNVi1LwzrRudpw8EsLRGRe4I5BH41meJPC2r+Hbp4dSs5UUHCyquY3HqG6Vh1jKbT+GzPWw2EhWpa1nUhJa35Wn9yPr7QtQ03WdOtvEFukYMkBHmkfMi5yyk+xH6V8xePdefxH4ovb8k+SX2Qg/wxjgf4/jXReGPFMumfDDXtP3kPJKkcHsJAQ+PwU/nXnlbYitzxijyeH8l+o4mvUlrZ8sfTf8AVL5MK9h/Z+8OvNqFxrtwhEMKmGAn+Jz94j6Dj8a4fwF4OvfFuprFCrR2UZBnuCOEHoPUn0r6j0fTbXSNNt7CxjEdvAoVV/qfeqwlFylzvZHPxbnUKFF4Kk7zlv5L/N/kXKKKK9M/LwooooAKKKKAPIvjP4Bn1WT+3NGjMl0qhbiBRzIB0YepHTFeG21xdaddiW3lmtrmM8MhKspr7Prntf8ABuga8zPqWnQvMf8AlqnyP+Y6/jXHWwvO+aDsz7PJeK/qlFYbFx5oLRNbpdrPdHhGnfFjxJbQiK6e1v4xxi5iBJ+pGM1Bf/EOS6BK+HfD8cx/5a/YwzD8zXqcvwZ8OM5KS36Kf4RKDj9KsWPwg8L27hpo7q5x/DJNgf8AjoFZexrvRs9N53kEX7SNJ38lb9Uj58ubvUNavPn8y4mkICxxpxxnAVVGB1PAr0XwT8Ib/UHjufEJaytOCIR/rX+v93+de36PoGlaMm3S7C3tuxMaAMfqeprTrSng0nebuedj+Mas4eywUPZrv1+XRfiU9I0yz0ixjs9Nt0gt4xwiD9T6n3q5RRXalbRHxk5ynJyk7thRRRQSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf//Z"
},
{
"id": "9957817d-4fb7-4dc7-8db1-0b59f4f6d81f",
"name": "BANCO AGRARIO",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbancp-agrario.jpg?alt=media&token=6b81f620-e600-477c-8023-8d34c118d4cc",
"instructions": "Por tu seguridad, tu cuenta del Banco Agrario está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOI2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjJkY2YyZGZkLTZiMWUtNDhlMy1hYWUyLWZjMzM1NWFhMzg1NDwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAxNDwvcmRmOmxpPgogICA8L3JkZjpBbHQ+CiAgPC9kYzp0aXRsZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KICA8cGRmOkF1dGhvcj5NYW51ZWwgSGVycmVyYTwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIChSZW5kZXJlcikgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qaKKKACiiigAooooAKKjSeJ22pKjN6BgTUlJSUtUxtNbhRRRTEFFFFABRRRQAUUUUAGaK80+K9leQXtlq9vLII0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"
},
{
"id": "9957817d-5b12-4f91-954f-49810ee42386",
"name": "PICHINCHA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbanco-pichincha.jpg?alt=media&token=c867f6a0-f04d-42e9-a41e-d590a6420000",
"instructions": "Por tu seguridad, tu cuenta del Banco Pichincha está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOI2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjYwZmJhMGJhLWEwZGMtNGU0MC04MWUyLTkxYThlNTFiYWRkMDwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAxMjwvcmRmOmxpPgogICA8L3JkZjpBbHQ+CiAgPC9kYzp0aXRsZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KICA8cGRmOkF1dGhvcj5NYW51ZWwgSGVycmVyYTwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIChSZW5kZXJlcikgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9lpaaKWvws+oHUUgopAOopKUUCClzSUUhC0tIKKAHUUlLSEFFFFAEFFFFWWLSimilpALS0lLQB4F8T/GniHSfG+o2Wn6nNBax7NkahcDKKT1Hqa5X/hYviv/AKDU/wD3yv8AhVn4xg/8LF1Xj/nn/wCi1ri8H0r9wynLcHPA0ZSpRbcI/ZXZeR8viK1RVZJSe76nV/8ACxfFn/Qan/75X/Cj/hYviz/oNT/98r/hXJniivQ/srA/8+Yf+Ar/ACMvb1f5n959Y/Di/utT8E6VeX8zTXMsbF5G6sdzDt9K6WuQ+Ev/ACTvRf8Ark3/AKG1ddX4ZmcVDG1oxVkpS/Nn01HWnFvsh1FJRXAaEFLSUVoaC0UUUhC0tNpaQET2tvI5eSCJmPUsgJpv2G0/59YP+/Yqxmlq/aSXUTijwL9oOGKHXtLEMaRg2zZCqB/Ea8pr1n9oj/kP6V/17N/6Ea8mr9v4YbeVUW+z/NnzGN/jyPqb4Tf8k70X/rk3/obV14rkPhN/yTvRf+uTf+htXXV+OZr/AL9X/wAcvzZ9DQ/hR9ELRSZorzzUiopBS1ZoFLSUUCFoFFFIQtLTaWgDC8ReEdE8R3EU+sWf2iSJdiHzGXAznsRWT/wq/wAI/wDQK/8AI8n/AMVXaUV20szxtGCp060lFdFJpfmZSoU5O7ir+hV0jTrXSNOgsdPi8q1hBVE3E4Gc9Tz3q5SUtcc5SnJyk7tlpJKyCiiioAgpabS1oai0V5noFve+KbS91i78RX2nzx3MkccMEgWK3VGwAynqccnNWIYbzxR4i12G51u+sItMkWCGG1kEZPy581/XJ/CvXllKhKUZ1EuT4tHpqlZaa6v+tL8ixF0mo77bHouaWvKvDfiDUtQ1bwql1du4Ml5BK6HatyIxhXIHBrX1M3XiDx1eaM+qXenWVlaxzKlrJ5bzs3Vt3oOmKKmTTo1OSpNJJOTerslJx+eq/HUFiVKN4rrb8LnfUV4tq+u69Dpf2Oyv5bq6sNaFrDcBsG5UIWCPjhueDVq18YX+v+MrOe1Nxa6Q1pOiR5K75Vi3MSO+CwAPtXS+G6/I6nMuVJu/orr/AMCW3o77Gf12F7W10/r5HsFFeIeEtU1eK78LXU91rKw31wIp5byYSW8wIOFVeSCccE1pyeJru2+HTb9RaO/vtSltIrmWQ5iXzTls9gqj+VFbhytTqKnGad2lp5uSf3crb6ijjYtXat/S/wAz16iuS+GWtnWvDERmuBcXdo7W00gOd5U8Nn3GDXW14mKw88LWlRnvF2OqE1UipLqLRSUVzlEFFFFWaHN6h4H0DUL6S7uLHMkrbpVSRlSU+rKDg1Lq/g7Q9WuVnu7PEwQRl4pGjLIOinaRkVv0tdizDFJpqrLTRavRGToU9fdWpgaj4O0S/t7KCaz2Q2alYFhkaPYDjP3SPSornwPoVxa20Elq/wDowKxSCZxIASSRvzkjJPBrpRS0o5hiopKNWWm2r67/AJv7wdGm/soxYfC+kQ2ljbQ2axwWUwuIVRiMSD+I88nnvVm60Swury3upYB51ukiRlSVADjDcDjmtGisniq7fM5u+vV9d/v6h7OK0sczpfgTw/pl5Bc2tk3m253ReZM7hD6gE4zVq18J6NbTW0sdoCbdpXiDuWVWkOXOCcZNbtFaTzDFVG3KpJ3835/5v72SqNNbRRQ0/R7HTry8urKAQy3ZVptpIViowDjoOPStGm0tcs6kqj5pu7/yLSS0QuaKKKgZDRRRVlhRRRQAopRRRQIWiiikAUtFFAgoFFFIQtFFFID/2Q=="
},
{
"id": "9957817d-6bf9-48df-a603-38096759b2e2",
"name": "COOPCENTRAL",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbanco-cooperativo-central.jpg?alt=media&token=a6871c15-5079-4b6a-872c-758aacc67386",
"instructions": "Por tu seguridad, tu cuenta del Banco Cooperativo Coopcentral está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOI2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjZjN2QwYTU2LWE3NGMtNDg0Ny04ZTVkLWRhNWNlYjMxMTJkMDwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAxNjwvcmRmOmxpPgogICA8L3JkZjpBbHQ+CiAgPC9kYzp0aXRsZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KICA8cGRmOkF1dGhvcj5NYW51ZWwgSGVycmVyYTwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIChSZW5kZXJlcikgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiuG8W/EHT9KvzpWnzQTamBmZnb91aL3aQjv6KOScDiqNl4vgZFUzTMr/ADKrELPc/wC2/aGP0HXHp319lK17GftY3sj0eiuRtfFVvIAwngYDgvu2QJ7Bj8zn6DH0rZg1eJ0DFvlPPmyjykP0Dc/pUODRSkmatFRQXEc4BiYOPVeR+dS1JQUUUUAFFFFABRRXPeNPGGkeD9NN3rFwFJB8qBOZJT6KP69KcYuTshSkoq8tjcu7mCztpLi7mjhgjUs8kjBVUepJr52+KXxtlvDLpfg13igOUkv8Yd/aMdh79fTFcB8SPiTq/ja5KTMbXS0bMdnG3H1c/wAR/T0rl/D8Yk1WEsARHmTB77RkfrivXw+CVNc9TV9jxsRjnVfs6Wi7na+HtNMMa7x5kxfLFjnzJjyST6KD+f1rsdPswVBP7xGO75v+Wrd3b/Z9B/8AXrP0e14SM8YHlk9xxukP15x9K7TR7FrmVQseSxUBB3P8K/QCs6k7u7OmlBJWQ3T9PknkQgMztwpC5Zv90dhXbaR4TuFZZZZBanr8vzSfn2rotD0eLTIASA9yw+eT+g9BWrXDOq3sdkaaW5RttMSEDdcXcp9Xmb+lXUUIMLnHuc0tFZN3NbBRRRSAKKKKACvm344/DPXTqV14hsrm51e1b5pI3O6W3X0AHVB7dP1r6SorahWlRlzRMK9CNePLI/PmtTw223UGHdonA/LP9K+k/in8G7LxF52peHhHY6scs8XSKc+/91vccevrXzZd2V94c1v7PqdrLbXUD/PFIMHH9QR3r26VeFeL5d+x4VTDzw005bdz2XR1DyOB/EX5+sij+VereALEO7XTj7i5X/ebnP5Yrx3wldJKkZVg24Ag/wDfJ/8AZc/jXvXghAuhow/iOfyUD+leXiHZWPao66m/RRRXEdQUUUUAFFFFABRRRQAUUUUAFcv478D6P4008wapBi4UHybqMASRH2Pcex4rqKKqMnF3i9SZRU1yyV0fK934a1j4easlpqq+dpsj4t71B8jf7J/un2P619C/D+dbjw1A6nI3EVt6hY2uo2ctpfQR3FtKNrxyLkEVmeFtAj8O209naSu9m0nmRLIctGCOVz3HHHet6tf2sddzGlR9k7LY26KKK5joCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//2Q=="
},
{
"id": "9957817d-7b5e-409c-8937-da816b6336f9",
"name": "BANCAMIA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbancamia.jpg?alt=media&token=2142376b-4f33-4377-aac8-3bf522daed45",
"instructions": "Por tu seguridad, tu cuenta de Bancamía está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOI2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjc0ZWZmNWZmLTUzZjUtNDVlZi05Y2JkLTMwNTM2ZDFkMzQ2MDwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAxMzwvcmRmOmxpPgogICA8L3JkZjpBbHQ+CiAgPC9kYzp0aXRsZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KICA8cGRmOkF1dGhvcj5NYW51ZWwgSGVycmVyYTwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIChSZW5kZXJlcikgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A8ooopRXgH68JRSmkoAKKKKACiiigAooooEFFFFABRRRQBLto21Y2e1Gys+YVyvto21Y2fSrtrouo3cXm21hdTR/3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"
},
{
"id": "9957817d-3202-4fe0-a4a9-750c69dc73f1",
"name": "BANCO POPULAR",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbanco-agrario.jpg?alt=media&token=a01688d0-ac41-41f2-8b35-a1af411c1104",
"instructions": "Por tu seguridad, tu cuenta del Banco popular está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOI2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjc5M2MwODRhLTU2YzEtNGNjYS04N2U0LThjMzA0ZjBjZTcxZTwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAxNTwvcmRmOmxpPgogICA8L3JkZjpBbHQ+CiAgPC9kYzp0aXRsZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KICA8cGRmOkF1dGhvcj5NYW51ZWwgSGVycmVyYTwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIChSZW5kZXJlcikgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8Az6KKbXwh+Xi5ozRRQAZozRRQAZozRRQAZozRRQAZpaSgUALRRRQAh6UUppKACtDR9F1LWZWj0uzluWTltg4X6k8Cs+von4TWC2XgmybYBJcbp2OOTk8foBXbgcKsTU5W7JHo5Zglja3JJ2SVzwLV9LvNIvDa6jAYLgKGKEgnB6dDU+iaDqeuGUaVaPceVjftIGM9OpHoa0PiLe/bvGmqyg5VZfKX6KAv9K3PAHjGw8J6HeBoJbnULibIRflUKBxlj7k9M1MKVJ1nCcrRV9SKdCg8S6dSVoK+vXQyP+EA8T/9AmX/AL7T/Gj/AIQDxP8A9AmX/vtP8a09T+KPiG7c/ZZILKPsscYY/m2aj0/4n+JLWQGe4hu0HVJYlGfxXBrXlwV7Xl+Bvy5bzW5p276f8OUP+EA8T/8AQJl/77T/ABo/4QDxP/0CZf8AvtP8a9n8EeNbHxREY0H2e+QZeBjnI9VPcV1dejTyvD1Y80JNr5f5Hr0cjwlaCnTm2n6f5HyfqenXml3TW2oW8lvOOdjjHHqPUVVFewfHvyBBpHyj7QWkwe+3AyPzIrx8V4+LoKhVdNO9j5/H4ZYWvKkndIWiiiuY4wNJSmkoAVEMjqijLMQAPevqi2SPRvD0aNgR2dsAfoi//Wr5y8DWX9oeLtJtyMqZ1dvovzH+VfQvjK1u73wvqVrpy77qaExouQM54PJ9s17uUxcadSokfT5DBwpVayV3svkr/wCR8xXEzXFxLNIcvI5cn3JzWj4d0DUPEN79m0yHew5dzwiD1JrYj+Hfih3VTphUE43GVMD9a918KaDa+HtHhsrVRuABlkxzI/cmuXCZfOtP94mkcOAymrian75OMV5Wv6Hndn8HVMIN5q7CUjkRQ/KPxJ5/SuW8afD3UPDlubuKVbyxU4aRV2sn+8vPHvmvoWob22jvLOe3mUNHKhRge4IxXrVMroShaKs+571bI8LOm4wjZ9HdnyrpV/Ppeo297aOUnhcOp/p9D0r6l0e+j1PS7S9h/wBXcRLIB6ZGcV8/TfDrxMkzqmml1ViAwlTBHr1r27wLYXWl+E9Ps79QlzEhDLkHbySBkexrlymFWnKUJxaX6nFkMK9Gc4VItRavqup5N8b737R4rhtgcrbW6gj/AGmJJ/TbXngre8d3n2/xhq04OV89kX6L8o/lWCK8jFT9pWlLzPAx1X2uInPzYtFFFc5yAaSlNJQB6F8EbL7R4sluWGVtrdiD/tMQB+ma9h8Q+I9L8PJC2q3Pk+cSEAUsTjrwB7iuE+A9ls0rUr0jmWZYgfZRn/2aud+ON75/ie2tQcrb24JHoWJJ/QCvoKNV4TBKot3/AF+R9XhqzwGWqrFat/m/8kek2XxB8N3t3DbQX/72VgiBonUEnoMkV1dfIysVYMpIYHII7GvY/CnxWtfsUcHiCOVLhAF8+Ndyv7kdQfzqsJmiqNxrWXYvL88VVuOJtHs+h6tWdrut6foVmLnVLgQRFtoOCST6ADk1xuqfFfQ7eFjYpc3c2PlXZsX8Sf8ACvIvFXiS/wDEt/8Aab9wFXiKFfuRj29/etsVmdOlH927v8DoxudUaMLUWpS/D5nu+nePfDuo30Npa3xaeZtiKYnXJ9MkVv6rdrY6Zd3b/dgiaQ/gCa8t+EHg145E13U4ipxm1jYc8/xkfy/P0rrvite/YvA+oYOGmCwj/gR5/TNaUa9V4d1aqt1Rth8VXeEliK6Sdm16WPnWR2kkZ3OWYlifc00UUCvlD4MWiiikAGkpT0pKAPo34WWX2HwPpwIw0waY++4kj9MV4n8QL37f4y1aYHKiYxr9F+X+ld74N+JWn2PhmKy1RZUurWLy4yiblkAHy/Q9BzXkcsjTSvJIcu7FmPua9bG16cqFOnTf9WPdzLFUp4WjSpO9t/KytqdtoPw8vdd8MR6pY3EYnd2AgkGAyg4yG9cg1z2o+Gda06Ux3el3akfxLGXU/QjIr1fwj478NaR4a06xku5BLDCA4ELn5jye3qTWv/ws3wx/z+S/9+H/AMK0+qYScI/vEnbXVG39n4CpSi/aqMrK+q3PFdM8J69qUgW10q6wf4pIzGv5tgV6h4L+F0NhKl5rzpczrytuvMan3P8AF/L61tf8LN8Mf8/kv/fh/wDCl/4Wb4Y/5/Jf+/D/AOFbUMNgqT5pTUn6o6MLg8uoS5pVFJ+bVvuO0AAGBwK8r+PN9s07TLEHmWVpSPZRgf8AoVb5+J3hgAn7XKfbyH/wryL4h+J18Ua4LiCNo7WFPLiD/eIzkk/WtcwxdJ0HGEk2+xvm+YUXhpQpzTb7HL0CigV82fGi0UUUgA9KSlpCPSgAooopgFFFFABRRRQAUUUUAFA60UAUgFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP//Z"
},
{
"id": "9957817d-46c2-4781-8d48-ac3a150627e8",
"name": "FALABELLA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbanco-falabella.jpg?alt=media&token=b1a6b20d-f5c5-468b-8c23-41f1da12f2de",
"instructions": "Por tu seguridad, tu cuenta del Banco Falabella está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "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"
},
{
"id": "9957817d-49a5-4eb5-a524-d8565890ca18",
"name": "GNB SUDAMERIS",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbanco-gnb-sudameris.jpg?alt=media&token=4c85a751-58bc-4058-a230-14e668f685b9",
"instructions": "Por tu seguridad, tu cuenta del Banco GNB Sudameris está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOI2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjNiYTI0ZWVhLWNkMGMtNDZlYy04OGI2LTZkYmI4NGJlMDc3NTwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAyMDwvcmRmOmxpPgogICA8L3JkZjpBbHQ+CiAgPC9kYzp0aXRsZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KICA8cGRmOkF1dGhvcj5NYW51ZWwgSGVycmVyYTwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIChSZW5kZXJlcikgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A6Giiivz0yCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK0dL0a/1RJGsLdpRGcNggY4z3+lW4vCutSJuWwkxx1IB5+taxoVZq8Ytr0HYw6KszWNzDNLFJBJvjzuwuQMdTn096imhlhKiaNk3KGXcMZB6Gs3FrdAR0UUUhBRRRQAUUUUAFFFFABUtrF59zFFuCh2Clj0UZ6moq9b8HeH7S10UfaokmmuVDSEjIwcELXXg8JLFT5VshpXNPw9pVpo2nxi1AYyBS8qch/9r6VpRXUTQCZmQI2fmDZXrjrVLSLOO0sNkf2jyBuxFMAcAnkAD9ParQiGPITasS7cKqYxz0r6+kuSCUVZW2NB0qLMAdu+Mj+E9c9cjvVHUdDtNUeBr2LKwcInbr7euOlaJRwV2uScYJI4/Kq1o87XU8bvvhUhkdVxx/dJJOfqKqcYy92avcDyTxdo76ZqU7gILeSQ+UM8kdenasGvafGK2cmjzpfKoYqfLby95B9vQ14u2NxxnGeM18nmWFWHq+69HqQ1YSiiivPJCiiigAooooA6TwTpFnrF88V3KyPGVdUH8Y7jp/WvYCMFFVeB78V4/wCAZvs+urM1zbwRKp3mYgbh6DPevUtLuLIwyNaZEGPN8xs4YeuTX0+TuCpdEy4lmWIzTEl2QJjb8o69yP5VICFDMGLqSc45I9hiuC8TeLI7a/8As6J9qUAEyJLtwCOg2/1rS8H6wuq3o8i9l2xw4e1mRc9eGDD8q64Y6lKr7KO/9f1oO51gmBnaLa4KjO4jA/OmW5RiWgeN0PPyEYx+H41554g8RRabrV0kCSXUwkZZDI5VVBx8qj2x19zWzo3ijSp1MMUrWzyDdh8KQem0E8UoZhSlUcG0mgudYVk83B+aNuuTjbx2rybx/okelahG9nDIttKuSxORvyeM13E3i/Slmni+2x/IDgqrdeOM4we9c94r8W6fd2b2cNuLw5yJX4CnHUcds1zZjUw1ak05q626idjz6iiivlyAooooAKKKKACpkuZ0Qok0ioV2kBjjHpUNFCbWwE0NrcTFRDBLIW6bUJzXoHw00e9s725u7u3eGNo/LXeMEnIPT8K4JL67RAqXU6qBgASEAUv9oXv/AD93H/f1v8a68LWp0KiqNNtDR2vjvwrdy38+pWK+dHJgvGv3gcYyB37Vws1tPASJ4ZIyDg71Iwal/tC9/wCfu4/7+t/jTJby5lQpLczOh6qzkiliatKrNzhFq/zBkFFFFcogooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//Z"
},
{
"id": "9957817d-4cd1-4208-af4f-82f4f6cf53e0",
"name": "SANTANDER NEGOCIOS ",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fsantander.jpg?alt=media&token=f324b72f-5965-41a5-88b0-fe2ef7fc193f",
"instructions": "Por tu seguridad, tu cuenta del Banco Santander está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOI2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPmQyNjYxYmIzLTljYzctNDgwMC05YjA2LTg5MDJhN2RjMjEzYzwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAxODwvcmRmOmxpPgogICA8L3JkZjpBbHQ+CiAgPC9kYzp0aXRsZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KICA8cGRmOkF1dGhvcj5NYW51ZWwgSGVycmVyYTwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIChSZW5kZXJlcikgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKDwKKZOhkhkQHBZSM+lAI434ceOIPF8msRqVWWzumWNB1aH+Bv0Oa7WvjbwXr914H8bpdOGAhlaC7i/vJnDD6jGR7gV9iWdzDeWkNzbSLJBMgkjdejKRkEVx4PEe2i1LdH0fEmTrLq6lS/hzWn6r9fmS0UUV2HzgUUUUAFFFFABRRRQAUUUUAR3My29tLNJ9yNC5+gGa80+CvjtvFcOp2t/J/p8U7zoCesLNkAf7pOPpivRbsRX9nd2qSoxZGifawJXIxz6da+OPD+qX3gbxolyFZbixnaKaI8b1Bwyn6j+hrhxVd0Zwl01ufU5DlVPMsLiKX/AC8XK4/j+ezO/wD2iPB503WE8QWUeLS+bbOAOEm9f+BD9QfWul/Zz8YfarGXw1fSZmtwZbUsfvR5+ZfwPP0PtXpup2mm+OPBzw7hLY6hAGjkHVSeVYe4P8q+TLb+0PBHjiPzQYr3TboBsdGAPP4Mv6Guasvq1dVo/C/6/wCCe3lslneWTy6v/Fp7X302+74X5H2nRUVpcxXduk1vIkkbgEMrAj9Klr1z88aadmFFFFAgooooAKKKKAOc8ceMNM8HaV9s1OQl3yIYE+/K3oPb1Pavmzxl8VvEfiOSSOK5bTrA8CC2YqSP9p+p/Qe1ZvxT1+48Q+NtSnndjDBK1vAmeERSQMfXk/jXJV4GKxk6knGLsj9byDhvD4SjGtXipVGr67LyX+Z7z+zJrcYm1jSJ5P38pW6j3HlsfK34/dqD9o3wf5FzF4msY/3cpEV4FHRuiv8AiOPwHrXj/hzWLnQNcs9UsW2z20gcejDup9iMj8a+xLeTTPHHg5WIEun6jBhh3XPBHswP6it8NbE0HRe62PKzpVMlzSGZQ+Cekv1X3arzR5D+zj4w2tL4YvpODmazLHv1ZP6j8ao/tOaZFBruk6jGoEl1C0cmO5QjB/JsfhXmus2GoeCPGMlvvMd5YTh4pRxuAOVYexGK6j4z+M4PF1zojWmNkFmHlA6LK+Cy/hgCsXWvh5Up7rY9OOWuOcUswwv8Oom5W22/XR+pxug+I9Y0CcTaPqFxasDkhG+U/VTwfxFe9/DT4yQ6zcQ6Z4lSO1vXIWO5TiOQ+hH8JP5fSvm6jpXPQxNSi/denY9fM8kwmZQaqxtLpJbr/P0Z960VwPwQ1+48QeAraS9cyXNq7WruerhQCpPvgj8q76vo6c1UipLqfjGLw0sJXnQnvFtBRRRVnMFFFFAHx/8AFzw1ceG/Gl8skbfZLuRri3kxwysckfUEkf8A664qvtvxZ4Z0zxVpT2GrweZGeUdeHjb+8p7GvnXxl8Gdf0aSSXSE/tWyHIMQxKo907/hmvCxWCnCTlBXR+rZBxPh8RSjQxMuWotNdn8+/l9x5dXtP7OnjD7Dqcnhy+kxb3ZMlsWPCy45X/gQH5j3rxu6tp7SZobqGSGVeCkilWH4Gktp5bW5iuLeRo5omDo6nlWByCK5KNV0ZqSPocywNPMsLKhLrs+z6M9j/adtIo/Emk3SACWa2ZX9wrcf+hGvGK6/4meMH8ZaxaXZQokFrHFt/wBvGXP/AH0T+AFchTxM4zqylHYyyTDVcLgKVGt8SWv3hSqpdgqgsxOAB1Jro/DXgjxD4kkUaXpk7RH/AJbyLsjH/Ajx+Ve/fDX4RWPhmaPUdXdL/VF5QY/dQn1UHqfc/lV0MJUrPRWXcwzTiDCZdF80uaf8q3+fb5m38G/Dk/hnwNa216pS8nY3MyHqhbGFPuABn3zXcUUV9DCChFRXQ/HMViZ4qtOvU3k7hRRRVnOFFFFABRRRQBT1HS7DUo9moWVtdJ6TRB/5iubuvhn4OuSTJoNopP8Azz3J/wCgkV2FFRKnGXxK50UsXXoaUqjj6No4iP4U+C42yNDiP+9LIf8A2atrTfB/h3TGDWOi2ELjowhUt+Z5rdopKlTjtFfcaVMwxVVWqVZNecn/AJgAAMAAD2ooorQ4wooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//Z"
},
{
"id": "9957817d-34e5-4978-83f5-dafa6182afb5",
"name": "ITAU",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fitau.jpg?alt=media&token=86777fde-2b27-4346-a328-6550cacf02e0",
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-37cc-426d-bc58-f2f0ca1b463a",
"name": "ITAU",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fitau.jpg?alt=media&token=86777fde-2b27-4346-a328-6550cacf02e0",
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-5571-4404-96ec-ba46e3958b20",
"name": "FINANDINA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fbanco-finandina.jpg?alt=media&token=bc32d3ad-1b34-4f6c-966f-24678ae6bf53",
"instructions": "Por tu seguridad, tu cuenta del Banco Finandina está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOI2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPmEzZWFmNzI1LTFkOWQtNDI1MC05ZWYyLTZhYjc5NmViMGZhNzwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAxOTwvcmRmOmxpPgogICA8L3JkZjpBbHQ+CiAgPC9kYzp0aXRsZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KICA8cGRmOkF1dGhvcj5NYW51ZWwgSGVycmVyYTwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIChSZW5kZXJlcikgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorw34wfEGWe5n0HRJilvGSl1Oh5kbugP8AdHQ+vTp1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"
},
{
"id": "9957817d-8d27-4d5f-ae7e-e87a51516209",
"name": "IRIS",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Firis.jpg?alt=media&token=0fedfa05-463b-4fb6-9266-598335cdfd8e",
"instructions": "Por tu seguridad, tu cuenta del Banco Iris está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOImh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPmZkY2JhNGVlLTU0MGItNGUzNC1hN2Q1LWM3ZjZiMGMxMTgzYjwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAyPC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8nPgogIDxwZGY6QXV0aG9yPk1hbnVlbCBIZXJyZXJhPC9wZGY6QXV0aG9yPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp4bXA9J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8nPgogIDx4bXA6Q3JlYXRvclRvb2w+Q2FudmEgKFJlbmRlcmVyKSBkb2M9REFHWmZSdFdFOFkgdXNlcj1VQUVUVWNoSVNKUTwveG1wOkNyZWF0b3JUb29sPgogPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiijpQAHgZNQLI043QsBH2bGc/SuT8U+IPMLWdk/7vpJIO/sK661KG2iMeNm0bcemKyU+aTiuhw0MbTxVWdKm7qO7GsZovmJEqjqMYP4VMjB1DKcqRkGlNQ2gxD7bjj6Zq9nY61pKxNRRRVFhRRRQAUUUUAFFFFABXNeMdRkgjS1gYqZBlyOuPSulrl/GVjJJ5d1GCyqNr47e9XTipSszx8+lVhgZujv19OpxbrW5oviSbToRBNH50K/d5wy+1ZDLW54c0A3ri4ulK2wPA/v/AP1qwrUJQleJ8NlM8TKulhX734W8/I6bS7+bVY/MEDQW395j8z/T2961AAq4AwB0FCKqKFQBVAwAO1KehqoxaWruz9MowlCKU3d9WecfDbx/e+LNR8TW11Z28C6VLsjMZYl+XHOf90VxmhfFrx14gjupdD8JWl7DbSGN2jduD1xy3pR8AP8AkP8AxC/6+P8A2aWvMfCI8Y2fhPX9W8J6jLDZ211i6ghUFyNv3xkdAPT610cquzhdafLF3fXbyPf/AAV8Tf8AhJfCOuagbD7JqmkxuZ7Z2JXcFJGD1wdpHtiqvh/4qNcfCy98XatZRxtBK0SwQMcOcgKMnpkmsD4X6Zo9t8H/ABDqGl37317fW0r3ryDDJIEb5CPbJOe+c1kfDqbSYP2e9RbxBZ3V3prXTrKlsuXXJXDDnjBwc0uVGiq1LRu+jZp23xU8cxWNjrl94Tgl0C8cCM2zM0uCeD1P6gZr3CyuFu7OC4jV1SVA4V12sARnBHY18i3VxZeGdCtdY8D+N7zzmkXGky5DpzyGAO04+nNfVnha8udQ8N6ZeX8flXc9tHJKmMbWKgnilNJbF4Wo5NqTv9xqUUUVmdgUEAggjINFFAFM6XYmTf8AZYt3+7VwAAAAAAdhRRTbb3M6dGnTvyRSv2QUUUUjQzNM0HStKlupNN0+3tnujunaJApkPPX16n86XSNB0rRoZodL0+2tIpm3SJEgAc4xk+taVFFxcqXQxtO8L6Hpsd1HYaXaW8d0uydY4wokHoR36mrOm6Jpmmae9jp9hb29k5JaBEAQ565HvWhRTuJRS2Ry9t8P/Cdrfi8g8P6elyDuDiIcH1A6V1FFFDdxqKjsgooopDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//Z"
},
{
"id": "9957817d-65dc-45ad-a492-7ab237d3eec6",
"name": "BANCOOMEVA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-9019-479e-acf8-69cf750238c6",
"name": "J.P. MORGAN",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-8180-48ec-9e8b-da0ff3ddb6cd",
"name": "SERFINANZA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-8a51-48dd-ac28-edbe514fb387",
"name": "COLTEFINANCIERA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-6ed0-4a4e-aacf-1287a54c7955",
"name": "COTRAFA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-26b5-456d-bc49-4a8ba1bc021b",
"name": "DAVIPLATA",
"supported_types": [
"electronic_deposit"
],
"mask": "999 999 9999",
"transaction_avg": 0,
"available": true,
"pse": true,
"connection_type": "OTP",
"logo": "https://firebasestorage.googleapis.com/v0/b/onepayai.appspot.com/o/images%2Fdaviplata.jpg?alt=media&token=cca0c4b4-45c0-43d1-b44b-5d3270c50b89",
"instructions": "Daviplata ha enviado un sms con un código de verificación a tu número de teléfono. Por favor ingrésalo a continuación para conectar tu cuenta.
",
"base64_logo": "iVBORw0KGgoAAAANSUhEUgAAALMAAACzCAYAAADCFC3zAAAACXBIWXMAABOvAAATrwFj5o7DAAAJQklEQVR4nO2dT4xdZRnGnw7TlkKdKRSEmAgmJm5USFiw8A/UBSaQAG5MdGFXoi7oDthQg4SyEXZlocKqLCBx459EE1hQMLJgQQLqQhMTaY0RUOmMBSmFwcU5zz3fPb1z29s559w7T36/zZ25c+93zrnz3Od7v/d7v+/sOLlr/wFJBwSwvTm+rErID835RAC2zNK8TwCgKxAzxICYIQbEDDEgZogBMUMMiBliQMwQA2KGGBAzxICYIQbEDDEgZogBMUMMiBliQMwQA2KGGBAzxICYIQbEDDEgZogBMUMMiBliQMwQA2KGGBAzxICYIQbEDDEgZogBMUMMiBliQMwQA2KGGBAzxICYIQbEDDEgZogBMUMMiBliQMwQA2KGGBAzxICYIQbEDDEgZogBMUMMiBliQMwQA2KGGBAzxICYIQbEDDEgZogBMUMMiBliQMwQw/K8TwC6Yfn66yRJl951hyRp9y1fkiQt7VuVJH34txOj137wu5clSf/71W8kSRun1gY7zz7BmSEGnHkbsvuWL49+XvnhA5KkS67/tCTp/dptTx/96dh7lj9z3ejnXV+tXHv1sSOSGof+75HHJEkfvnFirO32MSdx5qXfS5LWH/nxLJfSKTgzxLDj5K79P5L00LxPBDbHrlg6pXnv6WclSe8ee2bmdh1P7z30/erx3urRTn35wW+PXvvmzQckSWdf++NYGztv/IIk6ZpXjkuS/r77qpnPoyMexpkhBmLmBcSZiSueOiqpiYfX7jssqXHOreIshuNcx9l2asfO0rmObD564+RYW/MEZ4YYEDPEQJixQHiAd9l3viVJOn30Z/XjTwY5fjvsuJA0284bqgGgU3PzBGeGGHDmOeGU1pVPPjF6zgOuf932jbHfF5mdN35RknT29ckDxCHBmSEGnHlgPBHxicP3S2qmkKWLm/hYFPbcWRU4lWnDzdJ5fYEzQww4c894ythFPbvqGPPf3zwoaXj36hpnWj5eqzIh+39+bPQ39zpD9Tg4M8SAM/eA3ViSrn7ul5KkD177gyTp7a/fLWkxpn+7xO7r65SaTM3OGz4vSTpVT8f3Bc4MMeDMHWJH/uQrL4yeGzpunDflGMC9kHunK56sCqfeuedQL8fGmSEGxAwxEGZ0yNJqFWakTIRsFQ9y2+GGV850XZyEM0MMvTqzB0QuE3RRytK+FUnNYKFMU3XxbS3XrknT3bELl9hT71XhwqAzLzZtuaCoi8mRq5+vnK0813muhr5QRqWlR6pzdYkrzgywCb0687V/flXS+CTC+fC32AUra/cfHnt+Em7fMZnd0HifiDIlZEe223l6+WLW160+Xk1Vez3cJN6+7e6Z2+0L91yX3nm7pOba+8bH89R31+DMEEOvzmwndCy5WdxY7pbjeMru4cKcadPATsbbkR0j27HdVukI63XGwe15RfIszuzz9mpqL3Pac9ftm77H5+QV1yWOve3ws2RC/F5/Bhun1iVJ7z19bhvuqXzevg4X2Pvc3GbZnndM8v/U79196+Y7Hrk8dKP+/PvqCXBmiKFXZ7bLeaHmyuHqsf3NLEe1/vns63+SJO2r49GVupjdxSplxsIOYidrT5c6Lt576AfFuf127Bzd3izZjfYOQ3bBac7szE5ZKtmcU3Uu3lloUqzfZlRiWn9O3uHo8rqH826gziRIjYs6L+7rOHXfg5KkfY8/Kkk6WxQN+XPZe+h7kqR/fu6msbYmfW528//cc2/dXr/lrjgzxDDoDOAsWQ0XfduRmxz1eLG71MS9zny0eee7lbNd+5dXR8/ZfdxL2JntUtOyD6M4sX50jzBLWaevw3u4SY1zvf/rqtewe5czim18zJFT1udkV3TPVvaGdm+/tn2t/r3MCi2/9PLYObXz5+5x2AUUoAMQM8SwsIVG7ob92E6hlSGLB0ibdfNOI5WDIA9GPYBxWONB4rSBoEMRH29aGHA+Jg2K2unBSWk84/TaVc//QpL0cR1eXMyeG+3Jpx112YE0PkUvNYNHfz5Oj5b/l6FX0+DMEMPCObO/2f6mmzP1AMQDwtJ5LnRyobw1gtNf3r/irZu/Jqm5wY0HOn6+/Jtd206/lZ2H7KxlO+VkhTR9t6DLDlYpODuyB5Ruo93WNJqCsOrxH9d89pzXtIu42uUH7jml4QeDODPEMKgz+5vvdNHG2vrY81Ljenbo9g6Yfn6zNNw0yhiuPVniuNRpPE+0lOk84zi3C+dxrCs1KTP3Gr72abGnU3A+//ZOopPwdLk/a/8/3q2Pb9wLVq/9ytTr8Lhh7HqOVe0NtWcezgwxDOLMdkE7gSdAJuEpYbuEXdCxn0fPW12OZCfxLcUcc56pj+dJhjIGtEOeb3VxmQFZWl2Z8sqmJ5CazIp7nfY12rnLG1S2sy1e+OB2JxUAud0dq6tj7/Fn4GsvJ0081e322uWudl8XW0nNuKOcGOoTnBli4NZpA9NeFDDHW431jq9xK7d3mwFunQY5LFyeOY1PvflXSU3O1gXqi3APkL5xXt+Zlb63XcCZIQbEDDEQZvRAuaaxPRXtVOMirdbuC4dSZXqzT3BmiAFn7oGNnvaF2G64THSw4w16NIAewZl7oCy4dxGVSz23w40qu8Ils+X0e5/gzBADztwzp5+oJg5WJ6ySTqRcNrXSWvjQ+7EHOQrAAODMPeMp3aFuUjMv2othpaZXojgfYEZw5p5p39fDBesujyyXXm3H4iMvO/MOU+vFtgvtJW99gzNDDIgZYiDMGIhRuFEXGLl79gaOUrODkHcP+ujE5NtKlIVMnpDwFsDlNrTno70drc9x2j4dngTye7y+0+m3eU4K4cwQA2sAFwhPeXsPjPbKaq+ILqeHR7enq1dS2zmnbR/s99v52/vItW9xJzX7c9j57d5D7yc3BdYAQg44M6SAM0MOiBliQMwQA2KGGBAzxICYIQbEDDEgZogBMUMMiBliQMwQA2KGGBAzxICYIQbEDDEgZogBMUMMiBliQMwQA2KGGBAzxICYIQbEDDEgZogBMUMMiBliQMwQA2KGGBAzxICYIQbEDDEgZogBMUMMiBliQMwQA2KGGBAzxICYIQbEDDEgZogBMUMMiBliQMwQA2KGGBAzxICYIQbEDDEgZogBMUMMiBliQMwQA2KGGBAzxICYIYZlScfnfRIAHXD8/+aiPiRrZZJwAAAAAElFTkSuQmCC"
},
{
"id": "9957817d-92f1-4a46-90cf-fe1bb810c487",
"name": "LULO BANK",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-878f-4b86-bd6b-ce7b055deb7f",
"name": "MOVII",
"supported_types": [
"electronic_deposit"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAQAAACWCLlpAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAeGVYSWZNTQAqAAAACAAEARIAAwAAAAEAAQAAARoABQAAAAEAAAA+ARsABQAAAAEAAABGh2kABAAAAAEAAABOAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAlqADAAQAAAABAAAAlgAAAAD41eaXAAAACXBIWXMAAAsTAAALEwEAmpwYAAAClGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj45ODA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjk4MDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgow/z9cAAAP3UlEQVR42u2ce3RU9bXHdxIs18pVeitY7RUhyDMk5AUhk0lIJi9CgiW0EVSuCxOJVJSipe2tVAVtaxW8Vm+9io9rRVAsFt+t3rpQqVbkehUBeVYBSQIkhGTmzPucM5/7xxwmk2QSBtLVnsTz/a6sWfObc85a55u992//9m+fI2LBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggWzIrEmSRIsGU6PhIhMiZYYp5NKRCalTcyXoSKSZAnSi1QrEkVS6/N8eaHU7ZIuUjjIEqUHqWqSRMbXF5CHXSti0iGZbMnVi1Wl1BeSRpFmIzvosOTqTarx9UVkMknfz0cIeaol12mkytB3oxJkK4nYLbl6kqqQLDL03Wg4caGy1bCuNEuunqxKw4UbNy40PkSwW3L1LJUTt0EXGltJsJyxqwOeilXtKBGxFNqjnPGrLpeRVxUZsSqIGw0vLhQUXHjQ8ESH+sNfXbkiDphFur6bID6O8g4taHjwoNLOFg7jJ8hWEk5ZV9pXUa4usSqIjwb+DeFGPqWNNvZwG0Ip+wgQ+Eo7YxepAvhoYC6jmUkaI7iOhYzhUoqYhD1KLrvqIPUr5ozdrMpPA3OZyBTyuQhBEAYzhWsoINWQK8iHDIrtjAO4+tXNqsJSpTOSxTTwIatZxkpWsY7N1DOVzIhcp6wr7IxZ50hSTVLn4s6ADesdsWou6SRzA80ECRDCyZ/5BZUI5VQzPSJX2BmnqoWkHZL0U5ccnpY8R/554MkVqSx0zICNXMlkLucGjhPAicJBHjdcMRGhkNlkMzVKrgzy1Omkfz6iamRO6mLbG3kn80h5TKJrrAPLATONsN7IXDK4nEU0E6CdAJ8ZQgkXGp/f42aEbOzsRUPjVc6hWJ9OIcVqMRNJo5Bs79czZQBVVrvlVX4auDLigAFcKEZc2sTrTOB8MpmDcDWtPMx4UqhmA7cxl1IcZOgJIWGIfqNWF0pX8xn1I5GapAElVWGXsB52wLBUbhQ8OHmZ/cB7CMJy1vEJh9hICuUUIZxn2Fs194X+GNqNj/cQrZxxLwyUqGVI5egS1ifz7Sip3CjGUseDipeXuYlVrGUJFzOMQkYhfI1ybmcjn9KMDxU/AQ6To9vJapJLZQDsCEXFqvRICjqPCVzMTRzHj8uQyUsQFS9NbGMdK5iLDUFIQEjlZp7iA46gECSIFwWXIfKy0IhQPhdd0f+jVsxsfR7jyeGHHEFDwUMAlQAt7GATd1DBkEiYH8t1/IbNfE47AVQ0NHy4ItUJF0HWI1oJ/9rvo1bEAcMzYNCQahTTKGcFtayhHSf7eIPVzOVShCFcgDCcOfySV/mME/jQ0NAI0M7nbGY/3iixVD5CtDImvda/k9OYM+A8RmKnlkrDdu7iJiYgJPINBKGIf+d5PuYoHsOSgigc4QOe4mZyEfI4HpFLwcdRZui5ZB2TEf03akWF9VR9F358NHAVo8jjWp7HRg4VzGIMQzgXIYvFPMH7fIlCEA0NFQ/H+ISN3E4ZgxG+wQV8B+EliEwHCl7u4vxQAcPn9NeoFcnWkxmr7wE0GpjHtykll5lMx0EOgxEuYz4P8CcOcBK/IZKfVvbyB+6jhm8hnMcQhGFcyc+xk89k3sZNAC9+3Ki8jKjljHlQZEViP5UqtT6fKczVP8fPXt5iPqOpwkEewxCEGdzNy+yiBZ/hcAGcfME7/Bd1pCAMYihCIiUsZyOfcAyVFxDKuJBbWcPd/JpmNHZxrlZM+l/knP4VtRIksSapJkkktd5GASn6YzzPdaQiTCYFQZjMraxjG024DYcL4qaRbTzDLWRHZkIhncU8yV84gpsgATwoeFiL8E0EYQzCn9A5zlV6BjlNMrK/OGJCTVJHZSm13oadXH064xAmkM5ECljCU3xAAz5C6GioeDnODl7kTkoRhGQymEg+3+dRtnAYDzohgvjw4MWHDz8aO1jFfKqo4AIeREXl4ZDoDoZfI0ICCTVJpg70UbHiwtG2jEdzdTs2PQ8bBZSSz42s40MOc4JWmmmigUb28yb3cyWCcD5TKaGUfGp5gvc5SAsnaeEoDTTQSFOEjTTSynEO8BHzuZT5fE4bLyJ6Kdl/vihV/ili4yZ1yEQRGZRZXrSy6HdFfy1SSynGESrGQTEOHDi4mkUsoJoySiinkllcQRbCMGzMoJIKSnDgoIgruYFavks5JZQxk1nMoqoLS5nJXK5lBkUUMYNZzMKBI1RCoVL4kX1t1u1D082adSWKTMzJe7uIcaeijSYh4XRM5DIuJhH521EXhPGUkOud+J8yyHxyJYqMnWxvtiOhJer92mp9dWg13Xl/N65mFaviOrIndpyxmlXhv9D92mJN1DwKSHnAbGIliIhM21RAeuDdkIIPfx/oM0J436iwmVQtn2n+C7JNNTvWJImMLywOCq+FMDLqs6MLFx58eFFw9ulKbuBFRC1j/A9NtbguHCRiq7dj1xrxGSWTs6ELLyptNBhrQiWq6+HMr+XjCFPUAjLXmSqnLxwkUlCbzRz9eFQt4Mxvz08z66mjkmpu4wP8uM/6ago+jjFLzSH7OfOJVTeF2XGLFcsB/TRwDcIIBGEkwlp8Z21Z4UrETHUaWc/2Y7HC9dDO9ODFzTKEqVzNY/yKDIoR3iJ4lm4dFquyP4ul4CKAn1ZOduIJ3LyHkMFyWggSYBs2UrmONjxn5Yr9XKywUEEO8Gvmcz21EdZRy0KqKOAS9qHjxIXOkwjp7CcwcMXyxby1cEwKcpBHSGF4VH29g5OwUcYxPCi0E+RNhDHsOEtH7AdiHcWDE1c3+lE5zBNkMpQJCEv4JXdxd4R3cQ912BA+AhS8aKzmfKbwBf6BaFnZVOtt6AQIdqFKA2vJZQhpCN9nC058XQK8xi4EO1exG4WTbGIiY1jWx9nQpGLl1eVQqW9jNzvZFeFOdvIZv6OAc5iMUMtmnKhdgnY4efDzEMJ0JvMD5nMZdoTtA3M2zK7Lx6aPYRTJJJNsfI4imRGczySEa3iTNlQ8MW9fwUsb9yEMNmLYOLYQ7GNSalqxCsjVeyqb1PA6J9HwRG2NxpLLy1Ye4MfczjoO9SiVK65Vppcms4qVW5tLmf4Cf+BVXuvEV/gfmiMN271bgxvVSBVU/D04oIdgXLULlRYq1RyyzSeWvX4K1Vo7IYKo3RhbKCXGUvnUcb1Z4Evcw3+cts71APdQqOaTbi6xapJECkuytNkcC8VOHZQeFj2+Xh0zlgMG2BsV105Hm1pAqrnEWpEoUjUms72aZt0X1627CBCglaO0EezR4WKdF2Qnl1JBKVVUMpOZVDITB8WU4KDCGAuPV2BXC0gzl1iSKFIxOrO5mmY9nqqDQpC93M+1VHM9T9IYd4LgIsguRiI8zQmO0EgjDTRwghOcoNXYMQqPHmM/FWqu2QK8JIisOSf9vTk0a9445qkA7yAMJQFhOEIheyLNbPGINRphE+AxCtABtvMc69iKl6Cxs+glaAR4E4pFwuQt3+WE5sfTK92o7EHIZzTLjC368VxBc1yVsLBYyQgbCeJEwY2LByMx6qe0GJOJC685k9LwVmba+jk0aS5O0tYLT6JwL8MZw0t4CdDOQ0xCeBE1DtvqsKwXUHHhQuUVhFLGMJYShDVG6mHaDD4slm1dIbVaPQup75ELqacOByP4MT68OAlwnNkIK/CekRuGxfLg5EbGUcL7bGcuGczgKD4UU4slIva37YgWz4RejPA4AZxGCvEjhFtxxVHm6yyWEy/NzEX4CSHgNwh2o07RIVb2BtPNhvnDcvc7+Jl+FytY2SNXsJI7qWAsN6Lgx4VGAyWcyy/OIGZ1WJYbhaWMw85rvEMlWXzHiH6GWFoO2Y+YLiktsWep1bSE/Hi6Vdij6UblYYTxPE4rHpq4kyyENyKPkZ9pzNqM4OAivkYxwnNGGtIhlr3eVI/b1SSJ5M/PZrZ+POSNuYjpWPu58HOINDIYzzyWU04Wg1gYZ62962wY3pR9NuLgD9FubNW68NBEpZ6DvdZUYhUOErHXTmG2Ft/uTpDtFBi3NwRhIV/GWQ8Ni3U5wouAjwABAoQ4zGbeYj8aqjHmR+MEVdpU8q43nVgFdfGKFb7lJjbwU25mJa/TFveCJyzWZfwLazjIHvaxj73s5SBfcpiD7GUv+4zRA3zMDH0atgWmFSvetaEPFTdOvD2WA3teGw6nijwmkWYwlWQu4RJGRY2lkUo6eVo+GT8xXa9D7xsWSsz9HjeemMUYpZfyTIADZ9CrZVMLSF1v4g2LYIwNC3+chZiwhF7jqRx3D8W/LTzJM6ztlU/zDI/hUO2km68xZGqdjRJ9DU/zFL/txP9mPV/EJZhi9M4004q/l/p7EDXGv6QzA+i0UmXOSmnvNfgpPMlh1E6PJ8XqomnjFZZxNQu4l+0EejwyHnpoMmtjSHZdPnl6EQ6Ko+igmEIuZCJfJ49naIgI1r1w4+M4SxAuQYwe901nucHaD/YNpzJL38MRDnG4E4+wmQUI6QjFbOAoqtHR3rmLxssdCLnMZDXLGUcxwnsDt4umWm8lGKMfVOUkb3IVwmSECjZxjPZOpZxWPHyIMIUf0IgfH++SQQqLcA7YLhrtmLEB0dXFPGi08hrfQ0hDqGYR17MwwutZxBUUMJTPCOFEQedRhEwO9L2LZr0J3bC3DF4x+kVb2ERVD5NAKjbKOY4HBafRRXM5n/a5i8ZkbZIdC+nmUO/9WV5UjrGB5axkRRTv5OcsIJch7CBkWOJDDCKLv/bNsrQcsteYzrLyF/TWnxUtmI9gJKR7Ii2SGtsRclnIF3hReJM0JrDEKBH3RazcxeZc7sS1kI6Vm4efRf0Vgp187uAmRlKIsK2vs6GWg/06c5Zo+tDareDjBD+LeqWK8MezdMHOYpmwRJO/MJs5Wl/64BV8KLzFShZxM4+wtw8NR+GenKNU6VOxX2u6SmnOPDvZ+pFQX56wCHfPeGnDScB4M83ZXsuJn0NM0grJvtNc73pIFBkzodglbNBDkS0tD+5Om6ueGN+6HhEWzIvHKNOEx7tfx91l3N3pGh7ceAmxFtHKSLnXXGIliEjC1FeL+Fbw95yIc6Ebm0qfzu5gCxsZFpquTSO50mRvEalJEhlbksd0RJ2t3aovPUVtqXaLulRbqi/VlupLo8cjv0d912Ic0Z3R52rdxvSl+lL9Fu0KXbSC4HSmvCuDxYRPsyakrZpGGVNJ5vJ/MEeTQxl5pH/8zfFiwjeIJIiIjHakPjTtY9su207bTttO2w7b/01/tujB/NfzPjNG+sIdZ3J0zq7U/51wiwwVk75s5dST7ufKEDnP4LnGbx0jfy8OkcGnJh+Toiap6yqMhH9ccDX5mx0iFtbBWGN/L1qwYMGCBQsWLFiwYMGCBQsWLFiwYMGCBQsWLFiwYMGCBQsWLFiwYOFvjP8H+sK1lXcexQ8AAAAASUVORK5CYII="
},
{
"id": "9957817d-ab2d-4356-bb96-c41dcf7c3188",
"name": "RAPPIPAY",
"supported_types": [
"savings",
"electronic_deposit"
],
"mask": "999 999 9999",
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAQAAACWCLlpAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAeGVYSWZNTQAqAAAACAAEARIAAwAAAAEAAQAAARoABQAAAAEAAAA+ARsABQAAAAEAAABGh2kABAAAAAEAAABOAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAlqADAAQAAAABAAAAlgAAAAD41eaXAAAACXBIWXMAAAsTAAALEwEAmpwYAAAClGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj45ODA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjk4MDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgow/z9cAAAP3UlEQVR42u2ce3RU9bXHdxIs18pVeitY7RUhyDMk5AUhk0lIJi9CgiW0EVSuCxOJVJSipe2tVAVtaxW8Vm+9io9rRVAsFt+t3rpQqVbkehUBeVYBSQIkhGTmzPucM5/7xxwmk2QSBtLVnsTz/a6sWfObc85a55u992//9m+fI2LBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggWzIrEmSRIsGU6PhIhMiZYYp5NKRCalTcyXoSKSZAnSi1QrEkVS6/N8eaHU7ZIuUjjIEqUHqWqSRMbXF5CHXSti0iGZbMnVi1Wl1BeSRpFmIzvosOTqTarx9UVkMknfz0cIeaol12mkytB3oxJkK4nYLbl6kqqQLDL03Wg4caGy1bCuNEuunqxKw4UbNy40PkSwW3L1LJUTt0EXGltJsJyxqwOeilXtKBGxFNqjnPGrLpeRVxUZsSqIGw0vLhQUXHjQ8ESH+sNfXbkiDphFur6bID6O8g4taHjwoNLOFg7jJ8hWEk5ZV9pXUa4usSqIjwb+DeFGPqWNNvZwG0Ip+wgQ+Eo7YxepAvhoYC6jmUkaI7iOhYzhUoqYhD1KLrvqIPUr5ozdrMpPA3OZyBTyuQhBEAYzhWsoINWQK8iHDIrtjAO4+tXNqsJSpTOSxTTwIatZxkpWsY7N1DOVzIhcp6wr7IxZ50hSTVLn4s6ADesdsWou6SRzA80ECRDCyZ/5BZUI5VQzPSJX2BmnqoWkHZL0U5ccnpY8R/554MkVqSx0zICNXMlkLucGjhPAicJBHjdcMRGhkNlkMzVKrgzy1Omkfz6iamRO6mLbG3kn80h5TKJrrAPLATONsN7IXDK4nEU0E6CdAJ8ZQgkXGp/f42aEbOzsRUPjVc6hWJ9OIcVqMRNJo5Bs79czZQBVVrvlVX4auDLigAFcKEZc2sTrTOB8MpmDcDWtPMx4UqhmA7cxl1IcZOgJIWGIfqNWF0pX8xn1I5GapAElVWGXsB52wLBUbhQ8OHmZ/cB7CMJy1vEJh9hICuUUIZxn2Fs194X+GNqNj/cQrZxxLwyUqGVI5egS1ifz7Sip3CjGUseDipeXuYlVrGUJFzOMQkYhfI1ybmcjn9KMDxU/AQ6To9vJapJLZQDsCEXFqvRICjqPCVzMTRzHj8uQyUsQFS9NbGMdK5iLDUFIQEjlZp7iA46gECSIFwWXIfKy0IhQPhdd0f+jVsxsfR7jyeGHHEFDwUMAlQAt7GATd1DBkEiYH8t1/IbNfE47AVQ0NHy4ItUJF0HWI1oJ/9rvo1bEAcMzYNCQahTTKGcFtayhHSf7eIPVzOVShCFcgDCcOfySV/mME/jQ0NAI0M7nbGY/3iixVD5CtDImvda/k9OYM+A8RmKnlkrDdu7iJiYgJPINBKGIf+d5PuYoHsOSgigc4QOe4mZyEfI4HpFLwcdRZui5ZB2TEf03akWF9VR9F358NHAVo8jjWp7HRg4VzGIMQzgXIYvFPMH7fIlCEA0NFQ/H+ISN3E4ZgxG+wQV8B+EliEwHCl7u4vxQAcPn9NeoFcnWkxmr7wE0GpjHtykll5lMx0EOgxEuYz4P8CcOcBK/IZKfVvbyB+6jhm8hnMcQhGFcyc+xk89k3sZNAC9+3Ki8jKjljHlQZEViP5UqtT6fKczVP8fPXt5iPqOpwkEewxCEGdzNy+yiBZ/hcAGcfME7/Bd1pCAMYihCIiUsZyOfcAyVFxDKuJBbWcPd/JpmNHZxrlZM+l/knP4VtRIksSapJkkktd5GASn6YzzPdaQiTCYFQZjMraxjG024DYcL4qaRbTzDLWRHZkIhncU8yV84gpsgATwoeFiL8E0EYQzCn9A5zlV6BjlNMrK/OGJCTVJHZSm13oadXH064xAmkM5ECljCU3xAAz5C6GioeDnODl7kTkoRhGQymEg+3+dRtnAYDzohgvjw4MWHDz8aO1jFfKqo4AIeREXl4ZDoDoZfI0ICCTVJpg70UbHiwtG2jEdzdTs2PQ8bBZSSz42s40MOc4JWmmmigUb28yb3cyWCcD5TKaGUfGp5gvc5SAsnaeEoDTTQSFOEjTTSynEO8BHzuZT5fE4bLyJ6Kdl/vihV/ili4yZ1yEQRGZRZXrSy6HdFfy1SSynGESrGQTEOHDi4mkUsoJoySiinkllcQRbCMGzMoJIKSnDgoIgruYFavks5JZQxk1nMoqoLS5nJXK5lBkUUMYNZzMKBI1RCoVL4kX1t1u1D082adSWKTMzJe7uIcaeijSYh4XRM5DIuJhH521EXhPGUkOud+J8yyHxyJYqMnWxvtiOhJer92mp9dWg13Xl/N65mFaviOrIndpyxmlXhv9D92mJN1DwKSHnAbGIliIhM21RAeuDdkIIPfx/oM0J436iwmVQtn2n+C7JNNTvWJImMLywOCq+FMDLqs6MLFx58eFFw9ulKbuBFRC1j/A9NtbguHCRiq7dj1xrxGSWTs6ELLyptNBhrQiWq6+HMr+XjCFPUAjLXmSqnLxwkUlCbzRz9eFQt4Mxvz08z66mjkmpu4wP8uM/6ago+jjFLzSH7OfOJVTeF2XGLFcsB/TRwDcIIBGEkwlp8Z21Z4UrETHUaWc/2Y7HC9dDO9ODFzTKEqVzNY/yKDIoR3iJ4lm4dFquyP4ul4CKAn1ZOduIJ3LyHkMFyWggSYBs2UrmONjxn5Yr9XKywUEEO8Gvmcz21EdZRy0KqKOAS9qHjxIXOkwjp7CcwcMXyxby1cEwKcpBHSGF4VH29g5OwUcYxPCi0E+RNhDHsOEtH7AdiHcWDE1c3+lE5zBNkMpQJCEv4JXdxd4R3cQ912BA+AhS8aKzmfKbwBf6BaFnZVOtt6AQIdqFKA2vJZQhpCN9nC058XQK8xi4EO1exG4WTbGIiY1jWx9nQpGLl1eVQqW9jNzvZFeFOdvIZv6OAc5iMUMtmnKhdgnY4efDzEMJ0JvMD5nMZdoTtA3M2zK7Lx6aPYRTJJJNsfI4imRGczySEa3iTNlQ8MW9fwUsb9yEMNmLYOLYQ7GNSalqxCsjVeyqb1PA6J9HwRG2NxpLLy1Ye4MfczjoO9SiVK65Vppcms4qVW5tLmf4Cf+BVXuvEV/gfmiMN271bgxvVSBVU/D04oIdgXLULlRYq1RyyzSeWvX4K1Vo7IYKo3RhbKCXGUvnUcb1Z4Evcw3+cts71APdQqOaTbi6xapJECkuytNkcC8VOHZQeFj2+Xh0zlgMG2BsV105Hm1pAqrnEWpEoUjUms72aZt0X1627CBCglaO0EezR4WKdF2Qnl1JBKVVUMpOZVDITB8WU4KDCGAuPV2BXC0gzl1iSKFIxOrO5mmY9nqqDQpC93M+1VHM9T9IYd4LgIsguRiI8zQmO0EgjDTRwghOcoNXYMQqPHmM/FWqu2QK8JIisOSf9vTk0a9445qkA7yAMJQFhOEIheyLNbPGINRphE+AxCtABtvMc69iKl6Cxs+glaAR4E4pFwuQt3+WE5sfTK92o7EHIZzTLjC368VxBc1yVsLBYyQgbCeJEwY2LByMx6qe0GJOJC685k9LwVmba+jk0aS5O0tYLT6JwL8MZw0t4CdDOQ0xCeBE1DtvqsKwXUHHhQuUVhFLGMJYShDVG6mHaDD4slm1dIbVaPQup75ELqacOByP4MT68OAlwnNkIK/CekRuGxfLg5EbGUcL7bGcuGczgKD4UU4slIva37YgWz4RejPA4AZxGCvEjhFtxxVHm6yyWEy/NzEX4CSHgNwh2o07RIVb2BtPNhvnDcvc7+Jl+FytY2SNXsJI7qWAsN6Lgx4VGAyWcyy/OIGZ1WJYbhaWMw85rvEMlWXzHiH6GWFoO2Y+YLiktsWep1bSE/Hi6Vdij6UblYYTxPE4rHpq4kyyENyKPkZ9pzNqM4OAivkYxwnNGGtIhlr3eVI/b1SSJ5M/PZrZ+POSNuYjpWPu58HOINDIYzzyWU04Wg1gYZ62962wY3pR9NuLgD9FubNW68NBEpZ6DvdZUYhUOErHXTmG2Ft/uTpDtFBi3NwRhIV/GWQ8Ni3U5wouAjwABAoQ4zGbeYj8aqjHmR+MEVdpU8q43nVgFdfGKFb7lJjbwU25mJa/TFveCJyzWZfwLazjIHvaxj73s5SBfcpiD7GUv+4zRA3zMDH0atgWmFSvetaEPFTdOvD2WA3teGw6nijwmkWYwlWQu4RJGRY2lkUo6eVo+GT8xXa9D7xsWSsz9HjeemMUYpZfyTIADZ9CrZVMLSF1v4g2LYIwNC3+chZiwhF7jqRx3D8W/LTzJM6ztlU/zDI/hUO2km68xZGqdjRJ9DU/zFL/txP9mPV/EJZhi9M4004q/l/p7EDXGv6QzA+i0UmXOSmnvNfgpPMlh1E6PJ8XqomnjFZZxNQu4l+0EejwyHnpoMmtjSHZdPnl6EQ6Ko+igmEIuZCJfJ49naIgI1r1w4+M4SxAuQYwe901nucHaD/YNpzJL38MRDnG4E4+wmQUI6QjFbOAoqtHR3rmLxssdCLnMZDXLGUcxwnsDt4umWm8lGKMfVOUkb3IVwmSECjZxjPZOpZxWPHyIMIUf0IgfH++SQQqLcA7YLhrtmLEB0dXFPGi08hrfQ0hDqGYR17MwwutZxBUUMJTPCOFEQedRhEwO9L2LZr0J3bC3DF4x+kVb2ERVD5NAKjbKOY4HBafRRXM5n/a5i8ZkbZIdC+nmUO/9WV5UjrGB5axkRRTv5OcsIJch7CBkWOJDDCKLv/bNsrQcsteYzrLyF/TWnxUtmI9gJKR7Ii2SGtsRclnIF3hReJM0JrDEKBH3RazcxeZc7sS1kI6Vm4efRf0Vgp187uAmRlKIsK2vs6GWg/06c5Zo+tDareDjBD+LeqWK8MezdMHOYpmwRJO/MJs5Wl/64BV8KLzFShZxM4+wtw8NR+GenKNU6VOxX2u6SmnOPDvZ+pFQX56wCHfPeGnDScB4M83ZXsuJn0NM0grJvtNc73pIFBkzodglbNBDkS0tD+5Om6ueGN+6HhEWzIvHKNOEx7tfx91l3N3pGh7ceAmxFtHKSLnXXGIliEjC1FeL+Fbw95yIc6Ebm0qfzu5gCxsZFpquTSO50mRvEalJEhlbksd0RJ2t3aovPUVtqXaLulRbqi/VlupLo8cjv0d912Ic0Z3R52rdxvSl+lL9Fu0KXbSC4HSmvCuDxYRPsyakrZpGGVNJ5vJ/MEeTQxl5pH/8zfFiwjeIJIiIjHakPjTtY9su207bTttO2w7b/01/tujB/NfzPjNG+sIdZ3J0zq7U/51wiwwVk75s5dST7ufKEDnP4LnGbx0jfy8OkcGnJh+Toiap6yqMhH9ccDX5mx0iFtbBWGN/L1qwYMGCBQsWLFiwYMGCBQsWLFiwYMGCBQsWLFiwYMGCBQsWLFiwYOFvjP8H+sK1lXcexQ8AAAAASUVORK5CYII="
},
{
"id": "9957817d-9d96-46f0-b43a-a5e443d1f383",
"name": "RAPPIPAY DAVIPLATA",
"supported_types": [
"electronic_deposit"
],
"mask": "999 999 9999",
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAQAAACWCLlpAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAeGVYSWZNTQAqAAAACAAEARIAAwAAAAEAAQAAARoABQAAAAEAAAA+ARsABQAAAAEAAABGh2kABAAAAAEAAABOAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAlqADAAQAAAABAAAAlgAAAAD41eaXAAAACXBIWXMAAAsTAAALEwEAmpwYAAAClGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj45ODA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjk4MDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgow/z9cAAAP3UlEQVR42u2ce3RU9bXHdxIs18pVeitY7RUhyDMk5AUhk0lIJi9CgiW0EVSuCxOJVJSipe2tVAVtaxW8Vm+9io9rRVAsFt+t3rpQqVbkehUBeVYBSQIkhGTmzPucM5/7xxwmk2QSBtLVnsTz/a6sWfObc85a55u992//9m+fI2LBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggWzIrEmSRIsGU6PhIhMiZYYp5NKRCalTcyXoSKSZAnSi1QrEkVS6/N8eaHU7ZIuUjjIEqUHqWqSRMbXF5CHXSti0iGZbMnVi1Wl1BeSRpFmIzvosOTqTarx9UVkMknfz0cIeaol12mkytB3oxJkK4nYLbl6kqqQLDL03Wg4caGy1bCuNEuunqxKw4UbNy40PkSwW3L1LJUTt0EXGltJsJyxqwOeilXtKBGxFNqjnPGrLpeRVxUZsSqIGw0vLhQUXHjQ8ESH+sNfXbkiDphFur6bID6O8g4taHjwoNLOFg7jJ8hWEk5ZV9pXUa4usSqIjwb+DeFGPqWNNvZwG0Ip+wgQ+Eo7YxepAvhoYC6jmUkaI7iOhYzhUoqYhD1KLrvqIPUr5ozdrMpPA3OZyBTyuQhBEAYzhWsoINWQK8iHDIrtjAO4+tXNqsJSpTOSxTTwIatZxkpWsY7N1DOVzIhcp6wr7IxZ50hSTVLn4s6ADesdsWou6SRzA80ECRDCyZ/5BZUI5VQzPSJX2BmnqoWkHZL0U5ccnpY8R/554MkVqSx0zICNXMlkLucGjhPAicJBHjdcMRGhkNlkMzVKrgzy1Omkfz6iamRO6mLbG3kn80h5TKJrrAPLATONsN7IXDK4nEU0E6CdAJ8ZQgkXGp/f42aEbOzsRUPjVc6hWJ9OIcVqMRNJo5Bs79czZQBVVrvlVX4auDLigAFcKEZc2sTrTOB8MpmDcDWtPMx4UqhmA7cxl1IcZOgJIWGIfqNWF0pX8xn1I5GapAElVWGXsB52wLBUbhQ8OHmZ/cB7CMJy1vEJh9hICuUUIZxn2Fs194X+GNqNj/cQrZxxLwyUqGVI5egS1ifz7Sip3CjGUseDipeXuYlVrGUJFzOMQkYhfI1ybmcjn9KMDxU/AQ6To9vJapJLZQDsCEXFqvRICjqPCVzMTRzHj8uQyUsQFS9NbGMdK5iLDUFIQEjlZp7iA46gECSIFwWXIfKy0IhQPhdd0f+jVsxsfR7jyeGHHEFDwUMAlQAt7GATd1DBkEiYH8t1/IbNfE47AVQ0NHy4ItUJF0HWI1oJ/9rvo1bEAcMzYNCQahTTKGcFtayhHSf7eIPVzOVShCFcgDCcOfySV/mME/jQ0NAI0M7nbGY/3iixVD5CtDImvda/k9OYM+A8RmKnlkrDdu7iJiYgJPINBKGIf+d5PuYoHsOSgigc4QOe4mZyEfI4HpFLwcdRZui5ZB2TEf03akWF9VR9F358NHAVo8jjWp7HRg4VzGIMQzgXIYvFPMH7fIlCEA0NFQ/H+ISN3E4ZgxG+wQV8B+EliEwHCl7u4vxQAcPn9NeoFcnWkxmr7wE0GpjHtykll5lMx0EOgxEuYz4P8CcOcBK/IZKfVvbyB+6jhm8hnMcQhGFcyc+xk89k3sZNAC9+3Ki8jKjljHlQZEViP5UqtT6fKczVP8fPXt5iPqOpwkEewxCEGdzNy+yiBZ/hcAGcfME7/Bd1pCAMYihCIiUsZyOfcAyVFxDKuJBbWcPd/JpmNHZxrlZM+l/knP4VtRIksSapJkkktd5GASn6YzzPdaQiTCYFQZjMraxjG024DYcL4qaRbTzDLWRHZkIhncU8yV84gpsgATwoeFiL8E0EYQzCn9A5zlV6BjlNMrK/OGJCTVJHZSm13oadXH064xAmkM5ECljCU3xAAz5C6GioeDnODl7kTkoRhGQymEg+3+dRtnAYDzohgvjw4MWHDz8aO1jFfKqo4AIeREXl4ZDoDoZfI0ICCTVJpg70UbHiwtG2jEdzdTs2PQ8bBZSSz42s40MOc4JWmmmigUb28yb3cyWCcD5TKaGUfGp5gvc5SAsnaeEoDTTQSFOEjTTSynEO8BHzuZT5fE4bLyJ6Kdl/vihV/ili4yZ1yEQRGZRZXrSy6HdFfy1SSynGESrGQTEOHDi4mkUsoJoySiinkllcQRbCMGzMoJIKSnDgoIgruYFavks5JZQxk1nMoqoLS5nJXK5lBkUUMYNZzMKBI1RCoVL4kX1t1u1D082adSWKTMzJe7uIcaeijSYh4XRM5DIuJhH521EXhPGUkOud+J8yyHxyJYqMnWxvtiOhJer92mp9dWg13Xl/N65mFaviOrIndpyxmlXhv9D92mJN1DwKSHnAbGIliIhM21RAeuDdkIIPfx/oM0J436iwmVQtn2n+C7JNNTvWJImMLywOCq+FMDLqs6MLFx58eFFw9ulKbuBFRC1j/A9NtbguHCRiq7dj1xrxGSWTs6ELLyptNBhrQiWq6+HMr+XjCFPUAjLXmSqnLxwkUlCbzRz9eFQt4Mxvz08z66mjkmpu4wP8uM/6ago+jjFLzSH7OfOJVTeF2XGLFcsB/TRwDcIIBGEkwlp8Z21Z4UrETHUaWc/2Y7HC9dDO9ODFzTKEqVzNY/yKDIoR3iJ4lm4dFquyP4ul4CKAn1ZOduIJ3LyHkMFyWggSYBs2UrmONjxn5Yr9XKywUEEO8Gvmcz21EdZRy0KqKOAS9qHjxIXOkwjp7CcwcMXyxby1cEwKcpBHSGF4VH29g5OwUcYxPCi0E+RNhDHsOEtH7AdiHcWDE1c3+lE5zBNkMpQJCEv4JXdxd4R3cQ912BA+AhS8aKzmfKbwBf6BaFnZVOtt6AQIdqFKA2vJZQhpCN9nC058XQK8xi4EO1exG4WTbGIiY1jWx9nQpGLl1eVQqW9jNzvZFeFOdvIZv6OAc5iMUMtmnKhdgnY4efDzEMJ0JvMD5nMZdoTtA3M2zK7Lx6aPYRTJJJNsfI4imRGczySEa3iTNlQ8MW9fwUsb9yEMNmLYOLYQ7GNSalqxCsjVeyqb1PA6J9HwRG2NxpLLy1Ye4MfczjoO9SiVK65Vppcms4qVW5tLmf4Cf+BVXuvEV/gfmiMN271bgxvVSBVU/D04oIdgXLULlRYq1RyyzSeWvX4K1Vo7IYKo3RhbKCXGUvnUcb1Z4Evcw3+cts71APdQqOaTbi6xapJECkuytNkcC8VOHZQeFj2+Xh0zlgMG2BsV105Hm1pAqrnEWpEoUjUms72aZt0X1627CBCglaO0EezR4WKdF2Qnl1JBKVVUMpOZVDITB8WU4KDCGAuPV2BXC0gzl1iSKFIxOrO5mmY9nqqDQpC93M+1VHM9T9IYd4LgIsguRiI8zQmO0EgjDTRwghOcoNXYMQqPHmM/FWqu2QK8JIisOSf9vTk0a9445qkA7yAMJQFhOEIheyLNbPGINRphE+AxCtABtvMc69iKl6Cxs+glaAR4E4pFwuQt3+WE5sfTK92o7EHIZzTLjC368VxBc1yVsLBYyQgbCeJEwY2LByMx6qe0GJOJC685k9LwVmba+jk0aS5O0tYLT6JwL8MZw0t4CdDOQ0xCeBE1DtvqsKwXUHHhQuUVhFLGMJYShDVG6mHaDD4slm1dIbVaPQup75ELqacOByP4MT68OAlwnNkIK/CekRuGxfLg5EbGUcL7bGcuGczgKD4UU4slIva37YgWz4RejPA4AZxGCvEjhFtxxVHm6yyWEy/NzEX4CSHgNwh2o07RIVb2BtPNhvnDcvc7+Jl+FytY2SNXsJI7qWAsN6Lgx4VGAyWcyy/OIGZ1WJYbhaWMw85rvEMlWXzHiH6GWFoO2Y+YLiktsWep1bSE/Hi6Vdij6UblYYTxPE4rHpq4kyyENyKPkZ9pzNqM4OAivkYxwnNGGtIhlr3eVI/b1SSJ5M/PZrZ+POSNuYjpWPu58HOINDIYzzyWU04Wg1gYZ62962wY3pR9NuLgD9FubNW68NBEpZ6DvdZUYhUOErHXTmG2Ft/uTpDtFBi3NwRhIV/GWQ8Ni3U5wouAjwABAoQ4zGbeYj8aqjHmR+MEVdpU8q43nVgFdfGKFb7lJjbwU25mJa/TFveCJyzWZfwLazjIHvaxj73s5SBfcpiD7GUv+4zRA3zMDH0atgWmFSvetaEPFTdOvD2WA3teGw6nijwmkWYwlWQu4RJGRY2lkUo6eVo+GT8xXa9D7xsWSsz9HjeemMUYpZfyTIADZ9CrZVMLSF1v4g2LYIwNC3+chZiwhF7jqRx3D8W/LTzJM6ztlU/zDI/hUO2km68xZGqdjRJ9DU/zFL/txP9mPV/EJZhi9M4004q/l/p7EDXGv6QzA+i0UmXOSmnvNfgpPMlh1E6PJ8XqomnjFZZxNQu4l+0EejwyHnpoMmtjSHZdPnl6EQ6Ko+igmEIuZCJfJ49naIgI1r1w4+M4SxAuQYwe901nucHaD/YNpzJL38MRDnG4E4+wmQUI6QjFbOAoqtHR3rmLxssdCLnMZDXLGUcxwnsDt4umWm8lGKMfVOUkb3IVwmSECjZxjPZOpZxWPHyIMIUf0IgfH++SQQqLcA7YLhrtmLEB0dXFPGi08hrfQ0hDqGYR17MwwutZxBUUMJTPCOFEQedRhEwO9L2LZr0J3bC3DF4x+kVb2ERVD5NAKjbKOY4HBafRRXM5n/a5i8ZkbZIdC+nmUO/9WV5UjrGB5axkRRTv5OcsIJch7CBkWOJDDCKLv/bNsrQcsteYzrLyF/TWnxUtmI9gJKR7Ii2SGtsRclnIF3hReJM0JrDEKBH3RazcxeZc7sS1kI6Vm4efRf0Vgp187uAmRlKIsK2vs6GWg/06c5Zo+tDareDjBD+LeqWK8MezdMHOYpmwRJO/MJs5Wl/64BV8KLzFShZxM4+wtw8NR+GenKNU6VOxX2u6SmnOPDvZ+pFQX56wCHfPeGnDScB4M83ZXsuJn0NM0grJvtNc73pIFBkzodglbNBDkS0tD+5Om6ueGN+6HhEWzIvHKNOEx7tfx91l3N3pGh7ceAmxFtHKSLnXXGIliEjC1FeL+Fbw95yIc6Ebm0qfzu5gCxsZFpquTSO50mRvEalJEhlbksd0RJ2t3aovPUVtqXaLulRbqi/VlupLo8cjv0d912Ic0Z3R52rdxvSl+lL9Fu0KXbSC4HSmvCuDxYRPsyakrZpGGVNJ5vJ/MEeTQxl5pH/8zfFiwjeIJIiIjHakPjTtY9su207bTttO2w7b/01/tujB/NfzPjNG+sIdZ3J0zq7U/51wiwwVk75s5dST7ufKEDnP4LnGbx0jfy8OkcGnJh+Toiap6yqMhH9ccDX5mx0iFtbBWGN/L1qwYMGCBQsWLFiwYMGCBQsWLFiwYMGCBQsWLFiwYMGCBQsWLFiwYOFvjP8H+sK1lXcexQ8AAAAASUVORK5CYII="
},
{
"id": "9957817d-26b5-456d-bc49-4a8ba1bc021c",
"name": "NU BANK",
"supported_types": [
"savings"
],
"mask": "99999999",
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-a086-4375-88f0-a1b45237ed28",
"name": "POWWI",
"supported_types": [
"savings",
"electronic_deposit"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-98b3-41bd-a998-ffff97672ac7",
"name": "UALA",
"supported_types": [
"savings",
"checking"
],
"mask": "999999999999999",
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-584c-4fc8-ae4a-b5f057a9a375",
"name": "BANCO MUNDO MUJER",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-95df-4cda-9f3d-c1460b00caef",
"name": "BGT PACTUAL",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAQAAACWCLlpAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAeGVYSWZNTQAqAAAACAAEARIAAwAAAAEAAQAAARoABQAAAAEAAAA+ARsABQAAAAEAAABGh2kABAAAAAEAAABOAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAlqADAAQAAAABAAAAlgAAAAD41eaXAAAACXBIWXMAAAsTAAALEwEAmpwYAAAClGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj45ODA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjk4MDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgow/z9cAAAP3UlEQVR42u2ce3RU9bXHdxIs18pVeitY7RUhyDMk5AUhk0lIJi9CgiW0EVSuCxOJVJSipe2tVAVtaxW8Vm+9io9rRVAsFt+t3rpQqVbkehUBeVYBSQIkhGTmzPucM5/7xxwmk2QSBtLVnsTz/a6sWfObc85a55u992//9m+fI2LBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggWzIrEmSRIsGU6PhIhMiZYYp5NKRCalTcyXoSKSZAnSi1QrEkVS6/N8eaHU7ZIuUjjIEqUHqWqSRMbXF5CHXSti0iGZbMnVi1Wl1BeSRpFmIzvosOTqTarx9UVkMknfz0cIeaol12mkytB3oxJkK4nYLbl6kqqQLDL03Wg4caGy1bCuNEuunqxKw4UbNy40PkSwW3L1LJUTt0EXGltJsJyxqwOeilXtKBGxFNqjnPGrLpeRVxUZsSqIGw0vLhQUXHjQ8ESH+sNfXbkiDphFur6bID6O8g4taHjwoNLOFg7jJ8hWEk5ZV9pXUa4usSqIjwb+DeFGPqWNNvZwG0Ip+wgQ+Eo7YxepAvhoYC6jmUkaI7iOhYzhUoqYhD1KLrvqIPUr5ozdrMpPA3OZyBTyuQhBEAYzhWsoINWQK8iHDIrtjAO4+tXNqsJSpTOSxTTwIatZxkpWsY7N1DOVzIhcp6wr7IxZ50hSTVLn4s6ADesdsWou6SRzA80ECRDCyZ/5BZUI5VQzPSJX2BmnqoWkHZL0U5ccnpY8R/554MkVqSx0zICNXMlkLucGjhPAicJBHjdcMRGhkNlkMzVKrgzy1Omkfz6iamRO6mLbG3kn80h5TKJrrAPLATONsN7IXDK4nEU0E6CdAJ8ZQgkXGp/f42aEbOzsRUPjVc6hWJ9OIcVqMRNJo5Bs79czZQBVVrvlVX4auDLigAFcKEZc2sTrTOB8MpmDcDWtPMx4UqhmA7cxl1IcZOgJIWGIfqNWF0pX8xn1I5GapAElVWGXsB52wLBUbhQ8OHmZ/cB7CMJy1vEJh9hICuUUIZxn2Fs194X+GNqNj/cQrZxxLwyUqGVI5egS1ifz7Sip3CjGUseDipeXuYlVrGUJFzOMQkYhfI1ybmcjn9KMDxU/AQ6To9vJapJLZQDsCEXFqvRICjqPCVzMTRzHj8uQyUsQFS9NbGMdK5iLDUFIQEjlZp7iA46gECSIFwWXIfKy0IhQPhdd0f+jVsxsfR7jyeGHHEFDwUMAlQAt7GATd1DBkEiYH8t1/IbNfE47AVQ0NHy4ItUJF0HWI1oJ/9rvo1bEAcMzYNCQahTTKGcFtayhHSf7eIPVzOVShCFcgDCcOfySV/mME/jQ0NAI0M7nbGY/3iixVD5CtDImvda/k9OYM+A8RmKnlkrDdu7iJiYgJPINBKGIf+d5PuYoHsOSgigc4QOe4mZyEfI4HpFLwcdRZui5ZB2TEf03akWF9VR9F358NHAVo8jjWp7HRg4VzGIMQzgXIYvFPMH7fIlCEA0NFQ/H+ISN3E4ZgxG+wQV8B+EliEwHCl7u4vxQAcPn9NeoFcnWkxmr7wE0GpjHtykll5lMx0EOgxEuYz4P8CcOcBK/IZKfVvbyB+6jhm8hnMcQhGFcyc+xk89k3sZNAC9+3Ki8jKjljHlQZEViP5UqtT6fKczVP8fPXt5iPqOpwkEewxCEGdzNy+yiBZ/hcAGcfME7/Bd1pCAMYihCIiUsZyOfcAyVFxDKuJBbWcPd/JpmNHZxrlZM+l/knP4VtRIksSapJkkktd5GASn6YzzPdaQiTCYFQZjMraxjG024DYcL4qaRbTzDLWRHZkIhncU8yV84gpsgATwoeFiL8E0EYQzCn9A5zlV6BjlNMrK/OGJCTVJHZSm13oadXH064xAmkM5ECljCU3xAAz5C6GioeDnODl7kTkoRhGQymEg+3+dRtnAYDzohgvjw4MWHDz8aO1jFfKqo4AIeREXl4ZDoDoZfI0ICCTVJpg70UbHiwtG2jEdzdTs2PQ8bBZSSz42s40MOc4JWmmmigUb28yb3cyWCcD5TKaGUfGp5gvc5SAsnaeEoDTTQSFOEjTTSynEO8BHzuZT5fE4bLyJ6Kdl/vihV/ili4yZ1yEQRGZRZXrSy6HdFfy1SSynGESrGQTEOHDi4mkUsoJoySiinkllcQRbCMGzMoJIKSnDgoIgruYFavks5JZQxk1nMoqoLS5nJXK5lBkUUMYNZzMKBI1RCoVL4kX1t1u1D082adSWKTMzJe7uIcaeijSYh4XRM5DIuJhH521EXhPGUkOud+J8yyHxyJYqMnWxvtiOhJer92mp9dWg13Xl/N65mFaviOrIndpyxmlXhv9D92mJN1DwKSHnAbGIliIhM21RAeuDdkIIPfx/oM0J436iwmVQtn2n+C7JNNTvWJImMLywOCq+FMDLqs6MLFx58eFFw9ulKbuBFRC1j/A9NtbguHCRiq7dj1xrxGSWTs6ELLyptNBhrQiWq6+HMr+XjCFPUAjLXmSqnLxwkUlCbzRz9eFQt4Mxvz08z66mjkmpu4wP8uM/6ago+jjFLzSH7OfOJVTeF2XGLFcsB/TRwDcIIBGEkwlp8Z21Z4UrETHUaWc/2Y7HC9dDO9ODFzTKEqVzNY/yKDIoR3iJ4lm4dFquyP4ul4CKAn1ZOduIJ3LyHkMFyWggSYBs2UrmONjxn5Yr9XKywUEEO8Gvmcz21EdZRy0KqKOAS9qHjxIXOkwjp7CcwcMXyxby1cEwKcpBHSGF4VH29g5OwUcYxPCi0E+RNhDHsOEtH7AdiHcWDE1c3+lE5zBNkMpQJCEv4JXdxd4R3cQ912BA+AhS8aKzmfKbwBf6BaFnZVOtt6AQIdqFKA2vJZQhpCN9nC058XQK8xi4EO1exG4WTbGIiY1jWx9nQpGLl1eVQqW9jNzvZFeFOdvIZv6OAc5iMUMtmnKhdgnY4efDzEMJ0JvMD5nMZdoTtA3M2zK7Lx6aPYRTJJJNsfI4imRGczySEa3iTNlQ8MW9fwUsb9yEMNmLYOLYQ7GNSalqxCsjVeyqb1PA6J9HwRG2NxpLLy1Ye4MfczjoO9SiVK65Vppcms4qVW5tLmf4Cf+BVXuvEV/gfmiMN271bgxvVSBVU/D04oIdgXLULlRYq1RyyzSeWvX4K1Vo7IYKo3RhbKCXGUvnUcb1Z4Evcw3+cts71APdQqOaTbi6xapJECkuytNkcC8VOHZQeFj2+Xh0zlgMG2BsV105Hm1pAqrnEWpEoUjUms72aZt0X1627CBCglaO0EezR4WKdF2Qnl1JBKVVUMpOZVDITB8WU4KDCGAuPV2BXC0gzl1iSKFIxOrO5mmY9nqqDQpC93M+1VHM9T9IYd4LgIsguRiI8zQmO0EgjDTRwghOcoNXYMQqPHmM/FWqu2QK8JIisOSf9vTk0a9445qkA7yAMJQFhOEIheyLNbPGINRphE+AxCtABtvMc69iKl6Cxs+glaAR4E4pFwuQt3+WE5sfTK92o7EHIZzTLjC368VxBc1yVsLBYyQgbCeJEwY2LByMx6qe0GJOJC685k9LwVmba+jk0aS5O0tYLT6JwL8MZw0t4CdDOQ0xCeBE1DtvqsKwXUHHhQuUVhFLGMJYShDVG6mHaDD4slm1dIbVaPQup75ELqacOByP4MT68OAlwnNkIK/CekRuGxfLg5EbGUcL7bGcuGczgKD4UU4slIva37YgWz4RejPA4AZxGCvEjhFtxxVHm6yyWEy/NzEX4CSHgNwh2o07RIVb2BtPNhvnDcvc7+Jl+FytY2SNXsJI7qWAsN6Lgx4VGAyWcyy/OIGZ1WJYbhaWMw85rvEMlWXzHiH6GWFoO2Y+YLiktsWep1bSE/Hi6Vdij6UblYYTxPE4rHpq4kyyENyKPkZ9pzNqM4OAivkYxwnNGGtIhlr3eVI/b1SSJ5M/PZrZ+POSNuYjpWPu58HOINDIYzzyWU04Wg1gYZ62962wY3pR9NuLgD9FubNW68NBEpZ6DvdZUYhUOErHXTmG2Ft/uTpDtFBi3NwRhIV/GWQ8Ni3U5wouAjwABAoQ4zGbeYj8aqjHmR+MEVdpU8q43nVgFdfGKFb7lJjbwU25mJa/TFveCJyzWZfwLazjIHvaxj73s5SBfcpiD7GUv+4zRA3zMDH0atgWmFSvetaEPFTdOvD2WA3teGw6nijwmkWYwlWQu4RJGRY2lkUo6eVo+GT8xXa9D7xsWSsz9HjeemMUYpZfyTIADZ9CrZVMLSF1v4g2LYIwNC3+chZiwhF7jqRx3D8W/LTzJM6ztlU/zDI/hUO2km68xZGqdjRJ9DU/zFL/txP9mPV/EJZhi9M4004q/l/p7EDXGv6QzA+i0UmXOSmnvNfgpPMlh1E6PJ8XqomnjFZZxNQu4l+0EejwyHnpoMmtjSHZdPnl6EQ6Ko+igmEIuZCJfJ49naIgI1r1w4+M4SxAuQYwe901nucHaD/YNpzJL38MRDnG4E4+wmQUI6QjFbOAoqtHR3rmLxssdCLnMZDXLGUcxwnsDt4umWm8lGKMfVOUkb3IVwmSECjZxjPZOpZxWPHyIMIUf0IgfH++SQQqLcA7YLhrtmLEB0dXFPGi08hrfQ0hDqGYR17MwwutZxBUUMJTPCOFEQedRhEwO9L2LZr0J3bC3DF4x+kVb2ERVD5NAKjbKOY4HBafRRXM5n/a5i8ZkbZIdC+nmUO/9WV5UjrGB5axkRRTv5OcsIJch7CBkWOJDDCKLv/bNsrQcsteYzrLyF/TWnxUtmI9gJKR7Ii2SGtsRclnIF3hReJM0JrDEKBH3RazcxeZc7sS1kI6Vm4efRf0Vgp187uAmRlKIsK2vs6GWg/06c5Zo+tDareDjBD+LeqWK8MezdMHOYpmwRJO/MJs5Wl/64BV8KLzFShZxM4+wtw8NR+GenKNU6VOxX2u6SmnOPDvZ+pFQX56wCHfPeGnDScB4M83ZXsuJn0NM0grJvtNc73pIFBkzodglbNBDkS0tD+5Om6ueGN+6HhEWzIvHKNOEx7tfx91l3N3pGh7ceAmxFtHKSLnXXGIliEjC1FeL+Fbw95yIc6Ebm0qfzu5gCxsZFpquTSO50mRvEalJEhlbksd0RJ2t3aovPUVtqXaLulRbqi/VlupLo8cjv0d912Ic0Z3R52rdxvSl+lL9Fu0KXbSC4HSmvCuDxYRPsyakrZpGGVNJ5vJ/MEeTQxl5pH/8zfFiwjeIJIiIjHakPjTtY9su207bTttO2w7b/01/tujB/NfzPjNG+sIdZ3J0zq7U/51wiwwVk75s5dST7ufKEDnP4LnGbx0jfy8OkcGnJh+Toiap6yqMhH9ccDX5mx0iFtbBWGN/L1qwYMGCBQsWLFiwYMGCBQsWLFiwYMGCBQsWLFiwYMGCBQsWLFiwYOFvjP8H+sK1lXcexQ8AAAAASUVORK5CYII="
},
{
"id": "9957817d-845e-48b3-92e2-1464b03092b0",
"name": "BANCO UNION",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-782b-4a44-bc8d-fac74dfb99a5",
"name": "MIBANCO",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAQAAACWCLlpAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAeGVYSWZNTQAqAAAACAAEARIAAwAAAAEAAQAAARoABQAAAAEAAAA+ARsABQAAAAEAAABGh2kABAAAAAEAAABOAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAlqADAAQAAAABAAAAlgAAAAD41eaXAAAACXBIWXMAAAsTAAALEwEAmpwYAAAClGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj45ODA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjk4MDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgow/z9cAAAP3UlEQVR42u2ce3RU9bXHdxIs18pVeitY7RUhyDMk5AUhk0lIJi9CgiW0EVSuCxOJVJSipe2tVAVtaxW8Vm+9io9rRVAsFt+t3rpQqVbkehUBeVYBSQIkhGTmzPucM5/7xxwmk2QSBtLVnsTz/a6sWfObc85a55u992//9m+fI2LBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggWzIrEmSRIsGU6PhIhMiZYYp5NKRCalTcyXoSKSZAnSi1QrEkVS6/N8eaHU7ZIuUjjIEqUHqWqSRMbXF5CHXSti0iGZbMnVi1Wl1BeSRpFmIzvosOTqTarx9UVkMknfz0cIeaol12mkytB3oxJkK4nYLbl6kqqQLDL03Wg4caGy1bCuNEuunqxKw4UbNy40PkSwW3L1LJUTt0EXGltJsJyxqwOeilXtKBGxFNqjnPGrLpeRVxUZsSqIGw0vLhQUXHjQ8ESH+sNfXbkiDphFur6bID6O8g4taHjwoNLOFg7jJ8hWEk5ZV9pXUa4usSqIjwb+DeFGPqWNNvZwG0Ip+wgQ+Eo7YxepAvhoYC6jmUkaI7iOhYzhUoqYhD1KLrvqIPUr5ozdrMpPA3OZyBTyuQhBEAYzhWsoINWQK8iHDIrtjAO4+tXNqsJSpTOSxTTwIatZxkpWsY7N1DOVzIhcp6wr7IxZ50hSTVLn4s6ADesdsWou6SRzA80ECRDCyZ/5BZUI5VQzPSJX2BmnqoWkHZL0U5ccnpY8R/554MkVqSx0zICNXMlkLucGjhPAicJBHjdcMRGhkNlkMzVKrgzy1Omkfz6iamRO6mLbG3kn80h5TKJrrAPLATONsN7IXDK4nEU0E6CdAJ8ZQgkXGp/f42aEbOzsRUPjVc6hWJ9OIcVqMRNJo5Bs79czZQBVVrvlVX4auDLigAFcKEZc2sTrTOB8MpmDcDWtPMx4UqhmA7cxl1IcZOgJIWGIfqNWF0pX8xn1I5GapAElVWGXsB52wLBUbhQ8OHmZ/cB7CMJy1vEJh9hICuUUIZxn2Fs194X+GNqNj/cQrZxxLwyUqGVI5egS1ifz7Sip3CjGUseDipeXuYlVrGUJFzOMQkYhfI1ybmcjn9KMDxU/AQ6To9vJapJLZQDsCEXFqvRICjqPCVzMTRzHj8uQyUsQFS9NbGMdK5iLDUFIQEjlZp7iA46gECSIFwWXIfKy0IhQPhdd0f+jVsxsfR7jyeGHHEFDwUMAlQAt7GATd1DBkEiYH8t1/IbNfE47AVQ0NHy4ItUJF0HWI1oJ/9rvo1bEAcMzYNCQahTTKGcFtayhHSf7eIPVzOVShCFcgDCcOfySV/mME/jQ0NAI0M7nbGY/3iixVD5CtDImvda/k9OYM+A8RmKnlkrDdu7iJiYgJPINBKGIf+d5PuYoHsOSgigc4QOe4mZyEfI4HpFLwcdRZui5ZB2TEf03akWF9VR9F358NHAVo8jjWp7HRg4VzGIMQzgXIYvFPMH7fIlCEA0NFQ/H+ISN3E4ZgxG+wQV8B+EliEwHCl7u4vxQAcPn9NeoFcnWkxmr7wE0GpjHtykll5lMx0EOgxEuYz4P8CcOcBK/IZKfVvbyB+6jhm8hnMcQhGFcyc+xk89k3sZNAC9+3Ki8jKjljHlQZEViP5UqtT6fKczVP8fPXt5iPqOpwkEewxCEGdzNy+yiBZ/hcAGcfME7/Bd1pCAMYihCIiUsZyOfcAyVFxDKuJBbWcPd/JpmNHZxrlZM+l/knP4VtRIksSapJkkktd5GASn6YzzPdaQiTCYFQZjMraxjG024DYcL4qaRbTzDLWRHZkIhncU8yV84gpsgATwoeFiL8E0EYQzCn9A5zlV6BjlNMrK/OGJCTVJHZSm13oadXH064xAmkM5ECljCU3xAAz5C6GioeDnODl7kTkoRhGQymEg+3+dRtnAYDzohgvjw4MWHDz8aO1jFfKqo4AIeREXl4ZDoDoZfI0ICCTVJpg70UbHiwtG2jEdzdTs2PQ8bBZSSz42s40MOc4JWmmmigUb28yb3cyWCcD5TKaGUfGp5gvc5SAsnaeEoDTTQSFOEjTTSynEO8BHzuZT5fE4bLyJ6Kdl/vihV/ili4yZ1yEQRGZRZXrSy6HdFfy1SSynGESrGQTEOHDi4mkUsoJoySiinkllcQRbCMGzMoJIKSnDgoIgruYFavks5JZQxk1nMoqoLS5nJXK5lBkUUMYNZzMKBI1RCoVL4kX1t1u1D082adSWKTMzJe7uIcaeijSYh4XRM5DIuJhH521EXhPGUkOud+J8yyHxyJYqMnWxvtiOhJer92mp9dWg13Xl/N65mFaviOrIndpyxmlXhv9D92mJN1DwKSHnAbGIliIhM21RAeuDdkIIPfx/oM0J436iwmVQtn2n+C7JNNTvWJImMLywOCq+FMDLqs6MLFx58eFFw9ulKbuBFRC1j/A9NtbguHCRiq7dj1xrxGSWTs6ELLyptNBhrQiWq6+HMr+XjCFPUAjLXmSqnLxwkUlCbzRz9eFQt4Mxvz08z66mjkmpu4wP8uM/6ago+jjFLzSH7OfOJVTeF2XGLFcsB/TRwDcIIBGEkwlp8Z21Z4UrETHUaWc/2Y7HC9dDO9ODFzTKEqVzNY/yKDIoR3iJ4lm4dFquyP4ul4CKAn1ZOduIJ3LyHkMFyWggSYBs2UrmONjxn5Yr9XKywUEEO8Gvmcz21EdZRy0KqKOAS9qHjxIXOkwjp7CcwcMXyxby1cEwKcpBHSGF4VH29g5OwUcYxPCi0E+RNhDHsOEtH7AdiHcWDE1c3+lE5zBNkMpQJCEv4JXdxd4R3cQ912BA+AhS8aKzmfKbwBf6BaFnZVOtt6AQIdqFKA2vJZQhpCN9nC058XQK8xi4EO1exG4WTbGIiY1jWx9nQpGLl1eVQqW9jNzvZFeFOdvIZv6OAc5iMUMtmnKhdgnY4efDzEMJ0JvMD5nMZdoTtA3M2zK7Lx6aPYRTJJJNsfI4imRGczySEa3iTNlQ8MW9fwUsb9yEMNmLYOLYQ7GNSalqxCsjVeyqb1PA6J9HwRG2NxpLLy1Ye4MfczjoO9SiVK65Vppcms4qVW5tLmf4Cf+BVXuvEV/gfmiMN271bgxvVSBVU/D04oIdgXLULlRYq1RyyzSeWvX4K1Vo7IYKo3RhbKCXGUvnUcb1Z4Evcw3+cts71APdQqOaTbi6xapJECkuytNkcC8VOHZQeFj2+Xh0zlgMG2BsV105Hm1pAqrnEWpEoUjUms72aZt0X1627CBCglaO0EezR4WKdF2Qnl1JBKVVUMpOZVDITB8WU4KDCGAuPV2BXC0gzl1iSKFIxOrO5mmY9nqqDQpC93M+1VHM9T9IYd4LgIsguRiI8zQmO0EgjDTRwghOcoNXYMQqPHmM/FWqu2QK8JIisOSf9vTk0a9445qkA7yAMJQFhOEIheyLNbPGINRphE+AxCtABtvMc69iKl6Cxs+glaAR4E4pFwuQt3+WE5sfTK92o7EHIZzTLjC368VxBc1yVsLBYyQgbCeJEwY2LByMx6qe0GJOJC685k9LwVmba+jk0aS5O0tYLT6JwL8MZw0t4CdDOQ0xCeBE1DtvqsKwXUHHhQuUVhFLGMJYShDVG6mHaDD4slm1dIbVaPQup75ELqacOByP4MT68OAlwnNkIK/CekRuGxfLg5EbGUcL7bGcuGczgKD4UU4slIva37YgWz4RejPA4AZxGCvEjhFtxxVHm6yyWEy/NzEX4CSHgNwh2o07RIVb2BtPNhvnDcvc7+Jl+FytY2SNXsJI7qWAsN6Lgx4VGAyWcyy/OIGZ1WJYbhaWMw85rvEMlWXzHiH6GWFoO2Y+YLiktsWep1bSE/Hi6Vdij6UblYYTxPE4rHpq4kyyENyKPkZ9pzNqM4OAivkYxwnNGGtIhlr3eVI/b1SSJ5M/PZrZ+POSNuYjpWPu58HOINDIYzzyWU04Wg1gYZ62962wY3pR9NuLgD9FubNW68NBEpZ6DvdZUYhUOErHXTmG2Ft/uTpDtFBi3NwRhIV/GWQ8Ni3U5wouAjwABAoQ4zGbeYj8aqjHmR+MEVdpU8q43nVgFdfGKFb7lJjbwU25mJa/TFveCJyzWZfwLazjIHvaxj73s5SBfcpiD7GUv+4zRA3zMDH0atgWmFSvetaEPFTdOvD2WA3teGw6nijwmkWYwlWQu4RJGRY2lkUo6eVo+GT8xXa9D7xsWSsz9HjeemMUYpZfyTIADZ9CrZVMLSF1v4g2LYIwNC3+chZiwhF7jqRx3D8W/LTzJM6ztlU/zDI/hUO2km68xZGqdjRJ9DU/zFL/txP9mPV/EJZhi9M4004q/l/p7EDXGv6QzA+i0UmXOSmnvNfgpPMlh1E6PJ8XqomnjFZZxNQu4l+0EejwyHnpoMmtjSHZdPnl6EQ6Ko+igmEIuZCJfJ49naIgI1r1w4+M4SxAuQYwe901nucHaD/YNpzJL38MRDnG4E4+wmQUI6QjFbOAoqtHR3rmLxssdCLnMZDXLGUcxwnsDt4umWm8lGKMfVOUkb3IVwmSECjZxjPZOpZxWPHyIMIUf0IgfH++SQQqLcA7YLhrtmLEB0dXFPGi08hrfQ0hDqGYR17MwwutZxBUUMJTPCOFEQedRhEwO9L2LZr0J3bC3DF4x+kVb2ERVD5NAKjbKOY4HBafRRXM5n/a5i8ZkbZIdC+nmUO/9WV5UjrGB5axkRRTv5OcsIJch7CBkWOJDDCKLv/bNsrQcsteYzrLyF/TWnxUtmI9gJKR7Ii2SGtsRclnIF3hReJM0JrDEKBH3RazcxeZc7sS1kI6Vm4efRf0Vgp187uAmRlKIsK2vs6GWg/06c5Zo+tDareDjBD+LeqWK8MezdMHOYpmwRJO/MJs5Wl/64BV8KLzFShZxM4+wtw8NR+GenKNU6VOxX2u6SmnOPDvZ+pFQX56wCHfPeGnDScB4M83ZXsuJn0NM0grJvtNc73pIFBkzodglbNBDkS0tD+5Om6ueGN+6HhEWzIvHKNOEx7tfx91l3N3pGh7ceAmxFtHKSLnXXGIliEjC1FeL+Fbw95yIc6Ebm0qfzu5gCxsZFpquTSO50mRvEalJEhlbksd0RJ2t3aovPUVtqXaLulRbqi/VlupLo8cjv0d912Ic0Z3R52rdxvSl+lL9Fu0KXbSC4HSmvCuDxYRPsyakrZpGGVNJ5vJ/MEeTQxl5pH/8zfFiwjeIJIiIjHakPjTtY9su207bTttO2w7b/01/tujB/NfzPjNG+sIdZ3J0zq7U/51wiwwVk75s5dST7ufKEDnP4LnGbx0jfy8OkcGnJh+Toiap6yqMhH9ccDX5mx0iFtbBWGN/L1qwYMGCBQsWLFiwYMGCBQsWLFiwYMGCBQsWLFiwYMGCBQsWLFiwYOFvjP8H+sK1lXcexQ8AAAAASUVORK5CYII="
},
{
"id": "9957817d-7558-4745-aa46-db6f9808e096",
"name": "JURISCOOOP CF",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-7202-40f4-8176-ae5dc9ac2923",
"name": "CFA ANTIOQUIA",
"supported_types": [
"savings",
"checking",
"electronic_deposit"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-691b-4576-8778-af30e304bb0f",
"name": "CONFIAR",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-5f38-4b96-ae90-a40739394c17",
"name": "BANCO PROCREDIT",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-7e33-4f0a-8c6d-7e7f0f3f6465",
"name": "CREDIFINANCIERA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "images/bank/D672gN6JdF79Fnt7KDppezxfDvgi8a-metaYmFuY28tY3JlZGlmaW5hbmNpZXJhLnBuZw==-.png",
"instructions": "Por tu seguridad, tu cuenta del Banco Credifinanciera está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAAGQAAAADoAQAAQAAAGQAAAAAAAAA/+EOF2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjc3NjFkYjU4LTU1MTMtNGVmMC1hNjkyLTY4ZWY2NDc4ZDYzMDwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSA2PC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8nPgogIDxwZGY6QXV0aG9yPk1hbnVlbCBIZXJyZXJhPC9wZGY6QXV0aG9yPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp4bXA9J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8nPgogIDx4bXA6Q3JlYXRvclRvb2w+Q2FudmEgZG9jPURBR1pmUnRXRThZIHVzZXI9VUFFVFVjaElTSlE8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArz3w18XPDOtalPp8tw+nXkczRKt3hVkwxGVbOOcdDg16Ea+CNZ51jUM/wDPzL/6Ga6MPRVW6ZvRpKpdM+9wQQCDkGivjXwR8T/EfhIpFbXX2zT1/wCXS6JZQP8AZPVfw49q+hPA3xe8OeJ/Lt5pv7L1FuPs90wCsf8AYfofpwfalUw84a7oU6EoHo1FZmva9pegWZutYvYbWHsXblvZR1J+leJ+M/jhcT+ZbeFbf7PH0+13CgufdU6D8c/SudtLc6sFleJxztRjp36fee0+IfEWleHbQ3GsXsNrH/CGPzP7Ko5P4Vm+BPGlj4zgvptNhuIorWYRZmABfIyCADx9K+RtS1C71O8e61G5mubl/vSSuWb/APV7V71+zL/yBNb/AOvpP/QKlSuz28x4fhgME60pXndeh7PRRRVnygUUUUAFFFFAAa+CNZ/5DGof9fMv/obV943VzDax+ZcSpGnqxr4b1GzDatfPI3BuJSAP981th8TTouXM9ewPG0sHFzqv/gmQiM7YQEn2q5FY8ZmOf9kVdRFRcIAB7Up+6fpWNbMZzdoaI8DF8QVq0uWj7q/E6/xBbi+h0Pz5JC66LabWLE4yGz1rmbrT57fJ270/vL/UV1t//q9E/wCwLZ/+gtVavdpZdSxNBSektdfme9Li7HZNjHSg+anaPuv0Wz6HH19B/sy/8gTW/wDr6T/0CvH7vToLjLY2P/eX+or139nqe20uz1Szu7mJJ57hXiVjjeAuOM9/avMr5dWw7u9V3R9Li+LsDnGAdOD5al17r9ej2Z7VRRRXKfNhRRRQAU2VtkbMOoBNOplx/qJP90/yqZaJgeW3V1Ndzma4kaRyc8np7D0rxrxT4P1Gxuri6t4zdWjuz7o+WQE5+Zev4ivXqK/P8PjalCo5rW+9zHGYKGLgoz0tsfOtIfun6V7Zr3hPTNY3PJF5Fyf+W0IwSfcdDXm+v+DtT0kPIqfa7UD/AFsIyQPdeor6HC5jRrtK9n5nzGIyqvh5Xtdd0aV//q9E/wCwLZ/+gtVarl1G8y6II1LH+xbPp9Gqxb6ao5nbJ/ujpX6ZgZJUFfz/ADNc9g5Y127R/wDSUZ0MTzNtjUsf5VtWNubeEqxBYnJx2qdFVFCooVR2FLW0p82h5sKfLqeqfCXU7u7t761upnlig2GPeclc5yM+nFeg15l8G/8AW6r9I/8A2avTa+YxqSrySPrcvk5YeLYUUUVynaFMuP8AUSf7p/lT6Zcf6iT/AHT/ACqZ/CwPJqKltrea5kEdvG0jnsozXUaX4TJw+oyY/wCmUZ/mf8K/PsNga2KlanHTv0Nm0jmLW2mupRHbxNI/oo6fX0rqdK8KEFZdQk5HPlxn+Z/wrp7W1gtIhHbRLGg7KKmr6bB5HSo2lV95/gQ5HPeJPCdhrlvGjA20sQIjeIAY9iOhFeX+IPB2q6NukaL7Taj/AJbQgnA9x1H8q9xor6ehjKlHRarscGJwNPEe89H3PmqivbfEPgnS9X3SIn2S6PPmwjAJ916H+deaeIPCGq6NueSL7RbD/ltCMgD3HUV7FDG06umzPDxGAq0dbXXkdN8G/wDW6r9I/wD2avTa8y+Df+s1X6R/+zV6bXkY7+PL+uh7WXf7vH5/mFFFFch3BQQCCDyKKKAIbW1gtI9ltEkS+ijFTUUUoxUVZIAooopgFFFFABRRRQBVs9Os7OaeW0tooZJyDIUXG7HTNWqKKbbe4kktEFFFFIYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf//Z"
},
{
"id": "9957817d-52b0-466a-8711-e3389326076d",
"name": "BANCO W SA",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": "images/bank/szO0TiZlNGunKBEG3MsoUeUXhZtrEt-metaYmFuY28tdy5wbmc=-.png",
"instructions": "Por tu seguridad, tu cuenta del Banco W está siendo validada. Este proceso puede tardar algunas horas.
",
"base64_logo": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA/+EOImh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPmVlOTkxMjY1LWFiZjgtNDRjNy04YjM3LWJhM2U1ZjBjOTFhMzwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAxPC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8nPgogIDxwZGY6QXV0aG9yPk1hbnVlbCBIZXJyZXJhPC9wZGY6QXV0aG9yPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp4bXA9J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8nPgogIDx4bXA6Q3JlYXRvclRvb2w+Q2FudmEgKFJlbmRlcmVyKSBkb2M9REFHWmZSdFdFOFkgdXNlcj1VQUVUVWNoSVNKUTwveG1wOkNyZWF0b3JUb29sPgogPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiub8U6xf2Op6XY6ctv5l4zrunBwuMelZVq0aMOeW2n4uxtQoyrz5I76/grnSUVzPhzxHJdLqaasLeFrB9sk0bfuz+J+lamn67pmoeb9jvYZTEu5wp5A9fpUUsVSqJNS376PTyLq4StSbTjt1Wq121NKisiLxJo8txFBFqNu8suNihs5zUuo67pemzrDfX0EMrchWbn/AOtVfWKVubnVvVEfVq3Ny8jv6M0qKzdQ17S9PMYvL6CIyDcgLdR6/Sszxx4gXR/CVxqNo6u7qEgcHILNwCPp1/Ctaco1J+zg02YV74ek61RNRXX0K3izx9pPhyU28jNdXg6ww4+X/ePQVycXxkjMuJdGcRZ6rOCfy21wUnhi9n8JyeJpLqOSMyYdGzvJLYznvyaZq/hS60zw1p+tSTwyW94QFRc7lyCRn8jXsQw1BKz1e3zPisRm2Yyk5wXLG3Nsnp31PffC/inTPEsBfTpv3qjLwuMOv4enuK3a+db7SdS8A6hpOpJdRSNOPMXy8jjjKsD6g19BafdJfWFvdRf6uaNZF+hGa4cRRjTtKDumfQ5ZjqmIUqVeNpxtf59SxRRRXMeqFcP8QbYTaxokk1pcXNpG0hmWFCxxx6V3FFc+Kw6xFN027bfg7nThcQ8NVVRK+/4qx5lZRalZadrsulabPHp77Db29zHuOc/MwU9eOfypdLiml8SGdVvZI5NOkQyTQeWGfHQAAV6ZRXCsrS5ffdl0+benbc7nmzfN7iu+vyS177XPLBpM6+DdC22Mgu0vt0mIjvA3NyeM46Vphl0fxTrUmradcXSXZBgkSHzAV/u+3b8q9AopxyuMLOEtVbp2TW3ncUs1lO6nHR3692nv5WPOrxf7O8Q6lc32mXE9teWqpbBYd+z5QNmOxrK8WaRewfCSCO4RllgnEzIeqqSRg/TcK9aqK7toru1lt7hA8MqlHU9wa6sHhFhq/tr3309Xd+vl2ODMsQ8dhJYW1rpK/orL08+55L4UtG8RfCa60jT3jN8kvKM2P4ww/MVteJfCOoah4B0nRrZoGvbMxmQF8D7pB5/H9K4rxJ4I13wxfyXWgvdS2hztktmIkQejAc/jXL21z4h+3PJbS6p9sk4ZkZ97ex7mvolT53z05K17/M+BlilQj7DE0XzcvK7PdLZrQ7b42SxK+iaekivcwRHzFXnGdoH54NeseFraSz8N6ZbzAiSO3RWB7HArzLwD8Pr2bUo9X8TBxtYSJDK253bsW9vavYa5MTOKjGlF3se5lVGpOrUxlWPLzWSXkgooorjPbCiiigAooooAKKKKACiiigAowPSiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/9k="
},
{
"id": "9957817d-6289-44b5-9924-f502fb64b431",
"name": "BANCOLDEX",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-a7de-4fb2-8b1d-563d96817e12",
"name": "COOFINEP",
"supported_types": [
"savings",
"checking"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
},
{
"id": "9957817d-a36c-4f38-baeb-bd45854adf5d",
"name": "PIBANK",
"supported_types": [
"savings"
],
"mask": null,
"transaction_avg": null,
"available": true,
"pse": true,
"connection_type": "DATA",
"logo": null,
"instructions": null,
"base64_logo": "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"
}
]
```
# Saldo OnePay de otra empresa
Source: https://docs.onepay.la/client/accounts/onepay-balance
Registra el saldo de una empresa aliada como una cuenta, para dividir cobros hacia ella.
Si divides tus cobros con otra empresa que también usa OnePay —un marketplace repartiendo con sus
vendedores, una plataforma con sus comercios— el dinero puede caer directo en el saldo de esa
empresa, sin pasar por un banco.
Para eso registras su saldo **como una cuenta más de un cliente**. El banco es OnePay y, como número
de cuenta, va el identificador del saldo que la otra empresa te comparte —igual que te compartiría
el número de una cuenta bancaria.
El identificador del saldo lo obtiene la empresa aliada desde su panel, en **Saldos**. No es un
dato que puedas consultar por API: te lo tiene que dar ella, como cualquier número de cuenta.
## 1. Registra a la empresa aliada como cliente
```bash cURL theme={null}
curl -X POST https://api.onepay.la/v1/customers \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"first_name": "Aliado",
"last_name": "SAS",
"user_type": "company",
"document_type": "NIT",
"document_number": "900123456",
"email": "tesoreria@aliado.com",
"phone": "+573001112233"
}'
```
Guarda el `id` que devuelve: es el `customer_id` de los pasos siguientes.
Cuando `user_type` es `company`, el `document_type` debe ser `NIT` o `RUT`.
## 2. Registra su saldo como cuenta
```bash cURL theme={null}
curl -X POST https://api.onepay.la/v1/accounts \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"bank_id": "9c479f02-6664-438d-83de-1103d7880896",
"subtype": "WALLET",
"account_number": "01935679-361b-7160-aeba-7651f0bd4181"
}'
```
`WALLET` identifica una cuenta de saldo OnePay.
El identificador del banco **ONE BANK**. Es siempre el mismo y también lo devuelve
[listar bancos](/client/accounts/list-banks).
El identificador del saldo de la empresa aliada. Se acepta con guiones o sin ellos.
Guarda el `id` de la cuenta: es el `account_id` del split.
### Qué se valida
El saldo destino tiene que existir, pertenecer a una empresa, estar en el mismo entorno que tu
llave y no ser uno tuyo. Si algo no cuadra, la respuesta es un `422` sobre `account_number`.
Un identificador inexistente y uno de otro entorno devuelven el mismo mensaje a propósito, para
que este campo no sirva para averiguar saldos ajenos probando identificadores. Si te rechaza uno
que crees correcto, revisa primero que tu llave y el saldo sean ambos de pruebas o ambos de
producción.
## 3. Divide el cobro
A partir de acá no hay nada especial: es el mismo split que harías hacia cualquier cliente con
cuenta bancaria.
```bash cURL theme={null}
curl -X POST https://api.onepay.la/v1/payments \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 100000,
"splits": [
{
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"account_id": "9e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b",
"split_type": "percentage",
"split_value": 10,
"description": "Comisión marketplace"
}
]
}'
```
El registro de los pasos 1 y 2 se hace **una sola vez** por empresa aliada. Después reutilizas ese
par `customer_id` + `account_id` en todos los cobros.
## Cuándo se acredita
Cuando el cobro queda aprobado, el monto se transfiere del saldo de tu empresa al de la aliada. Es
un movimiento interno: llega al instante, sin pasar por un banco.
Si el cobro se vence, se rechaza o nunca se paga, el split no se ejecuta.
## Migrar desde `to_company_wallet`
El campo `splits[].to_company_wallet` queda **obsoleto**. Si tu integración lo usa, migra al flujo
de esta página.
Antes había que mandar el identificador del saldo ajeno **en cada cobro**:
```json theme={null}
{
"splits": [
{
"to_company_wallet": true,
"account_id": "01935679-361b-7160-aeba-7651f0bd4181",
"split_type": "percentage",
"split_value": 10,
"description": "Comisión marketplace"
}
]
}
```
Con el flujo nuevo ese identificador se registra una vez y desaparece del payload del cobro. Ambas
formas funcionan durante la transición; te avisaremos con antelación antes de retirar la anterior.
# Actualizar cuenta
Source: https://docs.onepay.la/client/accounts/update
PUT /accounts/{account_id}
Actualiza una cuenta bancaria objetivo.
En OnePay no existe un endpoint para “editar” o “actualizar” los datos de una cuenta una vez creada, ya que se trata de información financiera transaccional que debe permanecer inalterable por motivos de trazabilidad y cumplimiento normativo.
De esta forma mantenemos un historial completo de todas las cuentas que el usuario ha registrado, sin modificar registros ya procesados. Si intentamos alterar directamente una cuenta transaccional, perderíamos la integridad de los logs y los movimientos asociados.
## ¿Qué hacer entonces?
Crear una nueva cuenta
1. [Eliminar la cuenta anterior](./delete)
2. [Crear una nueva cuenta con los datos corregidos](./create)
# Validar cuenta
Source: https://docs.onepay.la/client/accounts/validate
POST /accounts/{account_id}/validate
Valida una cuenta bancaria para habilitar débitos automáticos.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Código OTP de 6 dígitos. Requerido para Daviplata, opcional para Nequi.
### Response
```json 200 theme={null}
{
"id": "84cc072e-90e8-33cf-9305-098095fed32f",
"status": "ACTIVE",
"message": "Cuenta validada exitosamente"
}
```
```json 400 theme={null}
{
"message": "OTP inválido o expirado",
"code": 10002,
"code_name": "invalid_otp"
}
```
```json 404 theme={null}
{
"message": "Cuenta no encontrada",
"code": 10004,
"code_name": "not_found"
}
```
# Autenticación
Source: https://docs.onepay.la/client/base/autentication
Autenticación de peticiones en el API
Existen dos tipos de tokens:
* **Llave privada:** Usada para autenticar peticiones a los endpoints de administración.
* **Llave pública:** Usada para autenticar peticiones desde tu frontend, se usan frecuentemente para crear tarjetas o cuentas bancarias de forma segura.
La llave privada no debe ser expuesta, es decir, no debes incluirla en el código fuente de tu aplicación, en su lugar usa la llave pública.
Puede obtener su token visitando el perfil de su panel de control y desplazándose a la sección desarrolladores.
## Ambiente de desarrollo.
Todas las transacciones en el ambiente de desarrollo son simuladas, es decir, no se realizarán cobros, puedes cambiar el ambiente en el que estás trabajando en cualquier momento.
Para cambiar el ambiente, ve a la sección superior derecha y selecciona el ambiente que deseas usar.
## Crear una llave privada.
Una vez creada la llave privada, debes usarla en todas tus peticiones en el encabezado de Autorización:
```json theme={null}
"Authorization": "Bearer {token}"
```
```bash theme={null}
curl https://api.onepay.la/v1/customers \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json"
```
## Idempotency
Un token de idem potencia es un identificador único y aleatorio asociado con una solicitud HTTP específica. Está diseñado para hacer que las solicitudes sean idempotentes, lo que significa que independientemente de cuántas veces se envíe la solicitud, el resultado sigue siendo el mismo. Los tokens de ídem potencia normalmente se incluyen como un encabezado HTTP personalizado en la solicitud.
**Por qué son importantes los tokens de potencia ídem**
**Prevención de solicitudes duplicadas:** en escenarios en los que un cliente puede volver a intentar una solicitud fallida, los tokens de potencia idem garantizan que el servidor no realice la misma acción varias veces.
**Garantizar la coherencia de los datos:** cuando se trata de operaciones que modifican datos, los tokens de potencia idem ayudan a mantener la coherencia de los datos al garantizar que la misma solicitud no produzca resultados diferentes si se ejecuta varias veces.
**Manejo de errores:** los tokens de potencia ídem ayudan a mejorar el manejo de errores al permitir que los servidores reconozcan y manejen solicitudes duplicadas con elegancia.
```json theme={null}
"x-idempotency": "{idempotency}"
```
## Base URL
Ambos entornos tienen la misma URL base y su diferencia radica en el token de autenticación que uses.
Recuerda que debes usar el token correcto para el ambiente que estés utilizando.
Y mantener tu llave privada segura.
```json theme={null}
https://api.onepay.la/v1
```
# Entornos en OnePay
Source: https://docs.onepay.la/client/base/environments
OnePay emplea una arquitectura inspirada en proveedores globales como Stripe, AWS y Twilio, donde tanto el entorno de **producción** como el de **staging** comparten la **misma URL base de API**, pero se diferencian completamente a través de **API Keys** y recursos aislados por entorno.
***
## 1. Enfoque general
En lugar de desplegar dominios distintos (`api-staging.onepay.la` vs `api.onepay.la`), OnePay utiliza un **único dominio** (`api.onepay.la`).\
La identificación del entorno no depende de la URL, sino de la **clave de autenticación** incluida en cada solicitud.
Cada API Key pertenece a un entorno específico:
* Las claves de **staging** se limitan a bases de datos, colas y almacenamiento de prueba.
* Las claves de **producción** acceden exclusivamente a los recursos operativos reales.
Este enfoque elimina la posibilidad de errores de configuración en endpoints, y mantiene un comportamiento idéntico entre ambos entornos, lo cual es clave para paridad de prueba, consistencia de contrato y fiabilidad.
***
## 2. Aislamiento técnico, seguridad y cumplimiento
Aunque la URL sea compartida, los entornos están **totalmente aislados** a nivel lógico e infraestructural:
* Bases de datos separadas, credenciales distintas, colas y buckets independientes.
* Cada solicitud es autenticada y validada mediante el API Key, que determina a qué entorno pertenece antes de acceder al recurso.
* Las credenciales siguen buenas prácticas de seguridad: rotación, mínimos privilegios, logging centralizado. (Ver “API Key Management” más abajo).
Además, este modelo de entornos cumple con estándares de regulaciones de pago y seguridad de datos — por ejemplo, los requisitos de segregación entre datos de prueba y producción que aparecen en entornos regulados como los que deben cumplir las entidades sujetas a PCI DSS.
### 2.1 – API Key Management
* La segmentación de claves por entorno está reconocida como una **mejores práctica**: emitir claves distintas para desarrollo, staging y producción permite limitar el impacto de posibles compromisos.
* Una guía de “Secure API Key Management in Multi-Cloud Environments” enfatiza la necesidad de segregación de entornos mediante credenciales distintas (environment segmentation).
* Al utilizar un solo dominio pero múltiples credenciales, se facilita trazabilidad, monitorización y auditoría por entorno.
### 2.2 – Entorno de Staging como réplica de Producción
Las publicaciones sobre “What is a staging environment?” sugieren que un entorno de staging **debe** aproximarse todo lo posible al entorno de producción — misma configuración, mismas integraciones — pero de forma segura y aislada.
El uso de la misma URL contribuye a esa paridad técnica entre entornos, mientras que la separación lógica garantiza que no se mezclen datos ni responsabilidades.
***
## 3. Ventajas del modelo unificado
1. **Consistencia del API**: mismas rutas, validaciones, respuestas en staging y producción.
2. **Menor fricción para integradores**: el cliente no tiene que cambiar URLs, sólo cambiar sus credenciales (clave).
3. **Seguridad mantenida**: la separación real se da por credenciales, no por dominios, lo que permite controles finos de acceso.
4. **Infraestructura más simple y estable**: un solo pipeline CI/CD, métricas y monitorización comunes; menor divergencia entre entornos.
5. **Reducción de errores humanos**: evita que se apunte por error al “endpoint equivocado” cuando la URL es fija — la clave define entorno.
***
## 4. Prácticas de la industria y evidencia
* En la documentación de API seguridad (“API Security Best Practices”), se señala que la gestión de claves debe permitir la separación por entorno (development, testing, production) para evitar que tráfico de test afecte sistemas reales.
* En la guía de gestión de APIs de 3scale API Management (por Red Hat), se describe la opción de usar un solo endpoint compartido para staging y producción mediante diferentes planes de aplicación (application plans) y límites, validando que “la diferenciación de entornos minimiza el riesgo de que se use la API de producción para pruebas.”
* Estudios académicos sobre APIs en microservicios confirman que la compatibilidad de versión, paridad de entornos y consistencia entre pruebas y producción son factores críticos para mitigar riesgos de integración y despliegue.
# Códigos de error
Source: https://docs.onepay.la/client/base/errors/codes
Códigos de error estándar para el manejo de errores via API.
| Código | Mensaje para el Cliente | Código Numérico |
| ------------------------------------- | ---------------------------------------------------------------------------- | --------------- |
| `INTERNAL_ERROR` | Error interno. Comunícate con soporte para resolver el problema. | `10101` |
| `CARD_CVV` | CVV inválido. | `10102` |
| `INSUFFICIENT_FUNDS` | Fondos insuficientes. | `10103` |
| `CARD_NUMBER` | Número de tarjeta inválido. | `10104` |
| `FRAUDULENT` | Transacción fraudulenta. | `10105` |
| `STOLEN` | Tarjeta reportada, comunícate con el banco. | `10106` |
| `CURRENCY_NOT_SUPPORTED` | Moneda no soportada. | `10107` |
| `CARD_VELOCITY` | Se ha excedido la cantidad de intentos de pago permitidos para esta tarjeta. | `10108` |
| `CARD_DATE` | Fecha de expiración inválida. | `10109` |
| `TRANSACTION_NOT_FOUND` | Transacción no encontrada. | `10110` |
| `MIN_AMOUNT` | El monto de la transacción es menor al mínimo permitido. | `10111` |
| `ACCOUNT_NOT_CONNECTED` | Has desconectado la cuenta, reconéctala nuevamente e intenta el pago. | `10112` |
| `ACCOUNT_BLOCKED` | La cuenta ha sido bloqueada. | `10113` |
| `ACCOUNT_CLOSED` | La cuenta ha sido cerrada. | `10114` |
| `ACCOUNT_DOES_NOT_BELONG_TO_CUSTOMER` | La cuenta no pertenece al documento. | `10115` |
| `TRANSACTION_EXPIRED` | La transacción no ha completado en el tiempo permitido. | `10116` |
| `CARD_GENERIC_ERROR` | Error genérico al procesar el pago, intenta nuevamente en unos minutos. | `10117` |
| `TRANSACTION_REJECTED` | No se aceptó o rechazó la transacción en el banco. | `10118` |
| `UNKNOWN` | Error desconocido. Comunícate con soporte. | `10119` |
| `BANK_IS_NOT_AVAILABLE` | El banco no se encuentra disponible para iniciar la transacción. | `10120` |
| `CARD_RESTRICTED` | Tarjeta restringida, comunícate con el banco. | `10121` |
| `CARD_EXPIRED` | Tarjeta expirada, actualiza la tarjeta. | `10122` |
| `ACCOUNT_IS_NOT_AUTHORIZED` | La cuenta no está autorizada o el cliente no aceptó la suscripción. | `10123` |
| `TRANSACTION_TEMPORALLY_BLOCKED` | Transacción bloqueada temporalmente. | `10124` |
| `ACCOUNT_FAILED` | Esta cuenta no ha sido aceptada. Intente con otra. | `10125` |
| `CUSTOMER_DATA_INVALID` | Datos del cliente inválidos. | `10126` |
| `MAX_AMOUNT` | La transacción supera el monto máximo permitido. | `10127` |
| `DONT_HONOR` | Contacta al banco, la transacción fue rechazada sin detalles. | `10128` |
| `COMPANY_TRANSACTION_LIMIT_COUNT` | Comunícate con la compañía. | `10129` |
| `COMPANY_TRANSACTION_LIMIT_AMOUNT` | Comunícate con la compañía. | `10130` |
| `CUSTOMER_WALLET_NOT_FOUND` | La billetera del cliente no fue encontrada. | `10131` |
| `RISK_CONTROL` | Contacta al banco para resolver el bloqueo por riesgo. | `10132` |
| `ACCOUNT_MAX_AMOUNT` | La transacción supera el monto límite autorizado. | `10133` |
| `ACCOUNT_SERVICE_NOT_AVAILABLE` | La cuenta no tiene el servicio PSE activo. | `10134` |
# Manejo de errores
Source: https://docs.onepay.la/client/base/errors/index
Estandar para el manejo de errores via API.
La API de OnePay utiliza códigos de estado HTTP para indicar la naturaleza de los errores que pueden ocurrir durante el procesamiento de una solicitud. Estos códigos de estado son acompañados por un cuerpo de respuesta estandarizado que proporciona detalles adicionales para facilitar la resolución de problemas. A continuación, se detalla cómo interpretar y manejar estos errores eficazmente.
Formato Estándar de Respuesta de Error
Cuando ocurre un error, la API responde con un código de estado HTTP 4XX y un cuerpo de respuesta en formato JSON estructurado de la siguiente manera:
```json theme={null}
{
"message":"Descripción del error en texto.",
"code":"Código numérico del mensaje de error",
"code_name":"Código en texto para el mensaje de error",
"erros": [
{
"key": "name",
"description": "El campo name, es un campo requerido"
}
]
}
```
* *message*: Proporciona una descripción comprensible del error, diseñada para ser leída por desarrolladores.
* *code*: Un código numérico que identifica de manera única el error específico que ha ocurrido.
* *code\_name*: Un identificador textual que representa el tipo de error, facilitando su rápida identificación sin necesidad de referenciar documentación adicional.
* *errors*: es el resultado del proceso de validación de cada uno de los campos cuando intentas consumir el api.
## Guía para la Resolución de Errores
Los errores devueltos por nuestra API están pensados para ofrecer suficiente información que permita a los desarrolladores identificar y corregir el problema de manera eficiente. A continuación, se ofrecen algunas recomendaciones generales para el manejo de estos errores:
* Análisis del Código de Estado HTTP: Comience por revisar el código de estado HTTP para obtener una comprensión general de la naturaleza del error (p.ej., errores de cliente 4XX, errores de servidor 5XX).
* Revisión del Mensaje de Error: El campo message en la respuesta proporciona una explicación detallada del error. Este debe ser el primer recurso para entender el problema específico.
* Consultar el Código Específico del Error: Utilice el code y code\_name para buscar en la documentación de la API detalles adicionales y posibles soluciones para el error indicado.
* Implementar un manejo de errores detallado y específico no solo mejora la robustez de las integraciones con la API de OnePay, sino que también asegura una experiencia de usuario final más fluida y predecible. Se recomienda a los desarrolladores diseñar sus aplicaciones para que respondan de manera adecuada a los distintos errores, proporcionando retroalimentación útil al usuario final cuando sea necesario.
# Enviar campaña masiva de WhatsApp
Source: https://docs.onepay.la/client/campaigns/import-messages
POST /campaigns/import-messages
Envía una campaña de plantilla de WhatsApp (con header de imagen o video) a una lista de números telefónicos.
Encola una campaña de plantilla de WhatsApp hacia una lista de números telefónicos. Un único parámetro `type` discrimina si la campaña usa un **header de imagen** o de **video**.
El procesamiento es **asíncrono**: el endpoint responde apenas encola los envíos (un job en background por cada teléfono, con rate-limit por canal de WhatsApp). Un `200` significa **"encolado"**, no "entregado".
**Migración:** Este endpoint **reemplaza** al antiguo `POST /campaigns/import-video-messages`, que **fue eliminado**. Los consumidores de video deben migrar a `/campaigns/import-messages` enviando `type: "video"`. Los consumidores de imagen que **no** envían `type` no se ven afectados: el valor por defecto sigue siendo `image` y la respuesta conserva la clave `image_path`.
**Feature flag requerido:** La empresa debe tener habilitada la feature `campaigns`. Si no está habilitada, el endpoint responde `403 Forbidden` con el mensaje "Company does not have this feature."
### Headers
Debe ser `application/json`.
Debe ser `application/json`.
### Body
Tipo de campaña. Valores permitidos: `image`, `video`. Si se omite, el valor por defecto es `image`.
Nombre de la plantilla de WhatsApp **aprobada en Meta/Dialog360** con el header correspondiente al `type`. Debe pertenecer a la lista permitida según el tipo:
* **`type: "image"`** → `sensibilizacion_primera_comunicacion`, `sensibilizacion_primera_comunicacion_v2`.
* **`type: "video"`** → configurables del lado del servidor (actualmente `sensibilizacion_primera_comunicacion_video`, `recordatorio_pago_video_v1`, `promo_video_r1`, `pago_factura_video_push1`).
La plantilla debe estar aprobada en Meta/Dialog360 con el header del tipo correcto (`IMAGE` o `VIDEO`). Un nombre no aprobado falla en Meta aunque el endpoint responda `200`.
URL pública de la imagen para el header del template. **Requerido cuando `type` es `image`** (o cuando se omite). Se ignora si `type` es `video`. El backend descarga la imagen para validarla, por lo que el host debe ser accesible públicamente.
URL pública del MP4 para el header del template. **Requerido cuando `type` es `video`.** Se ignora en cualquier otro caso. El backend descarga el video para validarlo, por lo que el host debe responder al `GET`.
Variable 1 del cuerpo de la plantilla. Para el template `sensibilizacion_primera_comunicacion`, corresponde al nombre de la compañía que envía la campaña.
Variable 2 del cuerpo de la plantilla.
Variable 3 del cuerpo de la plantilla.
Lista de números telefónicos. Mínimo 1 número. Cada uno debe ser un teléfono válido (formato E.164 recomendado, ej: `+573001112233`) de máximo 20 caracteres.
Los valores `optional_1`, `optional_2` y `optional_3` se envían como los parámetros del **cuerpo** de la plantilla, en orden. Los vacíos se descartan.
### Requisitos del archivo multimedia
Los límites siguen las restricciones de la WhatsApp Cloud API. El backend descarga y valida el archivo antes de encolar los envíos.
* **Peso máximo:** 2 MB.
* **Formatos permitidos:** `JPEG` o `PNG`.
* **Dimensiones:** lado más corto **≥ 600 px**, lado más largo **≤ 2048 px**.
* **Relación de aspecto:** `4:3`, `9:16` o `2:3` (tolerancia ±1%).
* El host debe ser accesible: el backend descarga la imagen para validarla.
* **Peso máximo:** 16 MB.
* **Formato:** `video/mp4` únicamente (códec H.264 + AAC recomendado; **`3gp` no se acepta**).
* El host debe responder al `GET`; idealmente enviar `Content-Length` (se usa para el pre-corte rápido de tamaño).
* Debe ser un MP4 válido (se verifica el box `ftyp`).
```bash cURL - Campaña de video theme={null}
curl https://api.onepay.la/v1/campaigns/import-messages \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"type": "video",
"template": "sensibilizacion_primera_comunicacion_video",
"video_url": "https://cdn.tu-dominio.com/clip.mp4",
"optional_1": "Maria",
"phones": [
"+573001112233",
"+573009998877"
]
}'
```
```bash cURL - Campaña de imagen theme={null}
curl https://api.onepay.la/v1/campaigns/import-messages \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"template": "sensibilizacion_primera_comunicacion",
"image_url": "https://cdn.tu-dominio.com/banner.png",
"phones": [
"+573001112233"
]
}'
```
```javascript JavaScript - Campaña de video theme={null}
const response = await fetch('https://api.onepay.la/v1/campaigns/import-messages', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
type: 'video',
template: 'sensibilizacion_primera_comunicacion_video',
video_url: 'https://cdn.tu-dominio.com/clip.mp4',
optional_1: 'Maria',
phones: [
'+573001112233',
'+573009998877'
]
})
});
const result = await response.json();
console.log(result.queued); // Jobs encolados (uno por teléfono)
```
```javascript JavaScript - Campaña de imagen theme={null}
const response = await fetch('https://api.onepay.la/v1/campaigns/import-messages', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
template: 'sensibilizacion_primera_comunicacion',
image_url: 'https://cdn.tu-dominio.com/banner.png',
phones: [
'+573001112233'
]
})
});
const result = await response.json();
console.log(result.queued); // Jobs encolados (uno por teléfono)
```
```python Python - Campaña de video theme={null}
import requests
url = "https://api.onepay.la/v1/campaigns/import-messages"
headers = {
"Authorization": "Bearer sk_test_xxx",
"Content-Type": "application/json",
"Accept": "application/json"
}
data = {
"type": "video",
"template": "sensibilizacion_primera_comunicacion_video",
"video_url": "https://cdn.tu-dominio.com/clip.mp4",
"optional_1": "Maria",
"phones": [
"+573001112233",
"+573009998877"
]
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
print(result["queued"]) # Jobs encolados (uno por teléfono)
```
```python Python - Campaña de imagen theme={null}
import requests
url = "https://api.onepay.la/v1/campaigns/import-messages"
headers = {
"Authorization": "Bearer sk_test_xxx",
"Content-Type": "application/json",
"Accept": "application/json"
}
data = {
"template": "sensibilizacion_primera_comunicacion",
"image_url": "https://cdn.tu-dominio.com/banner.png",
"phones": [
"+573001112233"
]
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
print(result["queued"]) # Jobs encolados (uno por teléfono)
```
```php PHP - Campaña de video theme={null}
"https://api.onepay.la/v1/campaigns/import-messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json",
"Accept: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"type" => "video",
"template" => "sensibilizacion_primera_comunicacion_video",
"video_url" => "https://cdn.tu-dominio.com/clip.mp4",
"optional_1" => "Maria",
"phones" => [
"+573001112233",
"+573009998877"
]
])
]);
$response = curl_exec($ch);
$result = json_decode($response, true);
echo $result["queued"]; // Jobs encolados (uno por teléfono)
curl_close($ch);
?>
```
```php PHP - Campaña de imagen theme={null}
"https://api.onepay.la/v1/campaigns/import-messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json",
"Accept: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"template" => "sensibilizacion_primera_comunicacion",
"image_url" => "https://cdn.tu-dominio.com/banner.png",
"phones" => [
"+573001112233"
]
])
]);
$response = curl_exec($ch);
$result = json_decode($response, true);
echo $result["queued"]; // Jobs encolados (uno por teléfono)
curl_close($ch);
?>
```
### Response
Mensaje de confirmación. Valor: `Campaign queued`.
Tipo de campaña procesada (`image` o `video`).
Nombre de la plantilla utilizada.
Cantidad de jobs encolados (uno por cada teléfono de `phones`).
Ruta de almacenamiento de la imagen descargada. Presente cuando `type` es `image`.
Ruta de almacenamiento del video descargado. Presente cuando `type` es `video`.
Fecha y hora de encolamiento, en formato `YYYY-MM-DD HH:mm:ss`.
```json 200 - Video theme={null}
{
"message": "Campaign queued",
"type": "video",
"template": "sensibilizacion_primera_comunicacion_video",
"queued": 2,
"video_path": "companies/42/campaigns/sensibilizacion/2026-06-24/9f1c2b....mp4",
"date": "2026-06-24 14:05:11"
}
```
```json 200 - Imagen theme={null}
{
"message": "Campaign queued",
"type": "image",
"template": "sensibilizacion_primera_comunicacion",
"queued": 1,
"image_path": "companies/42/campaigns/sensibilizacion/2026-06-24/3a7d9f....png",
"date": "2026-06-24 14:05:11"
}
```
```json 403 theme={null}
{
"message": "Company does not have this feature."
}
```
```json 422 - Imagen theme={null}
{
"message": "La imagen no debe superar los 2 MB.",
"code": 10001,
"code_name": "validation_error",
"errors": {
"image_url": [
"La imagen no debe superar los 2 MB."
]
}
}
```
```json 422 - Video theme={null}
{
"message": "El video no debe superar los 16 MB.",
"code": 10001,
"code_name": "validation_error",
"errors": {
"video_url": [
"El video no debe superar los 16 MB."
]
}
}
```
```json 422 - Phones theme={null}
{
"message": "El campo phones es obligatorio. (y 1 error más)",
"code": 10001,
"code_name": "validation_error",
"errors": {
"template": [
"El template no es válido."
],
"phones": [
"El campo phones es obligatorio."
]
}
}
```
# Crear tarjetas
Source: https://docs.onepay.la/client/cards/create
POST https://cards.onepay.la/v1/cards
Endpoint para registrar una tarjeta de crédito o débito en el sistema de OnePay.
Cambio de dominio para el endpoint de tarjetas: [https://cards.onepay.la/v1/cards](https://cards.onepay.la/v1/cards)
Este cambio se implementa mediante un proxy con el objetivo de mejorar la gestión de la política PCI DSS y garantizar un cumplimiento más seguro y eficiente de los estándares de seguridad en el manejo de datos de tarjetas.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Número de la tarjeta de crédito o débito.
Año de vencimiento en formato de 2 dígitos (ejemplo: `28`).
Mes de vencimiento en formato de 2 dígitos (ejemplo: `08`).
Código de seguridad de la tarjeta.
Nombre completo del titular como aparece en la tarjeta.
ID del cliente dueño de la tarjeta. [Crear cliente](/client/customers/create).
Indica si el usuario ha autorizado débitos automáticos para esta tarjeta.
Datos de autenticación 3D Secure. Envía este campo si realizaste la autenticación 3DS de forma externa.
Cardholder Authentication Verification Value. Criptograma generado por el servidor 3DS.
Electronic Commerce Indicator. Indica el resultado de la autenticación (ejemplo: `05`, `02`, `07`).
Directory Server Transaction ID. Identificador único de la transacción 3DS.
Transaction ID de la autenticación (usado en 3DS 1.0).
Versión del protocolo 3DS utilizado (ejemplo: `2.2.0`).
Estado de la autenticación. Valores comunes: `Y` (autenticado), `A` (intento), `N` (fallido).
```json 200 theme={null}
{
"id":"9e01eeae-2868-4564-9d04-84d1d1d027d2",
"brand":"Mastercard",
"last_four":"8099",
"card_name":"Juan Pérez",
"expiration_date":"2026-09-30T00:00:00.000000Z",
"customer_id":"9df8018b-6a28-4696-b7b2-63615f34a2f5",
"created_at":"2025-01-19T18:29:25.000000Z",
"type":"credit_card",
"country":"CO",
"cvc_check":true,
"verified":true,
"title":"Mastercard • 8099",
"method_type":"credit_card",
"action":{
"action":"NULL",
"next":null
}
}
```
```json 422 theme={null}
{
"message":"El campo customer id es obligatorio. (y 6 errores m\u00e1s)",
"code":10001,
"code_name":"validation_error",
"errors":{
"customer_id":[
"El campo customer id es obligatorio."
],
"card_number":[
"El campo card number es obligatorio."
],
"expiration_year":[
"El campo expiration year es obligatorio."
],
"expiration_month":[
"El campo expiration month es obligatorio."
],
"ccv":[
"El campo ccv es obligatorio."
],
"holder_name":[
"El campo holder name es obligatorio."
],
"authorization":[
"El campo authorization es obligatorio."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
```bash cURL theme={null}
curl https://cards.onepay.la/v1/cards \
-X POST \
-H "Authorization: Bearer pk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: card-001" \
-d '{
"card_number": "4242424242424242",
"expiration_year": "28",
"expiration_month": "12",
"ccv": "123",
"holder_name": "JUAN PEREZ",
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"authorization": true,
"authentication": {
"cavv": "AAABBEg0VhI0VniQEjRWAAAAAAA=",
"eci": "05",
"ds_trans_id": "f25084f0-5b16-4c0a-ae5d-b24808571000",
"version": "2.2.0",
"status": "Y"
}
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://cards.onepay.la/v1/cards', {
method: 'POST',
headers: {
'Authorization': 'Bearer pk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'card-001'
},
body: JSON.stringify({
card_number: '4242424242424242',
expiration_year: '28',
expiration_month: '12',
ccv: '123',
holder_name: 'JUAN PEREZ',
customer_id: '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
authorization: true,
authentication: {
cavv: 'AAABBEg0VhI0VniQEjRWAAAAAAA=',
eci: '05',
ds_trans_id: 'f25084f0-5b16-4c0a-ae5d-b24808571000',
version: '2.2.0',
status: 'Y'
}
})
});
const card = await response.json();
```
```python Python theme={null}
import requests
response = requests.post(
'https://cards.onepay.la/v1/cards',
headers={
'Authorization': 'Bearer pk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'card-001'
},
json={
'card_number': '4242424242424242',
'expiration_year': '28',
'expiration_month': '12',
'ccv': '123',
'holder_name': 'JUAN PEREZ',
'customer_id': '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
'authorization': True,
'authentication': {
'cavv': 'AAABBEg0VhI0VniQEjRWAAAAAAA=',
'eci': '05',
'ds_trans_id': 'f25084f0-5b16-4c0a-ae5d-b24808571000',
'version': '2.2.0',
'status': 'Y'
}
}
)
card = response.json()
```
```php PHP theme={null}
"https://cards.onepay.la/v1/cards",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer pk_test_xxx",
"Content-Type: application/json",
"x-idempotency: card-001"
],
CURLOPT_POSTFIELDS => json_encode([
"card_number" => "4242424242424242",
"expiration_year" => "28",
"expiration_month" => "12",
"ccv" => "123",
"holder_name" => "JUAN PEREZ",
"customer_id" => "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"authorization" => true,
"authentication" => [
"cavv" => "AAABBEg0VhI0VniQEjRWAAAAAAA=",
"eci" => "05",
"ds_trans_id" => "f25084f0-5b16-4c0a-ae5d-b24808571000",
"version" => "2.2.0",
"status" => "Y"
]
])
]);
$response = curl_exec($curl);
$card = json_decode($response, true);
?>
```
# Crear tarjetas tokenizadas
Source: https://docs.onepay.la/client/cards/create-tokenized
POST /cards/tokenized
Endpoint para registrar una tarjeta que ha sido previamente tokenizada por el SDK.
Captura datos sensibles de manera segura y personalizada.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Token temporal generado por el SDK Elements: el valor del campo `number` que devuelve
`tokenize()`. Envíalo inmediatamente después de generarlo; no lo almacenes.
ID del cliente que tokenizó la tarjeta. [Crear cliente](/client/customers/create).
Indica si el usuario ha autorizado débitos automáticos para esta tarjeta.
Datos de autenticación 3D Secure. Envía este campo si realizaste la autenticación 3DS de forma externa.
Cardholder Authentication Verification Value. Criptograma generado por el servidor 3DS.
Electronic Commerce Indicator. Indica el resultado de la autenticación (ejemplo: `05`, `02`, `07`).
Directory Server Transaction ID. Identificador único de la transacción 3DS.
Transaction ID de la autenticación (usado en 3DS 1.0).
Versión del protocolo 3DS utilizado (ejemplo: `2.2.0`).
Estado de la autenticación. Valores comunes: `Y` (autenticado), `A` (intento), `N` (fallido).
```json 200 theme={null}
{
"id":"9e01eeae-2868-4564-9d04-84d1d1d027d2",
"brand":"Mastercard",
"last_four":"8099",
"card_name":"Juan Pérez",
"expiration_date":"2026-09-30T00:00:00.000000Z",
"customer_id":"9df8018b-6a28-4696-b7b2-63615f34a2f5",
"created_at":"2025-01-19T18:29:25.000000Z",
"type":"credit_card",
"country":"CO",
"cvc_check":true,
"verified":true,
"title":"Mastercard • 8099",
"method_type":"credit_card",
"action":{
"action":"NULL",
"next":null
}
}
```
```json 422 theme={null}
{
"message":"El campo card token es obligatorio. (y 2 errores más)",
"code":10001,
"code_name":"validation_error",
"errors":{
"card_token":[
"El campo card token es obligatorio."
],
"customer_id":[
"El campo customer id es obligatorio."
],
"authorization":[
"El campo authorization es obligatorio."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
```bash cURL theme={null}
curl https://api.onepay.la/v1/cards/tokenized \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: tokenized-card-001" \
-d '{
"card_token": "3f484621-29da-4632-954a-150953707e78",
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"authorization": true,
"authentication": {
"cavv": "AAABBEg0VhI0VniQEjRWAAAAAAA=",
"eci": "05",
"ds_trans_id": "f25084f0-5b16-4c0a-ae5d-b24808571000",
"version": "2.2.0",
"status": "Y"
}
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/cards/tokenized', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'tokenized-card-001'
},
body: JSON.stringify({
card_token: '3f484621-29da-4632-954a-150953707e78',
customer_id: '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
authorization: true,
authentication: {
cavv: 'AAABBEg0VhI0VniQEjRWAAAAAAA=',
eci: '05',
ds_trans_id: 'f25084f0-5b16-4c0a-ae5d-b24808571000',
version: '2.2.0',
status: 'Y'
}
})
});
const card = await response.json();
```
```python Python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/cards/tokenized',
headers={
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'tokenized-card-001'
},
json={
'card_token': '3f484621-29da-4632-954a-150953707e78',
'customer_id': '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
'authorization': True,
'authentication': {
'cavv': 'AAABBEg0VhI0VniQEjRWAAAAAAA=',
'eci': '05',
'ds_trans_id': 'f25084f0-5b16-4c0a-ae5d-b24808571000',
'version': '2.2.0',
'status': 'Y'
}
}
)
card = response.json()
```
```php PHP theme={null}
"https://api.onepay.la/v1/cards/tokenized",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json",
"x-idempotency: tokenized-card-001"
],
CURLOPT_POSTFIELDS => json_encode([
"card_token" => "3f484621-29da-4632-954a-150953707e78",
"customer_id" => "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"authorization" => true,
"authentication" => [
"cavv" => "AAABBEg0VhI0VniQEjRWAAAAAAA=",
"eci" => "05",
"ds_trans_id" => "f25084f0-5b16-4c0a-ae5d-b24808571000",
"version" => "2.2.0",
"status" => "Y"
]
])
]);
$response = curl_exec($curl);
$card = json_decode($response, true);
?>
```
# Eliminar tarjeta
Source: https://docs.onepay.la/client/cards/delete
DELETE /cards/{card_id}
Endpoint para eliminar una tarjeta de crédito o débito en el sistema de OnePay.
### Parámetros de Ruta
ID de la tarjeta tokenizada. [Registrar tarjetas](/client/cards/create).
```json 204 theme={null}
No content
```
```json 404 theme={null}
{
"message": "Registro no encontrado, CreditCard no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Detalle tarjeta
Source: https://docs.onepay.la/client/cards/detail
GET /cards/{card_id}
Endpoint para obtener los detalles de una tarjeta de crédito o débito registrada en OnePay.
ID de la tarjeta tokenizada. [Ver cómo registrar tarjetas](/client/cards/create).
```bash theme={null}
curl https://api.onepay.la/v1/cards/bb02b2fd-154c-4c90-9fdf-cec3a0b25cf5 \
-H "Authorization: Bearer sk_test_xxx"
```
```ts theme={null}
const response = await fetch(
'https://api.onepay.la/v1/cards/bb02b2fd-154c-4c90-9fdf-cec3a0b25cf5',
{
headers: {
'Authorization': 'Bearer sk_test_xxx',
},
}
);
const card = await response.json();
```
```python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/cards/bb02b2fd-154c-4c90-9fdf-cec3a0b25cf5',
headers={'Authorization': 'Bearer sk_test_xxx'},
)
card = response.json()
```
Identificador único de la tarjeta (UUID).
Marca de la tarjeta. Valores posibles: `Visa`, `Mastercard`, `Amex`, `Diners`.
Etiqueta de la tarjeta en formato `Marca • últimos 4 dígitos`.
Últimos 4 dígitos de la tarjeta.
Fecha de expiración en formato `MM/YYYY`.
ID del cliente (guest) al que pertenece la tarjeta.
Fecha de creación en formato ISO 8601.
Código de país de emisión de la tarjeta (ISO 3166-1 alpha-2).
```json 200 theme={null}
{
"id": "9e01eeae-2868-4564-9d04-84d1d1d027d2",
"brand": "Mastercard",
"label": "Mastercard • 8099",
"last_four": "8099",
"expiration_date": "9/2026",
"customer_id": "9df8018b-6a28-4696-b7b2-63615f34a2f5",
"created_at": "2025-01-19T18:29:25.000000Z",
"country": "CO"
}
```
```json 404 theme={null}
{
"message": "Tarjeta no encontrada",
"code": 10004,
"code_name": "not_found"
}
```
# Introducción
Source: https://docs.onepay.la/client/cards/index
Gestiona las tarjetas de tus clientes.
## ¿Qué es una Tarjeta?
Una tarjeta es un método de pago registrado a nombre de un [cliente](/client/customers/index). Permite realizar cargos (débitos directos) a tarjetas de crédito o débito autorizadas.
Las tarjetas se crean en un dominio diferente (`cards.onepay.la`) por cumplimiento PCI DSS. OnePay cuenta con certificación **PCI DSS Nivel 1**.
## ¿Cuándo usar tarjetas?
| Escenario | Solución |
| -------------------------------------------------------- | ------------------------------------------------------------------------- |
| Cobrar con un link de pago (el cliente elige cómo pagar) | Usa [Payments](/client/payments/index), no necesitas registrar tarjeta |
| Debitar automáticamente una tarjeta autorizada | Registra la tarjeta y crea un [Charge](/client/charges/index) |
| Cobros recurrentes (suscripciones) | Registra la tarjeta y crea una [Suscripción](/client/subscriptions/index) |
| Capturar datos de tarjeta de forma segura en tu frontend | Usa [Elements SDK](/docs/elements/index) para tokenizar |
## Ejemplo rápido
```bash theme={null}
curl https://cards.onepay.la/v1/cards \
-X POST \
-H "Authorization: Bearer pk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"card_number": "4242424242424242",
"expiration_year": "29",
"expiration_month": "12",
"ccv": "123",
"holder_name": "MARIA LOPEZ",
"customer_id": "CUSTOMER_ID",
"authorization": true,
"authentication": {
"cavv": "AAABBEg0VhI0VniQEjRWAAAAAAA=",
"eci": "05",
"version": "2.2.0",
"status": "Y"
}
}'
```
Si capturas datos de tarjeta directamente en tu backend, debes cumplir con PCI DSS. Usa el [SDK Elements](/docs/elements/introduction) para capturar datos de forma segura desde el frontend.
## Ambientes
Usa API keys diferentes para cada ambiente:
* **Test** (`pk_test_`): Registra tarjetas de prueba para validar tu integración.
* **Producción** (`pk_live_`): Registra tarjetas reales para transacciones efectivas.
## 3DS (3D Secure)
OnePay permite enviar datos de autenticación 3D Secure al registrar una tarjeta vía API. Si realizas la autenticación 3DS de forma externa (por ejemplo, con tu propio servidor 3DS), puedes enviar el criptograma resultante en el campo `authentication` al crear la tarjeta. Los datos de autenticación se almacenan y se envían automáticamente al proveedor de pago cuando se procese un cobro con esa tarjeta.
El campo `authentication` es opcional. Si no realizas autenticación 3DS externa, simplemente omítelo.
## Tarjetas de prueba (exitosas)
| Número | Marca | CVV | Fecha de vencimiento |
| ---------------- | ------------------ | -------------------- | ---------------------- |
| 4242424242424242 | Visa Crédito | 3 dígitos cualquiera | Cualquier fecha futura |
| 4000056655665556 | Visa Débito | 3 dígitos cualquiera | Cualquier fecha futura |
| 5555555555554444 | Mastercard Crédito | 3 dígitos cualquiera | Cualquier fecha futura |
| 5200828282828210 | Mastercard Débito | 3 dígitos cualquiera | Cualquier fecha futura |
## Tarjetas de prueba (declinadas)
| Número | Marca | CVV | Fecha | Resultado |
| ---------------- | ------------------ | --------- | ------ | --------------------- |
| 4000000000000002 | Visa Crédito | 3 dígitos | Futura | Fondos insuficientes |
| 4000000000009995 | Visa Crédito | 3 dígitos | Futura | Tarjeta robada |
| 5555555555555557 | Mastercard Crédito | 3 dígitos | Futura | Transacción rechazada |
| 5200828282828211 | Mastercard Crédito | 3 dígitos | Futura | Expirada |
| 4000000000000101 | Visa Crédito | 3 dígitos | Futura | Fallo genérico |
## Personalización del checkout
Si buscas una experiencia embebida y personalizada en tu frontend, usa los [Elementos de captura de datos sensibles](/docs/elements/index) para tokenizar tarjetas sin manejar datos PCI directamente.
## Endpoints
| Método | Endpoint | Descripción |
| -------- | ------------------------------------ | ------------------------------------------------------------------------ |
| `POST` | [/cards](create) | Registrar tarjeta |
| `POST` | [/cards/tokenized](create-tokenized) | Registrar tarjeta tokenizada con [Elements](/docs/elements/introduction) |
| `GET` | [/cards](list) | Listar tarjetas |
| `GET` | [/cards/](detail) | Detalle de una tarjeta |
| `DELETE` | [/cards/](delete) | Eliminar tarjeta |
# Listar tarjetas
Source: https://docs.onepay.la/client/cards/list
GET /cards
Endpoint para obtener las tarjetas tokenizadas registradas en tu empresa.
### Query Parameters
Filtra tarjetas por ID de cliente.
Ordenamiento por fecha de creación. Usa `created_at` para ascendente y `-created_at` para descendente (más reciente primero).
Cantidad de resultados por página.
Número de página para paginación.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/cards \
-X GET \
-H "Authorization: Bearer sk_test_xxx"
```
Con filtro por cliente:
```bash theme={null}
curl "https://api.onepay.la/v1/cards?filter[customer_id]=9dd4158b-0e45-42bc-b56f-a4c1f856814d" \
-X GET \
-H "Authorization: Bearer sk_test_xxx"
```
```ts theme={null}
const response = await fetch('https://api.onepay.la/v1/cards?filter[customer_id]=9dd4158b-0e45-42bc-b56f-a4c1f856814d', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx',
},
});
const data = await response.json();
```
```python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/cards',
params={'filter[customer_id]': '9dd4158b-0e45-42bc-b56f-a4c1f856814d'},
headers={'Authorization': 'Bearer sk_test_xxx'},
)
data = response.json()
```
### Response
Lista de tarjetas.
UUID de la tarjeta tokenizada.
Marca de la tarjeta (`Mastercard`, `Visa`, etc.).
Etiqueta legible, por ejemplo `Mastercard • 8099`.
Últimos 4 dígitos de la tarjeta.
Fecha de vencimiento en formato `MM/YYYY`, por ejemplo `9/2026`.
UUID del cliente al que pertenece la tarjeta.
Fecha de creación en formato ISO 8601.
Código de país donde fue registrada la tarjeta, por ejemplo `CO`.
Página actual.
Índice del primer registro en la página actual.
Última página disponible.
Cantidad de registros por página.
Índice del último registro en la página actual.
Total de tarjetas.
### Ejemplo de respuesta
```json 200 theme={null}
{
"data": [
{
"id": "9e01eeae-2868-4564-9d04-84d1d1d027d2",
"brand": "Mastercard",
"label": "Mastercard • 8099",
"last_four": "8099",
"expiration_date": "9/2026",
"customer_id": "9df8018b-6a28-4696-b7b2-63615f34a2f5",
"created_at": "2025-01-19T18:29:25.000000Z",
"country": "CO"
},
{
"id": "9e01eeae-4569-4564-9d04-84d1d1d027a3",
"brand": "Visa",
"label": "Visa • 4242",
"last_four": "4242",
"expiration_date": "12/2027",
"customer_id": "9df8018b-6a28-4696-b7b2-63615f34a2f5",
"created_at": "2025-01-20T10:15:30.000000Z",
"country": "CO"
}
],
"current_page": 1,
"from": 1,
"last_page": 3,
"per_page": 15,
"to": 15,
"total": 42
}
```
# Crear dispersión
Source: https://docs.onepay.la/client/cashouts/create
POST /cashouts
Endpoint para registrar una dispersión en el sistema de OnePay.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Monto de la dispersión en **unidades mayores de la moneda**, no en centavos. Enviar `100000`
dispersa \$100.000 COP.
ID de la cuenta bancaria registrada. [Aprende a registrar cuentas](/client/accounts/create).
ID del cliente beneficiario. [Crea primero el cliente](/client/customers/create).
Descripción de la dispersión (entre 10 y 100 caracteres). Alimenta el título que viaja al
banco destino y se devuelve en la respuesta y en los webhooks `cashout.*`.
Referencia propia para conciliar (máx. 50 caracteres). Si no la envías, se usa el valor de
`description` como referencia.
Concepto de la dispersión, entre 10 y 100 caracteres. Es el texto que viaja al banco como
descripción de la transferencia; si lo omites se envía `Transferencia de fondos`.
Si no envías `reference`, la descripción también se guarda como referencia. Es el comportamiento
histórico del endpoint y se mantiene por compatibilidad.
Identificador externo de la dispersión, máximo 100 caracteres. Es el único de los tres que se
devuelve en la respuesta.
Moneda de la dispersión.
Método de dispersión.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/cashouts \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cashout-001" \
-d '{
"amount": 1000000,
"currency": "COP",
"customer_id": "9b7c5f38-b2b5-4b0d-8e4c-458192e88eae",
"account_id": "9d0ac58c-2226-4f1c-b305-15e6dc3b47f6",
"description": "Pago de nómina julio",
"reference": "FACT-2026-001",
"method": "ACH",
"external_id": "PAYROLL-2391"
}'
```
```ts theme={null}
const payload = {
amount: 1000000,
currency: 'COP',
customer_id: '9b7c5f38-b2b5-4b0d-8e4c-458192e88eae',
account_id: '9d0ac58c-2226-4f1c-b305-15e6dc3b47f6',
description: 'Pago de nómina julio',
reference: 'FACT-2026-001',
method: 'ACH',
external_id: 'PAYROLL-2391'
};
await fetch('https://api.onepay.la/v1/cashouts', {
method: 'POST',
headers: {
Authorization: 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'cashout-001'
},
body: JSON.stringify(payload)
});
```
```python theme={null}
import requests
payload = {
"amount": 1000000,
"currency": "COP",
"customer_id": "9b7c5f38-b2b5-4b0d-8e4c-458192e88eae",
"account_id": "9d0ac58c-2226-4f1c-b305-15e6dc3b47f6",
"description": "Pago de nómina julio",
"reference": "FACT-2026-001",
"method": "ACH",
"external_id": "PAYROLL-2391"
}
response = requests.post(
"https://api.onepay.la/v1/cashouts",
headers={
"Authorization": "Bearer sk_test_xxx",
"x-idempotency": "cashout-001"
},
json=payload,
timeout=15
)
response.raise_for_status()
print(response.json())
```
### Response
Identificador único de la dispersión.
Cliente beneficiario.
Cuenta bancaria donde se enviará el dinero.
Monto en unidades mayores de la moneda, no en centavos.
Moneda de la dispersión.
Estado actual (`pending`, `processing`, `processed`, `failed`).
Canal utilizado (`ACH`, `TURBO`).
Fecha de programación si existe.
Identificador externo que enviaste en la creación.
Descripción que enviaste en la creación.
Referencia de conciliación. Si no enviaste `reference`, aquí llega el valor de `description`.
Fecha de creación del registro.
```json 200 theme={null}
{
"id":"9d44ce43-a227-4566-b107-5a6bc01cbcdf",
"customer_id":"9b7c5f38-b2b5-4b0d-8e4c-458192e88eae",
"account_id":"9d0ac58c-2226-4f1c-b305-15e6dc3b47f6",
"is_test":false,
"amount":1000,
"status":"processed",
"scheduled_at":null,
"created_at":"2024-10-17T18:07:18.000000Z",
"external_id":null,
"description":"Pago de nómina",
"reference":"NOM-2026-07",
"method":"ACH",
"discount_to_destination":false
}
```
```json 422 theme={null}
{
"message":"El campo customer id es obligatorio. (y 4 errores más)",
"code":10001,
"code_name":"validation_error",
"errors":{
"customer_id":[
"El campo customer id es obligatorio."
],
"account_id":[
"El campo account id es obligatorio."
],
"amount":[
"El campo cantidad es obligatorio."
],
"currency":[
"El campo currency es obligatorio."
],
"method":[
"El campo method es obligatorio."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Cancelar dispersión
Source: https://docs.onepay.la/client/cashouts/delete
DELETE /cashouts/{cashout_id}
Endpoint para cancelar una dispersión en el sistema de OnePay.
### Parámetros de Ruta
ID de la dispersión que deseas cancelar. [Crear dispersión](/client/cashouts/create).
```json 204 theme={null}
No content
```
```json 422 theme={null}
{
"message":"No se puede cancelar la transacci\u00f3n",
"code":41002,
"code_name":"cant_be_cancelled"
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Transferencia no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Detalle dispersión
Source: https://docs.onepay.la/client/cashouts/detail
GET /cashouts/{cashout_id}
Endpoint para obtener los detalles de una dispersión en el sistema de OnePay.
ID de la dispersión creada previamente. [Ver cómo crear una dispersión](/client/cashouts/create).
```bash cURL theme={null}
curl https://api.onepay.la/v1/cashouts/9d44ce43-a227-4566-b107-5a6bc01cbcdf \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const cashoutId = '9d44ce43-a227-4566-b107-5a6bc01cbcdf';
const response = await fetch(`https://api.onepay.la/v1/cashouts/${cashoutId}`, {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const cashout = await response.json();
console.log(cashout.status); // Estado de la dispersión
```
```python Python theme={null}
import requests
cashout_id = "9d44ce43-a227-4566-b107-5a6bc01cbcdf"
url = f"https://api.onepay.la/v1/cashouts/{cashout_id}"
headers = {
"Authorization": "Bearer sk_test_xxx"
}
response = requests.get(url, headers=headers)
cashout = response.json()
print(cashout["status"]) # Estado de la dispersión
```
```php PHP theme={null}
"https://api.onepay.la/v1/cashouts/{$cashoutId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($ch);
$cashout = json_decode($response, true);
echo $cashout["status"]; // Estado de la dispersión
curl_close($ch);
?>
```
```json theme={null}
{
"id":"9d44ce43-a227-4566-b107-5a6bc01cbcdf",
"customer_id":"9b7c5f38-b2b5-4b0d-8e4c-458192e88eae",
"account_id":"9d0ac58c-2226-4f1c-b305-15e6dc3b47f6",
"is_test":false,
"amount":1000,
"status":"processed",
"scheduled_at":null,
"created_at":"2024-10-17T18:07:18.000000Z",
"external_id":null,
"description":"Pago de nómina",
"reference":"NOM-2026-07",
"method":"ACH",
"discount_to_destination":false
}
```
# Introducción
Source: https://docs.onepay.la/client/cashouts/index
Envía dinero a cuentas bancarias y billeteras digitales de tus clientes.
## ¿Qué es una Dispersión?
Una dispersión (cashout) permite enviar dinero desde tu saldo en OnePay a la cuenta bancaria o billetera digital de un tercero. Es el flujo inverso al cobro: en lugar de recibir dinero, lo envías.
Para cobrar dinero a un cliente, usa [Payments](/client/payments/index) (link de pago) o [Charges](/client/charges/index) (débito directo).
## ¿Cuándo usar Dispersiones?
* Pago a proveedores
* Dispersión de nómina
* Reembolsos a clientes
* Pagos de marketplace a vendedores
* Retiros de billetera
## Tipos de dispersión
| Tipo | Velocidad | Cobertura | Ideal para |
| --------- | ---------- | ------------------------------------ | ------------------------------------------ |
| **Turbo** | 30-120 min | Bancos principales + Nequi/Daviplata | Pagos urgentes, experiencia en tiempo real |
| **ACH** | 8-36 horas | 28+ entidades financieras | Pagos masivos, nómina, mayor cobertura |
## Ejemplo rápido
```bash theme={null}
curl https://api.onepay.la/v1/cashouts \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: disp-001" \
-d '{
"customer_id": "CUSTOMER_ID",
"account_id": "ACCOUNT_ID",
"amount": 150000,
"description": "Pago proveedor Enero"
}'
```
## Tiempos de procesamiento (Turbo)
| Banco | Operación | Tiempo promedio | Tiempo máximo | Restricciones |
| --------------- | --------- | --------------- | ------------- | -------------------------------------------- |
| Bancolombia | 24/7 | 30 min | 120 min | |
| Davivienda | 24/7 | 30 min | 120 min | |
| BBVA | Lun-Vie | 60 min | 180 min | Solo 6:00 a 19:00 |
| Daviplata | 24/7 | 60 min | 120 min | |
| Nequi | 24/7 | 60 min | 120 min | Pagos de 10PM a 6AM se procesan a las 6AM |
| Banco de Bogotá | 24/7 | 60 min | 120 min | Pagos de 20:30 a 3:45 se procesan a las 4:00 |
| Grupo Aval | Lun-Vie | 60 min | 120 min | Solo 6:00 a 17:30 |
## Estados de una dispersión
```mermaid theme={null}
stateDiagram-v2
[*] --> scheduled: Creación programada
[*] --> to_process: Creación inmediata
scheduled --> to_process: Llega la fecha
scheduled --> cancelled: Cancelación
to_process --> processing: Inicio de procesamiento
to_process --> require_approval: Requiere aprobación
to_process --> cancelled: Cancelación
require_approval --> to_process: Aprobado
require_approval --> cancelled: Rechazado
processing --> processed: Éxito
processing --> failed: Error
processed --> [*]
failed --> [*]
cancelled --> [*]
```
| Estado | Descripción |
| ------------------ | ------------------------------------------------ |
| `scheduled` | Programada para procesarse en una fecha futura |
| `to_process` | Lista para ser procesada |
| `require_approval` | Requiere aprobación manual (según configuración) |
| `processing` | En proceso de transferencia |
| `processed` | Transferencia exitosa |
| `failed` | Error en la transferencia |
| `cancelled` | Cancelada antes de procesarse |
## Endpoints
| Método | Endpoint | Descripción |
| ------ | -------------------- | ------------------------- |
| `POST` | [/cashouts](create) | Crear dispersión |
| `GET` | [/cashouts](list) | Listar dispersiones |
| `GET` | [/cashouts/](detail) | Detalle de una dispersión |
# Listar dispersiones
Source: https://docs.onepay.la/client/cashouts/list
GET /cashouts
Obtén las dispersiones registradas en tu compañía con filtros y paginación.
### Parámetros de consulta
Página que deseas consultar.
Registros por página (máx. 100).
ID único de la dispersión
Estado de la dispersión
Moneda de la dispersión
Monto de la dispersión
Título de la dispersión
Referencia de la dispersión
Nombre del cliente
Número de documento de identidad del cliente
Ordena los resultados (`created_at | -created_at | processed_at | -processed_at | scheduled_at | -scheduled_at | amount | -amount`).
```bash cURL theme={null}
curl https://api.onepay.la/v1/cashouts?page=1&per_page=50&filter[status]=processed&sort=-created_at \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/cashouts?page=1&per_page=50&filter[status]=processed&sort=-created_at', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data.data); // Array de dispersiones
console.log(data.total); // Total de dispersiones
```
```python Python theme={null}
import requests
url = "https://api.onepay.la/v1/cashouts"
headers = {
"Authorization": "Bearer sk_test_xxx"
}
params = {
"page": 1,
"per_page": 50,
"filter[status]": "processed",
"sort": "-created_at"
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(data["data"]) # Array de dispersiones
print(data["total"]) # Total de dispersiones
```
```php PHP theme={null}
1,
"per_page" => 50,
"filter" => ["status" => "processed"],
"sort" => "-created_at"
]);
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data["data"]); // Array de dispersiones
echo $data["total"]; // Total de dispersiones
curl_close($ch);
?>
```
### Response
Listado de dispersiones.
Número de la página actual
URL para acceder a la primera página de resultados
Índice inicial del primer elemento en la página actual
URL para acceder a la siguiente página de resultados. Será `null` si es la última página
URL base de la API sin los parámetros de paginación
Cantidad de elementos por página
URL para acceder a la página anterior. Será `null` si es la primera página
Índice final del último elemento en la página actual
```json theme={null}
{
"data":[
{
"id":"9d44ce43-a227-4566-b107-5a6bc01cbcdf",
"customer_id":"9b7c5f38-b2b5-4b0d-8e4c-458192e88eae",
"account_id":"9d0ac58c-2226-4f1c-b305-15e6dc3b47f6",
"is_test":false,
"amount":1000,
"status":"processed",
"scheduled_at":null,
"created_at":"2024-10-17T18:07:18.000000Z",
"external_id":null,
"description":"Pago de nómina",
"reference":"NOM-2026-07",
"method":"ACH",
"discount_to_destination":false
},
{
"id":"9d18ade4-1607-4ef4-9d9d-8a40fb9e0aef",
"customer_id":"9d18ad3b-782f-4448-b2fb-bd17b1420a91",
"account_id":null,
"is_test":false,
"amount":1,
"status":"processed",
"scheduled_at":null,
"created_at":"2024-09-25T19:40:21.000000Z",
"external_id":null,
"description":null,
"reference":null,
"method":"TURBO",
"discount_to_destination":false
}
],
"current_page":1,
"from":1,
"last_page":16,
"per_page":50,
"to":50,
"total":756
}
```
# Crear un QR (Bre-B)
Source: https://docs.onepay.la/client/charges/bre-b
POST /charges/bre-b
Endpoint para crear un código QR para pagos con Bre-B.
Este endpoint permite generar un código QR para recibir pagos a través del sistema BRE-B (Banco de la República). El cliente escanea el código QR desde su aplicación bancaria para completar el pago.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Monto a cobrar en pesos colombianos. Mínimo: 1000 COP.
ID del cliente que realizará el pago. Opcional. [Crear cliente](/client/customers/create).
Título descriptivo del pago. Por defecto: "Pago BRE-B".
Descripción detallada del pago.
Identificador único del pago en tu sistema.
Tiempo de expiración del QR en minutos. Mínimo: 5, Máximo: 64800 (45 días). Por defecto: 15 minutos.
El campo `qr.image` contiene la imagen del código QR en formato base64. Debes mostrarla al usuario para que la escanee desde su aplicación bancaria.
```html theme={null}
```
```json 201 theme={null}
{
"id": "9e184fda-62bb-477b-9020-fa59f44f2b99",
"source": "Pago BRE-B",
"currency": "COP",
"amount": 15000,
"amount_label": "$15.000",
"title": "Pago BRE-B",
"description": null,
"phone": null,
"expiration_at": null,
"due_date": null,
"timely_payment_date": null,
"document_link": null,
"external_id": "order-123",
"allows": null,
"status": "pending",
"is_test": false,
"created_at": "2026-01-30T15:30:00.000000Z",
"paid_at": null,
"payment_link": null,
"redirect_url": null,
"provider_id": null,
"qr": {
"image": "data:image/png;base64,iVBORw0KGgoAAAANS...",
"string": "00020101021226ABC123...",
"id": "ABC123DEF456789"
},
"key": {
"alias": "@A1B2C3D4",
"id": "9e184fda-1234-5678-9020-fa59f44f2b99"
},
"expires_at": "2026-01-30T15:45:00.000000Z",
"expires_in_seconds": 900,
"customer": {
"id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"first_name": "Juan",
"last_name": "Pérez",
"email": "juan@example.com",
"phone": "+573001234567",
"document_type": "CC",
"document_number": "1234567890",
"created_at": "2026-01-15T10:00:00.000000Z",
"is_test": false
}
}
```
```json 422 theme={null}
{
"message": "El campo cantidad es obligatorio.",
"code": 10001,
"code_name": "validation_error",
"errors": {
"amount": [
"El campo cantidad es obligatorio."
]
}
}
```
```json 503 theme={null}
{
"message": "No se pudo generar el código QR. Intente nuevamente.",
"code": 90100,
"code_name": "qr_generation_failed"
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
### Campos de respuesta
| Campo | Tipo | Descripción |
| -------------------- | ------- | -------------------------------------------- |
| `id` | string | ID único del pago |
| `qr.image` | string | Imagen del QR en base64 |
| `qr.string` | string | Contenido del QR como texto |
| `qr.id` | string | ID del QR en el sistema BRE-B |
| `key.alias` | string | Alias de la llave BRE-B (ej: @A1B2C3D4) |
| `key.id` | string | ID interno de la llave |
| `expires_at` | string | Fecha y hora de expiración (ISO 8601) |
| `expires_in_seconds` | integer | Segundos restantes hasta la expiración |
| `status` | string | Estado del pago: `pending`, `paid`, `failed` |
### Flujo de pago
1. Tu sistema llama a este endpoint para generar el QR
2. Muestra el QR al cliente
3. El cliente escanea el QR desde su app bancaria
4. El banco procesa el pago
5. OnePay envía un [webhook](/client/webhooks/charges) con el resultado
6. Tu sistema actualiza el estado del pedido
### Expiración
El QR tiene un tiempo de vida configurable mediante el parámetro `expires_in`:
* **Mínimo**: 5 minutos
* **Máximo**: 64800 minutos (45 días)
* **Por defecto**: 15 minutos
Una vez expirado, el QR ya no puede ser usado para realizar pagos y el cargo se marcará como `failed`.
# Cancelar cargo
Source: https://docs.onepay.la/client/charges/cancel
POST /charges/{charge_id}/cancel
Endpoint para cancelar un cargo en el sistema de OnePay.
Cancela un cargo que se encuentre en estado `created` o `processing`. Al cancelar, el cargo cambia a estado `failed` con el motivo `CANCELLED_BY_MERCHANT`.
Solo se pueden cancelar cargos en estado **creado** (`created`) o **procesando** (`processing`). Si el cargo ya fue pagado, reembolsado o falló, no podrá ser cancelado.
ID del cargo a cancelar. [Crear cargo](/client/charges/create).
```bash cURL theme={null}
curl https://api.onepay.la/v1/charges/9e02966f-2ddf-4ee7-a391-5b5b7653e232/cancel \
-X POST \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const chargeId = '9e02966f-2ddf-4ee7-a391-5b5b7653e232';
const response = await fetch(`https://api.onepay.la/v1/charges/${chargeId}/cancel`, {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data);
```
```python Python theme={null}
import requests
charge_id = "9e02966f-2ddf-4ee7-a391-5b5b7653e232"
url = f"https://api.onepay.la/v1/charges/{charge_id}/cancel"
headers = {
"Authorization": "Bearer sk_test_xxx"
}
response = requests.post(url, headers=headers)
data = response.json()
print(data)
```
```php PHP theme={null}
"https://api.onepay.la/v1/charges/{$chargeId}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data);
curl_close($ch);
?>
```
### Respuesta
ID único del cargo cancelado.
Estado del cargo después de la cancelación. Siempre será `failed`.
Lista de observaciones del cargo. Incluirá `CANCELLED_BY_MERCHANT`.
```json 200 theme={null}
{
"id": "9e02966f-2ddf-4ee7-a391-5b5b7653e232",
"status": "failed",
"remarks": ["CANCELLED_BY_MERCHANT"]
}
```
```json 403 theme={null}
{
"message": "Forbidden"
}
```
```json 422 theme={null}
// charge_not_cancellable
{
"message": "El cargo no se puede cancelar, solo cargos en estado creado o procesando pueden ser cancelados",
"code": 10808,
"code_name": "charge_not_cancellable"
}
```
# Crear cargo
Source: https://docs.onepay.la/client/charges/create
POST /charges
Endpoint para crear un cargo en el sistema de OnePay.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Descripción del cargo en el estado de cuenta del banco
ID del cliente que asumirá el cargo. [Crear cliente](/client/customers/create).
Monto del cargo en **unidades mayores de la moneda**, no en centavos. Enviar `100000` con `currency: "COP"` cobra \$100.000 COP.
Versiones anteriores de esta página decían "centavos". Era un error de la documentación: el
comportamiento del endpoint no ha cambiado. Si tu integración multiplicaba por 100 para
compensar, estabas cobrando 100 veces el monto previsto.
La unidad es la misma para toda moneda y país. No la confundas con
[`POST /customer-session/charges`](/client/customer-session/create-charge), que sí recibe centavos.
ID de la cuenta bancaria registrada. [Ver creación de cuentas](/client/accounts/create). Requerido si `card_id` está vacío.
ID de la tarjeta tokenizada. [Conoce cómo registrar tarjetas](/client/cards/create). Requerido si `account_id` está vacío.
Número de cuotas para el cargo. Opcional (útil para flujos VIP).
Valores permitidos: `1` a `36`.
Valor por defecto: `1`.
Moneda del cargo
URL de redirección
ID único de tu sistema para correlacionar el cargo con tus registros internos. Este campo te permite rastrear el cargo cuando lleguen los eventos de webhook.
* **Longitud:** 1 a 100 caracteres
* **Opcional:** Si no se proporciona, el campo será `null`
* **Aparece en:** el response de creación, los webhooks `charge.*` bajo `charge.external_id`, y
los webhooks `wallet.transaction.created` de los movimientos que genere el cobro
Este campo es útil para asociar el cargo con tu ID de factura, orden, o cualquier otro identificador de tu sistema.
Los pagos divididos permiten distribuir automáticamente un único pago entre múltiples destinatarios según reglas preestablecidas, optimizando la gestión de fondos sin necesidad de cálculos manuales o costos adicionales.
ID del cliente beneficiario del split. [Ver clientes](/client/customers/create).
Tipo de distribución:
* `percentage` — Porcentaje entero del monto total (`10` = 10%)
* `fixed` — Monto fijo en unidades mayores de la moneda (no en centavos)
Si el total de splits supera el 100% del monto o excede el monto total, la operación será rechazada.
Valor del split según el tipo:
* Si `split_type` es `percentage`: porcentaje entero (`5` = 5%, `100` = 100%)
* Si `split_type` es `fixed`: monto en la misma unidad que `amount` (unidades mayores, no centavos)
Versiones anteriores de esta página describían el porcentaje "en centésimas" (`10000` = 100%).
Era un error: la suma de los splits de tipo `percentage` no puede pasar de `100`, así que
esos valores se rechazan con un 422.
Descripción interna del split.
ID de la cuenta donde se recibirá el split. Si no se especifica, se usa la cuenta principal del cliente.
Para dividir hacia otra empresa que usa OnePay, registra su saldo como una cuenta y usa ese
`account_id`. [Ver la guía](/client/accounts/onepay-balance).
Forma anterior de dividir hacia el saldo de otra empresa: `true` y el identificador del saldo
ajeno en `account_id`, en cada cobro.
Obsoleto. Registra ese saldo como una cuenta del cliente y usa `customer_id` + `account_id`
como en cualquier otro split. [Cómo migrar](/client/accounts/onepay-balance#migrar-desde-to-company-wallet).
Ambas formas funcionan durante la transición.
Fecha programada para realizar el split (`YYYY-MM-DD HH:mm:ss`). Si es `null`, se ejecuta de inmediato.
Escenario de prueba para el cargo \[Opcional].
[Ver escenarios de prueba](/client/charges/scenarios)
**Métodos de pago permitidos**
El método de pago disponible depende de la configuración de tu cuenta. Comunícate con el equipo de soporte para habilitar métodos adicionales.
| Método | Campo requerido | Descripción |
| ------------------------- | --------------- | ----------------------------------------------- |
| Cuenta bancaria (ACH) | `account_id` | Débito directo desde cuenta bancaria registrada |
| Tarjeta de crédito/débito | `card_id` | Cargo a tarjeta tokenizada |
Solo uno de los dos (`account_id` o `card_id`) debe estar presente en la petición.
```bash cURL - Cargo con tarjeta theme={null}
curl https://api.onepay.la/v1/charges \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: charge-card-001" \
-d '{
"title": "Mensualidad Enero 2025",
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"amount": 85000,
"card_id": "9e01eeae-2868-4564-9d04-84d1d1d027d2",
"installments": 3,
"currency": "COP",
"external_id": "invoice-2025-001"
}'
```
```bash cURL - Cargo con cuenta bancaria theme={null}
curl https://api.onepay.la/v1/charges \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: charge-account-001" \
-d '{
"title": "Cuota mensual",
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"amount": 200000,
"account_id": "84cc072e-90e8-33cf-9305-098095fed32f",
"currency": "COP",
"external_id": "subscription-456"
}'
```
```javascript JavaScript - Cargo con tarjeta theme={null}
const response = await fetch('https://api.onepay.la/v1/charges', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'charge-card-001'
},
body: JSON.stringify({
title: 'Mensualidad Enero 2025',
customer_id: '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
amount: 85000,
card_id: '9e01eeae-2868-4564-9d04-84d1d1d027d2',
installments: 3,
currency: 'COP',
external_id: 'invoice-2025-001'
})
});
const charge = await response.json();
```
```javascript JavaScript - Cargo con cuenta bancaria theme={null}
const response = await fetch('https://api.onepay.la/v1/charges', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'charge-account-001'
},
body: JSON.stringify({
title: 'Cuota mensual',
customer_id: '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
amount: 200000,
account_id: '84cc072e-90e8-33cf-9305-098095fed32f',
currency: 'COP',
external_id: 'subscription-456'
})
});
const charge = await response.json();
```
```python Python - Cargo con tarjeta theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/charges',
headers={
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'charge-card-001'
},
json={
'title': 'Mensualidad Enero 2025',
'customer_id': '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
'amount': 85000,
'card_id': '9e01eeae-2868-4564-9d04-84d1d1d027d2',
'installments': 3,
'currency': 'COP',
'external_id': 'invoice-2025-001'
}
)
charge = response.json()
```
```python Python - Cargo con cuenta bancaria theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/charges',
headers={
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'charge-account-001'
},
json={
'title': 'Cuota mensual',
'customer_id': '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
'amount': 200000,
'account_id': '84cc072e-90e8-33cf-9305-098095fed32f',
'currency': 'COP',
'external_id': 'subscription-456'
}
)
charge = response.json()
```
```php PHP - Cargo con tarjeta theme={null}
"https://api.onepay.la/v1/charges",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json",
"x-idempotency: charge-card-001"
],
CURLOPT_POSTFIELDS => json_encode([
"title" => "Mensualidad Enero 2025",
"customer_id" => "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"amount" => 85000,
"card_id" => "9e01eeae-2868-4564-9d04-84d1d1d027d2",
"installments" => 3,
"currency" => "COP",
"external_id" => "invoice-2025-001"
])
]);
$response = curl_exec($curl);
$charge = json_decode($response, true);
?>
```
```php PHP - Cargo con cuenta bancaria theme={null}
"https://api.onepay.la/v1/charges",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json",
"x-idempotency: charge-account-001"
],
CURLOPT_POSTFIELDS => json_encode([
"title" => "Cuota mensual",
"customer_id" => "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"amount" => 200000,
"account_id" => "84cc072e-90e8-33cf-9305-098095fed32f",
"currency" => "COP",
"external_id" => "subscription-456"
])
]);
$response = curl_exec($curl);
$charge = json_decode($response, true);
?>
```
### Response
La respuesta describe el **cobro** (`payment`), que es el recurso que agrupa los intentos de pago.
Por eso `status` usa los estados de cobro (`approved`, `pending`, `declined`) y no los del intento
(`paid`, `failed`).
ID del cobro. Es el que se usa en [`GET /charges/{id}`](/client/charges/detail) y en
[`DELETE /charges/{id}`](/client/charges/cancel).
Aunque el endpoint se llame `/charges`, **este `id` no es el que llega en los webhooks
`charge.*`**. Para casar la respuesta con el webhook usa `charge_id`.
ID del intento de pago. Es el mismo `charge.id` que viaja en los webhooks `charge.*`, así que
te permite correlacionar esta respuesta con el webhook posterior sin depender del `external_id`.
Es `null` mientras no exista un intento asociado.
ID del cliente al que se atribuye el cobro.
En modo prueba este campo devuelve el cliente de pruebas de OnePay
(`9940779b-533c-4406-b1f6-e0c92e8ab087`, "Joe Cruz Mesa"), no el `customer_id` que enviaste, y
el objeto `customer` de esta misma respuesta también es el de pruebas. Es intencional y solo
ocurre en sandbox: en producción se conserva el cliente real.
Para saber a qué cliente se atribuye el cobro en pruebas, usa el objeto `customer` del webhook
`charge.paid`, que sí trae siempre el que enviaste.
El identificador de tu sistema, tal como lo enviaste.
**El webhook puede llegar antes que esta respuesta.** El cobro se procesa de forma síncrona, así
que el webhook `charge.paid` suele emitirse unos segundos antes de que se cierre la petición HTTP.
No construyas tu flujo asumiendo que la respuesta llega primero: trata el webhook como la fuente
de verdad y usa `external_id` o `charge_id` para casarlos.
```json 200 theme={null}
{
"id": "9e02966f-2ddf-4ee7-a391-5b5b7653e232",
"title": "Test Charge",
"amount": 1000,
"amount_label": "$1.000",
"source": "charge",
"status": "declined",
"currency": "COP",
"payment_method_type": "Account",
"payment_method_id": "4dc959d0-d96a-377a-823e-5e05cfde896f",
"created_at": "2025-01-20T02:18:29.000000Z",
"paid_at": null,
"remarks": {
"code": "INTERNAL_ERROR",
"description": "Error interno. Comunícate con soporte para resolver el problema."
},
"is_test": true,
"network_id": null,
"external_id": "invoice-2025-001",
"customer_id": "9940779b-533c-4406-b1f6-e0c92e8ab087",
"charge_id": "9e02966f-60e2-71e4-bac1-b402b281e27e",
"method": {
"id": "4dc959d0-d96a-377a-823e-5e05cfde896f",
"title": "Dr.",
"subtype": "SAVINGS",
"status": "PENDING",
"authorization": true,
"customer_id": "9940779b-533c-4406-b1f6-e0c92e8ab087",
"re_enroll": false,
"external_id": null,
"bank_id": "9e02966e-8d60-49b0-ad66-372bf73c4a54",
"bank": {
"id": "9e02966e-8d60-49b0-ad66-372bf73c4a54",
"name": "Hoeger PLC",
"logo": null
}
},
"customer": {
"id": "9940779b-533c-4406-b1f6-e0c92e8ab087",
"first_name": "Joe",
"last_name": "Cruz Mesa",
"email": "hola@onepay.ai",
"phone": "+12518057105",
"document_type": "CC",
"document_number": "930232",
"created_at": "2025-01-20T02:18:29.000000Z",
"is_test": true
},
"splits": [
{
"id": "9e02966f-3204-4e50-9fb7-b8bc0214a93b",
"customer_id": "9940779b-533c-4406-b1f6-e0c92e8ab087",
"split_type": "percentage",
"split_value": 300,
"description": "Test Split",
"created_at": "2025-01-20T02:18:29.000000Z",
"scheduled_at": null,
"account_id": "4dc959d0-d96a-377a-823e-5e05cfde896f"
}
]
}
```
```json 422 theme={null}
{
"message":"El campo cantidad es obligatorio. (y 2 errores más)",
"code":10001,
"code_name":"validation_error",
"errors":{
"amount":[
"El campo cantidad es obligatorio."
],
"title":[
"El campo título es obligatorio."
],
"customer_id":[
"El campo customer id es obligatorio."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Detalle cargo
Source: https://docs.onepay.la/client/charges/detail
GET /charges/{charge_id}
Endpoint para obtener los detalles de un cargo en el sistema de OnePay.
ID del cargo generado previamente. [Ver cómo crear un cargo](/client/charges/create).
```json 200 theme={null}
{
"id": "9e028bd9-755f-4069-8742-7727d0dc4047",
"title": "recusandae placeat et",
"amount": 1000,
"amount_label": "$1.000",
"source": "charge",
"status": "pending",
"currency": "COP",
"payment_method_type": "CreditCard",
"payment_method_id": "9e028bd9-74b0-4eda-a121-ab3d59909ce7",
"created_at": "2025-01-20T01:48:54.000000Z",
"paid_at": null,
"remarks": null,
"is_test": true,
"method": {
"id": "9e028bd9-74b0-4eda-a121-ab3d59909ce7",
"brand": "Visa",
"label": "Visa ·3158",
"last_four": "3158",
"expiration_date": "1/2027",
"customer_id": "9e028bd9-7387-4f2b-83f0-c820931b53e5",
"created_at": "2025-01-20T01:48:54.000000Z",
"country": "CO"
},
"customer": {
"id": "9e028bd9-7387-4f2b-83f0-c820931b53e5",
"first_name": "Mathew",
"last_name": "Dicki",
"email": "",
"phone": "+14586224518",
"document_type": "CC",
"document_number": "96600",
"created_at": "2025-01-20T01:48:54.000000Z",
"is_test": false
}
}
```
# Introducción
Source: https://docs.onepay.la/client/charges/index
Gestiona los débitos y cargos autorizados de tus clientes.
## ¿Qué es un Cargo (Charge)?
Un cargo es un **débito directo** a un método de pago que el cliente ya autorizó previamente (tarjeta o cuenta bancaria). El cobro se ejecuta automáticamente sin que el cliente tenga que interactuar.
Si necesitas que el cliente abra un link y elija cómo pagar, usa [Cobros (Payments)](/client/payments/index) en su lugar.
## ¿Cuándo usar Cargos?
* Cobros recurrentes a tarjetas o cuentas autorizadas
* Suscripciones y membresías
* Débitos automáticos programados
* Pagos donde ya tienes un método de pago registrado
## Cobros vs Cargos
| | Cobro (Payment) | Cargo (Charge) |
| --------------------------- | ----------------------- | --------------------------------------------- |
| **Interacción del cliente** | Abre un link y paga | Ninguna, es automático |
| **Requiere** | Solo `amount` y `title` | `customer_id` + `card_id` o `account_id` |
| **Autorización previa** | No | Sí (`authorization: true` al crear el método) |
| **Ideal para** | Pagos únicos, facturas | Cobros recurrentes, suscripciones |
## Flujo de un cargo
1. **Crear un cliente** - [POST /customers](/client/customers/create)
2. **Registrar un método de pago con autorización** - [POST /cards](/client/cards/create) o [POST /accounts](/client/accounts/create) con `authorization: true`
3. **Crear el cargo** - `POST /charges` con el `customer_id` y `card_id` o `account_id`
## Ejemplo rápido
```bash theme={null}
curl https://api.onepay.la/v1/charges \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cargo-001" \
-d '{
"title": "Mensualidad Enero",
"customer_id": "CUSTOMER_ID",
"amount": 85000,
"card_id": "CARD_ID"
}'
```
## Estados del cargo
| Estado | Descripción |
| ----------- | --------------------------------------------------------------- |
| `succeeded` | Cargo procesado exitosamente |
| `declined` | Cargo rechazado (fondos insuficientes, tarjeta bloqueada, etc.) |
| `pending` | Cargo en proceso de verificación |
## Probar con escenarios
En ambiente test, usa el campo `test_scenario` para simular diferentes resultados:
```json theme={null}
{
"test_scenario": "INSUFFICIENT_FUNDS"
}
```
Consulta todos los [escenarios de prueba](scenarios) disponibles.
## Casos de uso detallados
Consulta los [casos de uso de débitos automáticos](/client/use-cases/charges) para ver el flujo completo de captura, tokenización y cobro con cada método de pago (tarjetas, cuentas bancarias, Nequi y Daviplata).
## Endpoints
| Método | Endpoint | Descripción |
| ------ | ---------------------------- | ----------------------------- |
| `POST` | [/charges](create) | Crear cargo |
| `GET` | [/charges](list) | Listar cargos |
| `GET` | [/charges/](detail) | Detalle de un cargo |
| `POST` | [/charges/pse](link) | Crear link de pago PSE |
| `POST` | [/charges/breb](bre-b) | Crear cargo Bre-B |
| `POST` | [/charges//refund](refund) | Reembolsar cargo |
| `POST` | [/charges//resolve](resolve) | Resolver cargo (solo testing) |
# Crear un link de pago (PSE)
Source: https://docs.onepay.la/client/charges/link
POST charges/pse
Endpoint para registrar un cargo en el sistema de OnePay.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
ID del cliente al que se enviará el link. [Crear cliente](/client/customers/create).
Monto que vas a cobrar
Identificador único del banco.
Identificador único del pago.
URL de retorno.
**Protección automática contra duplicados.** Si envías la misma combinación de `customer_id`, `bank_id` y `amount` dentro de los 2 minutos siguientes a un pago PSE anterior, recibirás `HTTP 429` con el `previous_payment_id` del pago en curso para que puedas reusar ese flujo. Variar `external_id`, `redirect_url` o `reference` no esquiva la protección — los reintentos sobre la misma operación seguirán bloqueados.
```json 200 theme={null}
{
"id": "9e184fda-62bb-477b-9020-fa59f44f2b99",
"url": "https://s.onepay.la/short/lxNKQp2je8"
}
```
```json 422 theme={null}
{
"message":"El campo cantidad es obligatorio. (y 2 errores m\u00e1s)",
"code":10001,
"code_name":"validation_error",
"errors":{
"amount":[
"El campo cantidad es obligatorio."
],
"bank_id":[
"El campo bank id es obligatorio."
],
"customer_id":[
"El campo customer id es obligatorio."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
```json 429 theme={null}
{
"message": "Ya existe un pago PSE en proceso para esta misma operación. Espera a que el cliente complete el flujo actual o a que expire antes de reintentar.",
"code": 15005,
"code_name": "pse_payment_duplicate",
"previous_payment_id": "9e184fda-62bb-477b-9020-fa59f44f2b99",
"previous_payment_created_at": "2026-05-13T08:25:14-05:00",
"time_elapsed_seconds": 42
}
```
# Listar cargos
Source: https://docs.onepay.la/client/charges/list
GET /charges
Endpoint para obtener los cargos registrados en el sistema de OnePay.
**También disponible vía `QUERY`.** Para sacar los filtros de la URL, este endpoint acepta el método `QUERY`: los mismos parámetros van en el cuerpo JSON en vez de la query string. Ver la [guía del método QUERY](/guides/metodo-query) para ejemplos. El `GET` sigue funcionando igual.
ID único del cargo
Estado del cargo
Fecha de creación del cargo
Moneda del cargo
Monto exacto del cargo, en unidades mayores de la moneda (no en centavos), igual que el `amount` con el que lo creaste.
Título del cargo
Tipo de método de pago
Identificador externo que asignaste al crear el cargo. La búsqueda es por coincidencia exacta y sólo devuelve cargos de tu empresa.
ID del cliente al que se atribuye el cargo. Coincidencia exacta.
Es la forma de saber qué cobros corresponden a un cliente final. El dinero de un cobro con
tarjeta entra al balance de **tu empresa**, no al del cliente, así que los movimientos de saldo
no llevan esa atribución: vive en el cobro.
Orden de los resultados, \[-created\_at | created\_at | -paid\_at | paid\_at]
Número de página a consultar. Por defecto es 1.
```bash cURL theme={null}
curl https://api.onepay.la/v1/charges?page=1&filter[status]=pending&sort=-created_at \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/charges?page=1&filter[status]=pending&sort=-created_at', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data.data); // Array de cargos
console.log(data.total); // Total de cargos
```
```python Python theme={null}
import requests
url = "https://api.onepay.la/v1/charges"
headers = {
"Authorization": "Bearer sk_test_xxx"
}
params = {
"page": 1,
"filter[status]": "pending",
"sort": "-created_at"
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(data["data"]) # Array de cargos
print(data["total"]) # Total de cargos
```
```php PHP theme={null}
1,
"filter" => ["status" => "pending"],
"sort" => "-created_at"
]);
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data["data"]); // Array de cargos
echo $data["total"]; // Total de cargos
curl_close($ch);
?>
```
```json 200 theme={null}
{
"data": [
{
"id": "9e028bd9-755f-4069-8742-7727d0dc4047",
"title": "recusandae placeat et",
"amount": 1000,
"amount_label": "$1.000",
"source": "charge",
"status": "pending",
"currency": "COP",
"payment_method_type": "CreditCard",
"payment_method_id": "9e028bd9-74b0-4eda-a121-ab3d59909ce7",
"created_at": "2025-01-20T01:48:54.000000Z",
"paid_at": null,
"remarks": null,
"is_test": true
}
],
"current_page": 1,
"from": 1,
"last_page": 5,
"per_page": 15,
"to": 15,
"total": 75
}
```
# Reembolsar cargo
Source: https://docs.onepay.la/client/charges/refund
POST /charges/{charge_id}/refund
Endpoint para reembolsar un cargo en el sistema de OnePay.
### Headers
Token único para garantizar la idempotencia de la petición
ID del cargo a reembolsar. [Crear cargo](/client/charges/create).
```bash cURL theme={null}
curl https://api.onepay.la/v1/charges/9e02966f-2ddf-4ee7-a391-5b5b7653e232/refund \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "x-idempotency: refund-001"
```
```javascript JavaScript theme={null}
const chargeId = '9e02966f-2ddf-4ee7-a391-5b5b7653e232';
const response = await fetch(`https://api.onepay.la/v1/charges/${chargeId}/refund`, {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'x-idempotency': 'refund-001'
}
});
if (response.status === 204) {
console.log('Reembolso exitoso');
}
```
```python Python theme={null}
import requests
charge_id = "9e02966f-2ddf-4ee7-a391-5b5b7653e232"
url = f"https://api.onepay.la/v1/charges/{charge_id}/refund"
headers = {
"Authorization": "Bearer sk_test_xxx",
"x-idempotency": "refund-001"
}
response = requests.post(url, headers=headers)
if response.status_code == 204:
print("Reembolso exitoso")
```
```php PHP theme={null}
"https://api.onepay.la/v1/charges/{$chargeId}/refund",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"x-idempotency: refund-001"
]
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode === 204) {
echo "Reembolso exitoso";
}
curl_close($ch);
?>
```
```json 204 theme={null}
no content
```
```json 422 theme={null}
// charge_is_test
{
"message":"El cargo es de prueba, no se puede reembolsar",
"code":10806,
"code_name":"charge_is_test",
}
// charge_refunded
{
"message":"El cargo ya ha sido reembolsado, no se puede volver a reembolsar",
"code":10805,
"code_name":"charge_refunded",
}
// charge_is_not_paid
{
"message":"El cargo no ha sido pagado, no se puede reembolsar",
"code":10807,
"code_name":"charge_is_not_paid",
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Resolver cargo (Testing)
Source: https://docs.onepay.la/client/charges/resolve
POST /charges/{charge_id}/resolve
Aprueba o rechaza manualmente un cargo de prueba en estado processing o created.
Este endpoint solo funciona con cargos de prueba (`is_test: true`). Si intentas resolver un cargo de producción, recibirás un error `403`.
Permite simular la respuesta de un gateway de pago para cargos que quedaron en estado `processing` o `created` en ambiente de pruebas.
### ¿Cuándo usarlo?
Cuando creas un cargo en sandbox y el resultado es `processing` (por ejemplo, con cuentas bancarias que no tienen un patrón de auto-aprobación), puedes usar este endpoint para completar el flujo manualmente — simulando que el gateway responde aprobando o rechazando la transacción.
ID del cargo o `source_id` del cargo a resolver. Debe estar en estado `processing` o `created`.
Acción a ejecutar sobre el cargo. Valores válidos:
* `approve` - Aprueba el cargo (transición a `paid`)
* `reject` - Rechaza el cargo (transición a `failed`)
Motivo del rechazo. **Requerido cuando `action` es `reject`**.
Acepta cualquier código de los [escenarios de prueba](/client/charges/scenarios), por ejemplo:
* `INSUFFICIENT_FUNDS` - Fondos insuficientes
* `RISK_CONTROL` - Bloqueado por control de riesgo
* `CARD_EXPIRED` - Tarjeta expirada
* `TRANSACTION_REJECTED` - Rechazado por el banco
Consulta la lista completa en [escenarios de prueba](/client/charges/scenarios).
### Aprobar un cargo
```bash cURL theme={null}
curl https://api.onepay.la/v1/charges/9e02966f-2ddf-4ee7-a391-5b5b7653e232/resolve \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"action": "approve"
}'
```
```javascript JavaScript theme={null}
const chargeId = '9e02966f-2ddf-4ee7-a391-5b5b7653e232';
const response = await fetch(`https://api.onepay.la/v1/charges/${chargeId}/resolve`, {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
action: 'approve'
})
});
const data = await response.json();
console.log(data.status); // "paid"
```
```python Python theme={null}
import requests
charge_id = "9e02966f-2ddf-4ee7-a391-5b5b7653e232"
url = f"https://api.onepay.la/v1/charges/{charge_id}/resolve"
response = requests.post(url, headers={
"Authorization": "Bearer sk_test_xxx",
"Content-Type": "application/json"
}, json={
"action": "approve"
})
data = response.json()
print(data["status"]) # "paid"
```
```php PHP theme={null}
"https://api.onepay.la/v1/charges/{$chargeId}/resolve",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"action" => "approve"
])
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
echo $data["status"]; // "paid"
curl_close($ch);
?>
```
### Rechazar un cargo con motivo
```bash theme={null}
curl https://api.onepay.la/v1/charges/9e02966f-2ddf-4ee7-a391-5b5b7653e232/resolve \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"action": "reject",
"remarks": "RISK_CONTROL"
}'
```
```json 200 Aprobado theme={null}
{
"id": "9e02966f-2ddf-4ee7-a391-5b5b7653e232",
"status": "paid",
"remarks": null,
"paid_at": "2026-02-20T17:14:00.000000Z"
}
```
```json 200 Rechazado theme={null}
{
"id": "9e02966f-2ddf-4ee7-a391-5b5b7653e232",
"status": "failed",
"remarks": {
"code": "RISK_CONTROL",
"description": "La transacción ha sido bloqueada por el control de riesgo del banco.",
"customer_description": "La transacción ha sido bloqueada por el banco. Comunícate con tu banco para resolver el problema."
},
"paid_at": null
}
```
```json 403 Cargo no es de prueba theme={null}
{
"message": "This endpoint is only available for test charges."
}
```
```json 422 Estado no resoluble theme={null}
{
"message": "Only charges in processing or created status can be resolved."
}
```
```json 422 Remarks requerido theme={null}
{
"message": "The remarks field is required when action is reject.",
"errors": {
"remarks": ["The remarks field is required when action is reject."]
}
}
```
# Escenarios de prueba
Source: https://docs.onepay.la/client/charges/scenarios
Simula diferentes resultados de transacciones en ambiente de pruebas.
## Escenarios de prueba
Los escenarios de prueba te permiten simular diferentes resultados de transacciones para verificar el comportamiento de tu integración antes de pasar a producción.
### ¿Cómo usarlos?
Al crear un cargo con `POST /charges`, envía el campo `test_scenario` con el código del escenario que quieres simular:
```bash theme={null}
curl https://api.onepay.la/v1/charges \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: test-scenario-001" \
-d '{
"title": "Prueba de error",
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"amount": 50000,
"card_id": "9e5ccd4a-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"test_scenario": "INSUFFICIENT_FUNDS"
}'
```
Los escenarios de prueba solo funcionan con llaves de ambiente **test** (`sk_test_`). En producción, el campo `test_scenario` es ignorado.
### Escenarios disponibles
#### Errores de tarjeta
| Escenario | Descripción |
| -------------------- | ---------------------------------------- |
| `CARD_NUMBER` | Número de tarjeta inválido |
| `CARD_EXPIRED` | Tarjeta expirada |
| `CARD_DATE` | Fecha de expiración inválida |
| `CARD_CVV` | Código de seguridad (CVV) incorrecto |
| `CARD_VELOCITY` | Tarjeta bloqueada por exceso de intentos |
| `CARD_GENERIC_ERROR` | Error genérico de tarjeta |
| `CARD_RESTRICTED` | Tarjeta restringida por el emisor |
#### Errores de fondos y fraude
| Escenario | Descripción |
| -------------------- | ------------------------------------ |
| `INSUFFICIENT_FUNDS` | Fondos insuficientes en la cuenta |
| `FRAUDULENT` | Transacción marcada como fraudulenta |
| `STOLEN` | Tarjeta reportada como robada |
#### Errores de cuenta bancaria
| Escenario | Descripción |
| ------------------------------------- | ---------------------------------------------- |
| `ACCOUNT_NOT_CONNECTED` | Cuenta no vinculada o sin autorización |
| `ACCOUNT_BLOCKED` | Cuenta bloqueada por el banco |
| `ACCOUNT_CLOSED` | Cuenta cerrada |
| `ACCOUNT_FAILED` | Error al procesar la cuenta |
| `ACCOUNT_IS_NOT_AUTHORIZED` | La cuenta no está autorizada para débitos |
| `ACCOUNT_DOES_NOT_BELONG_TO_CUSTOMER` | La cuenta no pertenece al cliente especificado |
#### Errores de transacción
| Escenario | Descripción |
| -------------------------------- | ------------------------------------------ |
| `TRANSACTION_NOT_FOUND` | Transacción no encontrada en el procesador |
| `TRANSACTION_EXPIRED` | Transacción expirada por tiempo |
| `TRANSACTION_REJECTED` | Transacción rechazada por el banco |
| `TRANSACTION_TEMPORALLY_BLOCKED` | Transacción bloqueada temporalmente |
#### Errores generales
| Escenario | Descripción |
| ------------------------ | ----------------------------------------- |
| `INTERNAL_ERROR` | Error interno del sistema |
| `CURRENCY_NOT_SUPPORTED` | Moneda no soportada |
| `MIN_AMOUNT` | Monto menor al mínimo permitido |
| `MAX_AMOUNT` | Monto mayor al máximo permitido |
| `BANK_IS_NOT_AVAILABLE` | Banco no disponible en este momento |
| `CUSTOMER_DATA_INVALID` | Datos del cliente inválidos o incompletos |
| `UNKNOWN` | Error desconocido |
# Crear empresa
Source: https://docs.onepay.la/client/companies/create
POST /companies
Crea una nueva empresa asociada a tu cuenta. Los usuarios con permiso switch_company serán vinculados automáticamente como miembros.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Tipo de empresa. Valores permitidos: `organization` (persona jurídica), `individual` (persona natural).
Nombre comercial de la empresa (2-255 caracteres).
Razón social de la empresa (2-255 caracteres).
Tipo de documento. Para `organization`: `NIT`, `RUT`. Para `individual`: `CC`, `CE`, `PPT`, `PEP`, `PASSPORT`.
Número de documento de identidad (5-30 caracteres).
Número de teléfono en formato E.164 (ejemplo: `+573001234567`).
Correo electrónico de la empresa.
Sitio web de la empresa (URL válida).
Código de actividad económica CIIU (4 dígitos).
Código de industria (4 dígitos).
Rango de ventas anuales en millones COP. Valores permitidos: `10`, `35`, `110`, `240`, `500`.
Lista de códigos de responsabilidades fiscales DIAN (ejemplo: `["O_47", "R_99_PN"]`).
Reglas de retención aplicables a la empresa.
Agente retenedor de IVA.
Agente retenedor de ICA.
Agente retenedor de renta (retención en la fuente).
ID de la ciudad donde opera la empresa. Consulta el [endpoint de ciudades](/client/companies/list-cities) para obtener los IDs válidos.
Dirección de la empresa.
Dirección principal (2-255 caracteres).
Información adicional (oficina, piso, etc.).
Código postal (5-9 dígitos).
URLs de los documentos legales de la empresa. Cada URL debe ser accesible públicamente para su descarga.
URL del RUT de la empresa.
URL del certificado de cámara de comercio. Requerido si `type` es `organization`.
URL del documento de identidad del representante legal.
URL de la certificación bancaria. Requerido si `type` es `organization`.
URL del certificado de régimen simple. Requerido si `O_47` está en `fiscal_responsibilities`.
Información del representante legal. Requerido si `type` es `organization`.
Nombre del representante legal.
Apellido del representante legal.
Teléfono del representante en formato E.164.
Correo electrónico del representante.
Tipo de documento del representante: `cc` o `ce`.
Número de documento del representante.
Cuenta bancaria para dispersiones. Opcional.
Tipo de cuenta: `SAVINGS` (ahorros) o `CHECKING` (corriente).
UUID del banco. Consulta el [endpoint de bancos](/client/accounts/list-banks) para obtener los IDs válidos.
Número de cuenta bancaria (5-40 caracteres).
Aceptación de los términos y condiciones.
Solo en ambiente **test** (`sk_test_`): fuerza el resultado de la verificación de la empresa. Con `VERIFIED` recibirás el webhook `company.verified` y con `REJECTED` el webhook `company.rejected` en los endpoints suscritos a tu entorno de pruebas. En producción el campo es ignorado.
Los usuarios de tu empresa que tengan el permiso `switch_company` serán vinculados automáticamente como miembros de la nueva empresa.
### Simular la verificación en pruebas
La verificación de una empresa (revisión de documentos y validación de identidad) ocurre fuera de la API y su resultado se notifica por [webhook](/client/webhooks/index): `company.verified` o `company.rejected`. En ambiente test esa revisión no se ejecuta, así que usa `test_scenario` para forzar el resultado y probar tu integración. El body es el mismo del alta normal, más el campo `test_scenario`:
```bash cURL theme={null}
curl https://api.onepay.la/v1/companies \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: company-test-001" \
-d '{
"type": "organization",
"name": "Acme Inc",
"legal_name": "Acme Inc S.A.S",
"document_type": "NIT",
"document_number": "123456789-1",
"phone": "+573001234567",
"email": "contacto@acme.co",
"website": "https://acme.co",
"economic_activity": "0111",
"sales": 35,
"fiscal_responsibilities": ["R_99_PN"],
"city_id": 1,
"address": {
"address": "Calle 100 #15-20",
"hint": "Oficina 301",
"zipcode": "170004"
},
"documents": {
"rut": "https://storage.example.com/rut.pdf",
"ccc": "https://storage.example.com/ccc.pdf",
"dni": "https://storage.example.com/dni.pdf",
"bank": "https://storage.example.com/bank.pdf"
},
"company_owner": {
"name": "Juan",
"last_name": "Pérez",
"phone": "+573001234568",
"email": "juan@acme.co",
"document_type": "cc",
"dni": "10000001"
},
"test_scenario": "VERIFIED"
}'
```
| Escenario | Webhook | `company.status` en el payload |
| ---------- | ------------------ | ------------------------------------- |
| `VERIFIED` | `company.verified` | `active` |
| `REJECTED` | `company.rejected` | `in_active` (incluye `status_reason`) |
Los escenarios solo funcionan con llaves de ambiente **test** (`sk_test_`) y el webhook simulado se entrega únicamente a los endpoints suscritos al entorno de pruebas. La empresa creada permanece en estado `pending`: la respuesta de este endpoint y `GET /companies/{id}` no cambian, solo se simula la notificación del resultado. En producción, el campo `test_scenario` es ignorado.
### Response
Identificador único de la empresa.
Nombre comercial.
Razón social.
Teléfono de la empresa.
Tipo de documento.
Número de documento.
Estado de la empresa. Las empresas nuevas se crean con estado `pending`.
Código de industria.
Moneda de la empresa (por defecto `COP`).
```json 201 theme={null}
{
"id": "9da58912-101d-46f8-86c9-20a52119c0bf",
"name": "Acme Inc",
"legal_name": "Acme Inc S.A.S",
"phone": "+573001234567",
"document_type": "NIT",
"document_number": "123456789-1",
"status": "pending",
"industry": "0742",
"currency": "COP"
}
```
```json 422 theme={null}
{
"message": "El campo nombre es obligatorio. (y 5 errores más)",
"code": 10001,
"code_name": "validation_error",
"errors": {
"name": ["El campo nombre es obligatorio."],
"document_type": ["El tipo de documento no es válido para el tipo de compañía seleccionado."],
"fiscal_responsibilities": ["El campo fiscal responsibilities es obligatorio."]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
```bash cURL theme={null}
curl https://api.onepay.la/v1/companies \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: company-001" \
-d '{
"type": "organization",
"name": "Acme Inc",
"legal_name": "Acme Inc S.A.S",
"document_type": "NIT",
"document_number": "123456789-1",
"phone": "+573001234567",
"email": "contacto@acme.co",
"website": "https://acme.co",
"economic_activity": "0111",
"industry": "0742",
"sales": 35,
"fiscal_responsibilities": ["O_47"],
"retention_rules": {
"iva": true,
"ica": false,
"fuente": true
},
"city_id": 1,
"address": {
"address": "Calle 100 #15-20",
"hint": "Oficina 301",
"zipcode": "170004"
},
"documents": {
"rut": "https://storage.example.com/rut.pdf",
"ccc": "https://storage.example.com/ccc.pdf",
"dni": "https://storage.example.com/dni.pdf",
"bank": "https://storage.example.com/bank.pdf",
"simple": "https://storage.example.com/simple.pdf"
},
"company_owner": {
"name": "Juan",
"last_name": "Pérez",
"phone": "+573001234568",
"email": "juan@acme.co",
"document_type": "cc",
"dni": "10000001"
},
"account": {
"type": "savings",
"bank_id": "9da58912-101d-46f8-86c9-20a52119c0bf",
"number": "1234567890",
"terms": true
}
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/companies', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'company-001'
},
body: JSON.stringify({
type: 'organization',
name: 'Acme Inc',
legal_name: 'Acme Inc S.A.S',
document_type: 'NIT',
document_number: '123456789-1',
phone: '+573001234567',
email: 'contacto@acme.co',
website: 'https://acme.co',
economic_activity: '0111',
industry: '0742',
sales: 35,
fiscal_responsibilities: ['O_47'],
retention_rules: { iva: true, ica: false, fuente: true },
city_id: 1,
address: {
address: 'Calle 100 #15-20',
hint: 'Oficina 301',
zipcode: '170004'
},
documents: {
rut: 'https://storage.example.com/rut.pdf',
ccc: 'https://storage.example.com/ccc.pdf',
dni: 'https://storage.example.com/dni.pdf',
bank: 'https://storage.example.com/bank.pdf',
simple: 'https://storage.example.com/simple.pdf'
},
company_owner: {
name: 'Juan',
last_name: 'Pérez',
phone: '+573001234568',
email: 'juan@acme.co',
document_type: 'cc',
dni: '10000001'
},
account: {
type: 'savings',
bank_id: '9da58912-101d-46f8-86c9-20a52119c0bf',
number: '1234567890',
terms: true
}
})
});
const company = await response.json();
console.log(company);
```
```python Python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/companies',
headers={
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'company-001'
},
json={
'type': 'organization',
'name': 'Acme Inc',
'legal_name': 'Acme Inc S.A.S',
'document_type': 'NIT',
'document_number': '123456789-1',
'phone': '+573001234567',
'email': 'contacto@acme.co',
'website': 'https://acme.co',
'economic_activity': '0111',
'industry': '0742',
'sales': 35,
'fiscal_responsibilities': ['O_47'],
'retention_rules': {'iva': True, 'ica': False, 'fuente': True},
'city_id': 1,
'address': {
'address': 'Calle 100 #15-20',
'hint': 'Oficina 301',
'zipcode': '170004'
},
'documents': {
'rut': 'https://storage.example.com/rut.pdf',
'ccc': 'https://storage.example.com/ccc.pdf',
'dni': 'https://storage.example.com/dni.pdf',
'bank': 'https://storage.example.com/bank.pdf',
'simple': 'https://storage.example.com/simple.pdf'
},
'company_owner': {
'name': 'Juan',
'last_name': 'Pérez',
'phone': '+573001234568',
'email': 'juan@acme.co',
'document_type': 'cc',
'dni': '10000001'
},
'account': {
'type': 'savings',
'bank_id': '9da58912-101d-46f8-86c9-20a52119c0bf',
'number': '1234567890',
'terms': True
}
}
)
company = response.json()
print(company)
```
```php PHP theme={null}
"https://api.onepay.la/v1/companies",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json",
"x-idempotency: company-001"
],
CURLOPT_POSTFIELDS => json_encode([
"type" => "organization",
"name" => "Acme Inc",
"legal_name" => "Acme Inc S.A.S",
"document_type" => "NIT",
"document_number" => "123456789-1",
"phone" => "+573001234567",
"email" => "contacto@acme.co",
"website" => "https://acme.co",
"economic_activity" => "0111",
"industry" => "0742",
"sales" => 35,
"fiscal_responsibilities" => ["O_47"],
"retention_rules" => ["iva" => true, "ica" => false, "fuente" => true],
"city_id" => 1,
"address" => [
"address" => "Calle 100 #15-20",
"hint" => "Oficina 301",
"zipcode" => "170004"
],
"documents" => [
"rut" => "https://storage.example.com/rut.pdf",
"ccc" => "https://storage.example.com/ccc.pdf",
"dni" => "https://storage.example.com/dni.pdf",
"bank" => "https://storage.example.com/bank.pdf",
"simple" => "https://storage.example.com/simple.pdf"
],
"company_owner" => [
"name" => "Juan",
"last_name" => "Pérez",
"phone" => "+573001234568",
"email" => "juan@acme.co",
"document_type" => "cc",
"dni" => "10000001"
],
"account" => [
"type" => "savings",
"bank_id" => "9da58912-101d-46f8-86c9-20a52119c0bf",
"number" => "1234567890",
"terms" => true
]
])
]);
$response = curl_exec($curl);
curl_close($curl);
$company = json_decode($response, true);
print_r($company);
?>
```
# Listado de ciudades
Source: https://docs.onepay.la/client/companies/list-cities
GET /cities
Endpoint para obtener el listado de ciudades soportadas por OnePay. Cada ID se usa como `city_id` al crear una empresa.
El `id` de cada ciudad es el valor que se envía como `city_id` al crear una empresa.
### Query Parameters
Filtra ciudades por nombre (búsqueda parcial, case-insensitive).
Filtra ciudades por departamento. Consulta el [endpoint de departamentos](/client/companies/list-states) para obtener los IDs válidos.
Ordenamiento por nombre. Usa `name` para ascendente y `-name` para descendente.
Cantidad de resultados por página.
Número de página para paginación.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/cities \
-X GET \
-H "Authorization: Bearer sk_test_xxx"
```
Con filtro por nombre:
```bash theme={null}
curl "https://api.onepay.la/v1/cities?filter[name]=bog" \
-X GET \
-H "Authorization: Bearer sk_test_xxx"
```
```ts theme={null}
const response = await fetch('https://api.onepay.la/v1/cities?filter[name]=bog', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx',
},
});
const data = await response.json();
```
```python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/cities',
params={'filter[name]': 'bog'},
headers={'Authorization': 'Bearer sk_test_xxx'},
)
data = response.json()
```
### Response
Lista de ciudades.
ID único de la ciudad. Úsalo como `city_id` al crear una empresa.
Nombre de la ciudad.
Departamento al que pertenece la ciudad.
ID del departamento.
Nombre del departamento.
Página actual.
Índice del primer registro en la página actual.
Última página disponible.
Cantidad de registros por página.
Índice del último registro en la página actual.
Total de ciudades.
### Ejemplo de respuesta
```json 200 theme={null}
{
"data": [
{
"id": 149,
"name": "Bogotá",
"state": {
"id": 11,
"name": "Bogotá D.C."
}
},
{
"id": 312,
"name": "Medellín",
"state": {
"id": 5,
"name": "Antioquia"
}
}
],
"current_page": 1,
"from": 1,
"last_page": 74,
"per_page": 15,
"to": 15,
"total": 1102
}
```
# Listado de departamentos
Source: https://docs.onepay.la/client/companies/list-states
GET /states
Endpoint para obtener el listado de departamentos soportados por OnePay. Cada ID se usa como `filter[state_id]` al consultar el listado de ciudades.
El `id` de cada departamento es el valor que se envía como `filter[state_id]` al consultar el listado de ciudades.
### Query Parameters
Filtra departamentos por nombre (búsqueda parcial, case-insensitive).
Ordenamiento por nombre. Usa `name` para ascendente y `-name` para descendente.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/states \
-X GET \
-H "Authorization: Bearer sk_test_xxx"
```
Con filtro por nombre:
```bash theme={null}
curl "https://api.onepay.la/v1/states?filter[name]=antio" \
-X GET \
-H "Authorization: Bearer sk_test_xxx"
```
```ts theme={null}
const response = await fetch('https://api.onepay.la/v1/states?filter[name]=antio', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx',
},
});
const data = await response.json();
```
```python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/states',
params={'filter[name]': 'antio'},
headers={'Authorization': 'Bearer sk_test_xxx'},
)
data = response.json()
```
### Response
La respuesta es un arreglo con todos los departamentos disponibles (no paginado).
ID único del departamento. Úsalo como `filter[state_id]` al consultar ciudades.
Nombre del departamento.
### Ejemplo de respuesta
```json 200 theme={null}
[
{
"id": 5,
"name": "Antioquia"
},
{
"id": 8,
"name": "Atlántico"
},
{
"id": 11,
"name": "Bogotá D.C."
},
{
"id": 13,
"name": "Bolívar"
}
]
```
# Crear link de captura
Source: https://docs.onepay.la/client/connections/create
POST /connect-links
Crea un nuevo link de captura, para que el cliente pueda registrar su información de pago.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
ID del cliente que completará el formulario. [Ver cómo crear un cliente](/client/customers/create).
Define si el enlace de conexión (Connect Link) será de un solo uso o de múltiples usos. Si se establece en true, el enlace será de un solo uso; si es false, permitirá múltiples conexiones.
Indica si se debe notificar al cliente cuando se complete el pago
**Métodos de pago permitidos**
El método de pago disponible depende de la configuración de tu cuenta. Comunícate con el equipo de soporte para habilitar métodos adicionales.
| Método | Campo requerido | Descripción |
| ------------------------- | --------------- | ----------------------------------------------- |
| Cuenta bancaria (ACH) | `account_id` | Débito directo desde cuenta bancaria registrada |
| Tarjeta de crédito/débito | `card_id` | Cargo a tarjeta tokenizada |
Solo uno de los dos (`account_id` o `card_id`) debe estar presente en la petición.
ID único del cliente en tu sistema
URL a la que se redirigirá al cliente después de completar el pago
Metadatos adicionales que deseas asociar con el link
URL de redirección
### Response
```json 200 theme={null}
{
"id": "9e92f61e-e90f-4fbb-a551-080fd4fb4f6f",
"customer_id": "9957858a-c2f1-4f18-a5c2-216b4127e278",
"single_use": false,
"visits": 0,
"completed": 0,
"external_id": "31231231231",
"allows": {
"cards": true,
"accounts": true,
"wallets": true,
"pse": true,
"pse_debit": false,
"breb": true,
"card_extra": false,
"full_extra": false,
"realtime": false,
"direct_account": false
},
"created_at": "2025-04-01T20:45:16.000000Z",
"updated_at": "2025-04-01T20:45:16.000000Z",
"url": "https://pagos.onepay.la/connect-link/9e92f61e-e90f-4fbb-a551-080fd4fb4f6f"
}
```
```json 422 theme={null}
{
"message": "El campo customer id es obligatorio. (y 1 error más)",
"code": 10001,
"code_name": "validation_error",
"errors": {
"customer_id": [
"El campo customer id es obligatorio."
],
"single_use": [
"El campo single use es obligatorio."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Eliminar link de captura
Source: https://docs.onepay.la/client/connections/delete
DELETE /connect-links/{connect_link_id}
Elimina un link de captura específico de tu cuenta.
### Parámetros de Ruta
ID único del link de captura que deseas eliminar
### Response
La petición retorna un código de estado HTTP 201 sin contenido en el cuerpo de la respuesta.
```json 200 theme={null}
{}
```
```json 422 theme={null}
{
"message": "Registro no encontrado, Link de captura no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Links de Captura
Source: https://docs.onepay.la/client/connections/index
Captura información de pago de tus clientes de forma segura
# Links de Captura
Los links de captura son una solución segura y eficiente para recolectar información de pago de tus clientes sin necesidad de implementar procesos complejos de certificación PCI DSS o cumplimiento normativo para el manejo de datos sensibles de tarjetas o cuentas bancarias.
## ¿Cómo funcionan?
El proceso de captura de información de pago mediante links es simple y seguro:
1. **Crea un cliente**: Primero debes registrar al cliente en tu sistema utilizando el [endpoint de creación de clientes](/client/customers/create).
2. **Genera un link de captura**: Una vez que tienes el ID del cliente, puedes crear un link de captura personalizado utilizando el [endpoint de creación de links](/client/connections/create).
3. **Comparte el link**: Envía el link generado a tu cliente a través de correo electrónico, SMS o cualquier otro canal de comunicación.
4. **El cliente completa el proceso**: Tu cliente accede al link y proporciona su información de pago en un entorno seguro gestionado por OnePay.
5. **Recibe la confirmación**: Una vez que el cliente completa el proceso, recibirás una notificación a través de un webhook con la información necesaria para realizar cargos futuros.
## Ventajas de los Links de Captura
* **Seguridad**: Evita el manejo directo de información sensible de pago.
* **Cumplimiento**: No requieres certificaciones PCI DSS para capturar datos de tarjetas.
* **Experiencia de usuario**: Interfaz amigable y optimizada para dispositivos móviles.
* **Flexibilidad**: Puedes personalizar el aspecto del formulario para mantener la identidad de tu marca.
* **Automatización**: Integra el proceso con tus sistemas mediante webhooks.
## Flujo de Implementación
1. Crea un cliente utilizando el endpoint `POST /customers`.
2. Genera un link de captura con el endpoint `POST /connect-links`.
3. Configura un webhook para recibir notificaciones cuando el cliente complete el proceso.
4. Redirecciona al cliente al link generado.
5. Cuando el cliente completa el proceso, recibirás una notificación con los detalles del método de pago capturado.
6. Utiliza el ID del método de pago para realizar cargos futuros sin necesidad de solicitar nuevamente la información.
## Consideraciones Importantes
* Los links de captura **no expiran por tiempo**. Un link con `single_use: true` deja de abrirse después de la primera captura completada; uno con `single_use: false` sigue disponible indefinidamente. Para cerrar un link antes, usa [`DELETE /connect-links/{id}`](/client/connections/delete).
* Puedes generar múltiples links para un mismo cliente.
* La información capturada se almacena de forma segura y cumpliendo con los estándares de la industria.
* Los métodos de pago capturados pueden ser utilizados para cargos únicos o recurrentes.
Explora los endpoints disponibles para gestionar tus links de captura:
* [Crear link de captura](/client/connections/create)
* [Eliminar link de captura](/client/connections/delete)
# Crear cargo
Source: https://docs.onepay.la/client/customer-session/create-charge
POST /customers/session/charges
Crea un cargo a una tarjeta del cliente autenticado. Requiere aprobación del cliente vía WhatsApp.
Crea un cargo (débito) a una tarjeta del cliente autenticado. Se envía una solicitud de aprobación al cliente vía WhatsApp. El cargo se ejecuta cuando el cliente aprueba, o expira automáticamente en **5 minutos**.
Usa [GET /customers/session/charges/](show-charge) para consultar el estado del cargo mientras esperas la aprobación.
Solo se permite **un cargo pendiente** por tarjeta. Si ya existe un cargo en estado `created`, el endpoint retornará error 422.
### Headers
Token de idempotencia único (UUID) para evitar cargos duplicados. **Obligatorio** en este endpoint.
Bearer token de tu empresa.
Token de sesión del cliente obtenido en [/customers/login/verify](verify-otp).
### Body
ID de la tarjeta del cliente. Debe pertenecer al cliente autenticado y coincidir con el modo (test/live).
Monto del cargo en **centavos**. Mínimo: `100` (equivale a \$1 COP).
Moneda del cargo. Valores válidos: `COP`, `USD`.
Descripción del cargo. Máximo 255 caracteres.
### Flujo de aprobación
```mermaid theme={null}
sequenceDiagram
participant App as Tu App
participant API as OnePay API
participant WA as WhatsApp
participant User as Cliente
App->>API: POST /customers/session/charges
API-->>App: {charge_id, status: "created", expires_at}
API->>WA: Solicitud de aprobación
WA->>User: "¿Aprobar cobro de $500 con Visa ····4242?"
alt Cliente aprueba
User->>WA: Aprobar
WA->>API: Aprobación recibida
API->>API: Procesa el cargo
else Cliente rechaza
User->>WA: Rechazar
WA->>API: Rechazo recibido
API->>API: Marca como fallido
else Expira (5 min)
API->>API: Job marca como fallido
end
```
```bash cURL theme={null}
curl https://api.onepay.la/v1/customers/session/charges \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "x-customer-token: 12|a1b2c3d4e5f6..." \
-H "x-idempotency: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{
"payment_method_id": "bb02b2fd-154c-4c90-9fdf-cec3a0b25cf5",
"amount": 50000,
"currency": "COP",
"description": "Pago mensualidad marzo"
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/customers/session/charges', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'X-Customer-Token': '12|a1b2c3d4e5f6...',
'X-Idempotency': '550e8400-e29b-41d4-a716-446655440000',
'Content-Type': 'application/json'
},
body: JSON.stringify({
payment_method_id: 'bb02b2fd-154c-4c90-9fdf-cec3a0b25cf5',
amount: 50000,
currency: 'COP',
description: 'Pago mensualidad marzo'
})
});
const charge = await response.json();
```
```python Python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/customers/session/charges',
headers={
'Authorization': 'Bearer sk_test_xxx',
'X-Customer-Token': '12|a1b2c3d4e5f6...',
'X-Idempotency': '550e8400-e29b-41d4-a716-446655440000',
'Content-Type': 'application/json'
},
json={
'payment_method_id': 'bb02b2fd-154c-4c90-9fdf-cec3a0b25cf5',
'amount': 50000,
'currency': 'COP',
'description': 'Pago mensualidad marzo'
}
)
charge = response.json()
```
```json 200 - Pendiente de aprobación theme={null}
{
"charge_id": "9e02966f-2ddf-4ee7-a391-5b5b7653e232",
"status": "created",
"message": "Solicitud de aprobación enviada al cliente vía WhatsApp.",
"expires_at": "2026-03-16T22:35:00+00:00"
}
```
```json 422 - Cargo pendiente existente theme={null}
{
"message": "Ya existe un cobro pendiente para este método de pago."
}
```
```json 422 - Tarjeta expirada theme={null}
{
"message": "El método de pago está expirado."
}
```
# Tokenizar tarjeta
Source: https://docs.onepay.la/client/customer-session/create-payment-method
POST /customers/session/payment-methods
Registra una nueva tarjeta de crédito/débito para el cliente autenticado usando tokenización.
Registra una nueva tarjeta de crédito o débito para el cliente autenticado. Requiere un token temporal generado previamente por tu frontend con el SDK de tokenización.
Nunca envíes datos de tarjeta (PAN, CVV, fecha de expiración) directamente a este endpoint. Usa el SDK de tokenización para obtener un `token` seguro.
### Headers
Bearer token de tu empresa.
Token de sesión del cliente obtenido en [/customers/login/verify](verify-otp).
### Body
Token temporal de la tarjeta obtenido del SDK de tokenización. Este token es de un solo uso.
### Respuesta
ID de la tarjeta registrada.
Marca de la tarjeta: `visa`, `mastercard`, `amex`, `diners`.
Últimos 4 dígitos de la tarjeta.
Etiqueta legible (ej. `Visa ····4242`).
```bash cURL theme={null}
curl https://api.onepay.la/v1/customers/session/payment-methods \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-Customer-Token: 12|a1b2c3d4e5f6..." \
-H "Content-Type: application/json" \
-d '{
"token": "tok_1a2b3c4d5e6f"
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/customers/session/payment-methods', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'X-Customer-Token': '12|a1b2c3d4e5f6...',
'Content-Type': 'application/json'
},
body: JSON.stringify({
token: 'tok_1a2b3c4d5e6f'
})
});
const card = await response.json();
```
```python Python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/customers/session/payment-methods',
headers={
'Authorization': 'Bearer sk_test_xxx',
'X-Customer-Token': '12|a1b2c3d4e5f6...',
'Content-Type': 'application/json'
},
json={
'token': 'tok_1a2b3c4d5e6f'
}
)
card = response.json()
```
```json 201 theme={null}
{
"id": "bb02b2fd-154c-4c90-9fdf-cec3a0b25cf5",
"brand": "visa",
"last_four": "4242",
"label": "Visa ····4242"
}
```
```json 422 theme={null}
{
"message": "El campo token es obligatorio.",
"errors": {
"token": [
"El campo token es obligatorio."
]
}
}
```
```json 401 theme={null}
{
"message": "Token de sesión inválido o expirado."
}
```
# Sesión de cliente
Source: https://docs.onepay.la/client/customer-session/index
Permite a tus clientes autenticarse con OTP y operar con sus métodos de pago de forma segura.
## ¿Qué es la Sesión de Cliente?
La sesión de cliente permite que tus usuarios finales se autentiquen directamente desde tu aplicación usando su número de teléfono (OTP vía WhatsApp). Una vez autenticados, obtienen un **token temporal** con el que pueden:
* Consultar sus métodos de pago (tarjetas, billeteras, PSE)
* Registrar nuevas tarjetas (tokenización)
* Autorizar cargos con aprobación vía WhatsApp
Este flujo está diseñado para que el **cliente final** opere directamente. La autenticación es con OTP, no con las API keys de tu empresa.
## Flujo de autenticación
```mermaid theme={null}
sequenceDiagram
participant App as Tu App
participant API as OnePay API
participant WA as WhatsApp
participant User as Cliente
App->>API: POST /customers/login/request {phone}
API->>WA: Envía OTP
WA->>User: Código de verificación
User->>App: Ingresa OTP
App->>API: POST /customers/login/verify {phone, otp}
API-->>App: {token, expires_at, customer}
App->>API: GET /customers/session/payment-methods
Note over App,API: Header: X-Customer-Token
```
## Autenticación dual
Los endpoints de sesión requieren **dos tokens** en los headers:
| Header | Descripción |
| ------------------ | ---------------------------------------------------------- |
| `Authorization` | Bearer token de tu empresa (`sk_test_xxx` o `sk_live_xxx`) |
| `X-Customer-Token` | Token del cliente obtenido en `/customers/login/verify` |
## Modo test vs live
* Usa `sk_test_xxx` para modo test. El OTP se retorna directamente en la respuesta.
* Usa `sk_live_xxx` para modo live. El OTP se envía por WhatsApp al cliente.
* Los métodos de pago y cargos se filtran automáticamente según el modo.
## Endpoints
| Método | Endpoint | Descripción |
| ------ | ----------------------------------------------------------- | ----------------------------- |
| `POST` | [/customers/login/request](request-otp) | Solicitar OTP |
| `POST` | [/customers/login/verify](verify-otp) | Verificar OTP y obtener token |
| `GET` | [/customers/session/payment-methods](list-payment-methods) | Listar métodos de pago |
| `POST` | [/customers/session/payment-methods](create-payment-method) | Tokenizar tarjeta |
| `POST` | [/customers/session/charges](create-charge) | Crear cargo con aprobación |
| `GET` | [/customers/session/charges/](show-charge) | Consultar estado de un cargo |
# Listar métodos de pago
Source: https://docs.onepay.la/client/customer-session/list-payment-methods
GET /customers/session/payment-methods
Retorna los métodos de pago del cliente autenticado: tarjetas, billeteras y cuentas PSE.
Retorna todos los métodos de pago verificados y vigentes del cliente autenticado, agrupados por tipo: tarjetas, billeteras digitales (Nequi/Daviplata) y cuentas PSE.
Solo se retornan métodos de pago verificados, no expirados y del mismo modo (test/live) que el token de la empresa.
### Headers
Bearer token de tu empresa: `Bearer sk_test_xxx` o `Bearer sk_live_xxx`.
Token de sesión del cliente obtenido en [/customers/login/verify](verify-otp).
### Respuesta
Objeto con los métodos de pago agrupados por tipo.
Tarjetas de crédito/débito verificadas y vigentes.
ID de la tarjeta.
Marca: `visa`, `mastercard`, `amex`, `diners`.
Últimos 4 dígitos.
Etiqueta legible (ej. `Visa ····1234`).
Fecha de expiración (`YYYY-MM-DD`).
Nombre del titular.
Billeteras digitales conectadas (Nequi, Daviplata).
ID de la cuenta.
Tipo: `nequi` o `daviplata`.
Número de teléfono asociado.
Etiqueta legible (ej. `NEQUI ····4567`).
Cuentas PSE conectadas.
ID de la cuenta.
Nombre del banco.
Etiqueta legible (ej. `Bancolombia - PSE`).
```bash cURL theme={null}
curl https://api.onepay.la/v1/customers/session/payment-methods \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-Customer-Token: 12|a1b2c3d4e5f6..."
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/customers/session/payment-methods', {
headers: {
'Authorization': 'Bearer sk_test_xxx',
'X-Customer-Token': '12|a1b2c3d4e5f6...'
}
});
const { data } = await response.json();
console.log(data.cards); // Tarjetas
console.log(data.wallets); // Nequi/Daviplata
console.log(data.pse); // Cuentas PSE
```
```python Python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/customers/session/payment-methods',
headers={
'Authorization': 'Bearer sk_test_xxx',
'X-Customer-Token': '12|a1b2c3d4e5f6...'
}
)
data = response.json()['data']
```
```json 200 theme={null}
{
"data": {
"cards": [
{
"id": "bb02b2fd-154c-4c90-9fdf-cec3a0b25cf5",
"brand": "visa",
"last_four": "4242",
"label": "Visa ····4242",
"expiration_date": "2028-12-31",
"card_name": "MARIA LOPEZ"
}
],
"wallets": [
{
"id": "a1b2c3d4-5678-9abc-def0-123456789abc",
"subtype": "nequi",
"phone": "3001234567",
"label": "NEQUI ····4567"
}
],
"pse": [
{
"id": "c3d4e5f6-7890-abcd-ef01-234567890def",
"bank_name": "Bancolombia",
"label": "Bancolombia - PSE"
}
]
}
}
```
```json 401 theme={null}
{
"message": "Token de sesión inválido o expirado."
}
```
# Solicitar OTP
Source: https://docs.onepay.la/client/customer-session/request-otp
POST /customers/login/request
Envía un código OTP de 6 dígitos al cliente vía WhatsApp para iniciar sesión.
Envía un código de verificación (OTP) al número de teléfono del cliente vía WhatsApp. El cliente debe estar previamente registrado con [POST /customers](/client/customers/create).
En modo test (`sk_test_xxx`), el OTP se retorna directamente en la respuesta y **no** se envía por WhatsApp.
### Body
Número de teléfono del cliente en formato E.164 (ejemplo: `+573001234567`).
### Rate limiting
Este endpoint tiene un rate limit de **1 request cada 30 segundos** por teléfono, con un cooldown de **1 minuto** entre reenvíos.
```bash cURL theme={null}
curl https://api.onepay.la/v1/customers/login/request \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"phone": "+573001234567"
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/customers/login/request', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
phone: '+573001234567'
})
});
const data = await response.json();
```
```python Python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/customers/login/request',
headers={
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
json={
'phone': '+573001234567'
}
)
data = response.json()
```
```json 200 - Modo live theme={null}
{
"message": "OTP enviado exitosamente."
}
```
```json 200 - Modo test theme={null}
{
"message": "OTP enviado exitosamente.",
"otp": "482916"
}
```
```json 422 theme={null}
{
"message": "El campo teléfono es obligatorio.",
"errors": {
"phone": [
"El campo teléfono es obligatorio."
]
}
}
```
```json 429 theme={null}
{
"message": "Too Many Attempts."
}
```
# Consultar cargo
Source: https://docs.onepay.la/client/customer-session/show-charge
GET /customers/session/charges/{chargeId}
Consulta el estado y detalle de un cargo creado en la sesión del cliente.
Consulta el estado actual de un cargo previamente creado con [POST /customers/session/charges](create-charge). Útil para hacer polling del estado del cargo mientras el cliente aprueba o rechaza vía WhatsApp.
Solo puedes consultar cargos que pertenezcan al cliente autenticado. Intentar consultar un cargo de otro cliente retorna 404.
### Headers
Bearer token de tu empresa.
Token de sesión del cliente obtenido en [/customers/login/verify](verify-otp).
### Path Parameters
ID del cargo a consultar. Retornado al crear el cargo con `POST /customers/session/charges`.
### Response
Identificador único del cargo.
Estado actual del cargo. Valores posibles:
* `created` — Pendiente de aprobación
* `paid` — Aprobado y cobrado exitosamente
* `failed` — Rechazado o expirado
Monto del cargo en **centavos**.
Moneda del cargo (`COP`, `USD`).
Descripción del cargo.
Motivo del fallo cuando `status` es `failed`. `null` en otros estados.
Fecha y hora del pago en formato ISO 8601. `null` si aún no ha sido pagado.
Fecha y hora de creación del cargo en formato ISO 8601.
```bash cURL theme={null}
curl https://api.onepay.la/v1/customers/session/charges/9e02966f-2ddf-4ee7-a391-5b5b7653e232 \
-H "Authorization: Bearer sk_test_xxx" \
-H "x-customer-token: 12|a1b2c3d4e5f6..."
```
```javascript JavaScript theme={null}
const response = await fetch(
'https://api.onepay.la/v1/customers/session/charges/9e02966f-2ddf-4ee7-a391-5b5b7653e232',
{
headers: {
'Authorization': 'Bearer sk_test_xxx',
'X-Customer-Token': '12|a1b2c3d4e5f6...'
}
}
);
const charge = await response.json();
```
```python Python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/customers/session/charges/9e02966f-2ddf-4ee7-a391-5b5b7653e232',
headers={
'Authorization': 'Bearer sk_test_xxx',
'X-Customer-Token': '12|a1b2c3d4e5f6...'
}
)
charge = response.json()
```
```json 200 - Cargo pendiente theme={null}
{
"charge_id": "9e02966f-2ddf-4ee7-a391-5b5b7653e232",
"status": "created",
"amount": 50000,
"currency": "COP",
"description": "Pago mensualidad marzo",
"remarks": null,
"paid_at": null,
"created_at": "2026-03-17T21:30:00+00:00"
}
```
```json 200 - Cargo aprobado theme={null}
{
"charge_id": "9e02966f-2ddf-4ee7-a391-5b5b7653e232",
"status": "paid",
"amount": 50000,
"currency": "COP",
"description": "Pago mensualidad marzo",
"remarks": null,
"paid_at": "2026-03-17T21:32:15+00:00",
"created_at": "2026-03-17T21:30:00+00:00"
}
```
```json 200 - Cargo fallido/expirado theme={null}
{
"charge_id": "9e02966f-2ddf-4ee7-a391-5b5b7653e232",
"status": "failed",
"amount": 50000,
"currency": "COP",
"description": "Pago mensualidad marzo",
"remarks": "CUSTOMER_APPROVAL_EXPIRED",
"paid_at": null,
"created_at": "2026-03-17T21:30:00+00:00"
}
```
```json 404 - Cargo no encontrado theme={null}
{
"message": "Cargo no encontrado."
}
```
# Verificar OTP
Source: https://docs.onepay.la/client/customer-session/verify-otp
POST /customers/login/verify
Verifica el código OTP y retorna un token de sesión para el cliente.
Verifica el código OTP enviado previamente con [POST /customers/login/request](request-otp) y retorna un token de sesión temporal con validez de **7 días**.
Si el cliente acumula más de **3 intentos fallidos**, se dispara un evento de seguridad (`CustomerBanned`).
### Body
Número de teléfono del cliente en formato E.164.
Código OTP de 6 dígitos recibido por WhatsApp (o en la respuesta en modo test).
### Respuesta exitosa
Token de sesión del cliente. Debe enviarse en el header `X-Customer-Token` en los endpoints de sesión.
Fecha de expiración del token en formato ISO 8601 (7 días desde la emisión).
Datos básicos del cliente autenticado.
ID único del cliente.
Nombre del cliente.
Apellido del cliente.
Teléfono del cliente.
Email del cliente.
```bash cURL theme={null}
curl https://api.onepay.la/v1/customers/login/verify \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"phone": "+573001234567",
"otp": "482916"
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/customers/login/verify', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
phone: '+573001234567',
otp: '482916'
})
});
const { token, expires_at, customer } = await response.json();
```
```python Python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/customers/login/verify',
headers={
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
json={
'phone': '+573001234567',
'otp': '482916'
}
)
data = response.json()
token = data['token']
```
```json 200 theme={null}
{
"token": "12|a1b2c3d4e5f6g7h8i9j0...",
"expires_at": "2026-03-23T17:30:00+00:00",
"customer": {
"id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"first_name": "María",
"last_name": "López",
"phone": "+573001234567",
"email": "maria@ejemplo.com"
}
}
```
```json 422 - Credenciales inválidas theme={null}
{
"message": "Las credenciales proporcionadas no son válidas."
}
```
```json 429 theme={null}
{
"message": "Too Many Attempts."
}
```
# Cuentas de un cliente
Source: https://docs.onepay.la/client/customers/accounts
GET /customers/{customer_id}/accounts
Obtiene las cuentas de un cliente específico.
### Parámetros de Ruta
ID del cliente dueño de las cuentas. [Crear cliente](/client/customers/create).
```bash cURL theme={null}
curl https://api.onepay.la/v1/customers/9dd4158b-0e45-42bc-b56f-a4c1f856814d/accounts \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const customerId = '9dd4158b-0e45-42bc-b56f-a4c1f856814d';
const response = await fetch(`https://api.onepay.la/v1/customers/${customerId}/accounts`, {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data.data); // Array de cuentas
console.log(data.current_page); // Página actual
```
```python Python theme={null}
import requests
customer_id = "9dd4158b-0e45-42bc-b56f-a4c1f856814d"
url = f"https://api.onepay.la/v1/customers/{customer_id}/accounts"
headers = {
"Authorization": "Bearer sk_test_xxx"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data["data"]) # Array de cuentas
print(data["current_page"]) # Página actual
```
```php PHP theme={null}
"https://api.onepay.la/v1/customers/{$customerId}/accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data["data"]); // Array de cuentas
echo $data["current_page"]; // Página actual
curl_close($ch);
?>
```
### Response
Número de la página actual
URL para acceder a la primera página de resultados
Índice inicial del primer elemento en la página actual
URL para acceder a la siguiente página de resultados. Será `null` si es la última página
URL base de la API sin los parámetros de paginación
Cantidad de elementos por página
URL para acceder a la página anterior. Será `null` si es la primera página
Índice final del último elemento en la página actual
Datos de la página actual
Identificador único de la tarjeta en formato UUID
Título del titular de la cuenta
Etiqueta de la cuenta
Tipo de cuenta
Estado de la cuenta
Indica si la cuenta requiere autorización
Identificador único del cliente en formato UUID
Indica si la cuenta se autoenrolla nuevamente al vencer o se cancelada por el cliente.
Datos de la página actual
Identificador único del banco en formato UUID
Nombre del banco
URL del logotipo del banco
Logotipo del banco codificado en base64
```json 200 theme={null}
{
"data":[
{
"id":"9a7a7105-631d-4ad0-8e06-5c7bc2dfe32e",
"title":"BANCOLOMBIA **** 5446",
"subtype":"SAVINGS",
"status":"CONNECTED",
"authorization":false,
"customer_id":"9a708f99-fc8b-4a09-ad20-bea12f4af1b3",
"re_enroll":false,
"external_id":null,
"bank":{
"id":"9957817c-f17e-472b-b531-e3d1490bf757",
"name":"BANCOLOMBIA",
"logo":"https:\/\/firebasestorage.googleapis.com\/v0\/b\/onepayai.appspot.com\/o\/images%2Fbancolombia.jpg?alt=media&token=b0fa2f5e-6dfc-4cc1-a5f7-1c49877fd1fa",
"base64_logo":"\/9j\/4AAQSkZJRgABAQEAYABgAAD\/4QC8RXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP\/\/AAACoAMAAQAAAGQAAAADoAMAAQAAAGQAAAAAAAAA\/+EOImh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEyLTE2PC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjA3NWM2ZDc4LTExOWQtNGI3NS1iNGUyLTkzZDFkMzc5NDQ3MjwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5CQU5DTyBERSBCT0dPVEEgLSAzPC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8nPgogIDxwZGY6QXV0aG9yPk1hbnVlbCBIZXJyZXJhPC9wZGY6QXV0aG9yPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp4bXA9J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8nPgogIDx4bXA6Q3JlYXRvclRvb2w+Q2FudmEgKFJlbmRlcmVyKSBkb2M9REFHWmZSdFdFOFkgdXNlcj1VQUVUVWNoSVNKUTwveG1wOkNyZWF0b3JUb29sPgogPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw\/eHBhY2tldCBlbmQ9J3cnPz7\/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj\/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj\/wAARCABkAGQDASIAAhEBAxEB\/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL\/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6\/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL\/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6\/9oADAMBAAIRAxEAPwD6pooooAKKKKACimyyJFG0krqkajLMxwAPc1yOsfEzwZo+4XviPT9y9Ugk89h7YTJoA7CivGNW\/aJ8JWpK2Nrql8w6MsSxofxZs\/pXJal+0vcNkaZ4bij9HuLovn\/gKqP50AfSlFfI1z+0P4ylmV4odIgRTnYluxDD0JLk\/livpf4e+J4vGHg\/TtaiQRtcIRLEDny5FJVl+mQce2KAOiooooAKKKKACiiigDl\/iV4vh8EeE7nWZoGuHRljihB273boCew6k\/SvmPxB8evGmqbls57XS4jxttYQWx\/vPuOfcYr6L+N2j\/238L9et1XdLDB9qj9cxkOcfUAj8a+HKQzT1nX9X1uTfrGqXt82cj7ROzgfQE8VmUUUAFFdHongfxRrgU6XoOo3EbdJBAVj\/wC+zhf1ru9I\/Z98Z3u03g0\/TlPUT3G9h+CBh+tAHkNfR\/7JXiL\/AJDHhyZ\/S+twfwST\/wBk\/WnaX+zQgAbVfEjE90trXH\/jzN\/SvTfhz8KtA8B3s17pj3lzeyxeSZrp1O1cgkKFAAyQPU8UAd9RRRTEFFFFABRRRQAyeJJ4ZIpVDxyKVZT0IIwRXy4f2cNebWZ411XTo9MDny5yXaQpnjKYAzjrzj3r6mrB8TeMPD\/hiPdr2rWtmcZEbvmRh7IMsfwFAHmnh39nfwvYbX1m6vdVlHVS3kRn8F+b\/wAer0rQvBnhvQdp0jQ9PtXXpIsIMn\/fZ+b9a8j8UftH6VbF4vDelXF844E1y3kx\/UKMsR9dteVeIvjd421ncseoppsLf8s7GPyz\/wB9nLfrQB9k3l5bWMBmvbiG3hHWSZwij8TXFaz8XPA+k7hNr9tO4\/htA0+fxQEfrXxVqOo3upzmbUry5u5j\/wAtJ5Wkb8yTVSlcdj6o1b9pDw\/BuGl6RqV4w7ylIVP45Y\/pXIaj+0nrkmf7O0PTbcdvPd5iPyK14NRQB9E\/C\/45a5q\/jex0zxGtkbG\/kECNFGUMUh+7jk5BOBg+v5\/SdfnRbTyW1xFPA5SaJw6MOqsDkH86\/QHwlrMfiHwzperw4C3lukxA\/hYj5l\/A5H4UxGtRRRQAV5v8Tfi5ongS5+wSwzX+rFBJ9mhIVUB6b3PTPoAT7civSK+Of2mdPay+K15Oc7b23huFz7L5f84zQBH4w+OHi\/xAXitLpdIs24EdllXI95D82fpj6V5jNLJPK8s8jySucs7sSWPqSajopDCitTQfD+r+ILnyNE026vpc4IgjLBf949B9TXrXhr9nXxHfhJNcvrPSoz1jX9\/KPwGF\/wDHqAPEakghluJVit43llbhURSxP0Ar6+8O\/APwdpe17+O61WYck3MpVM+ypjj2JNelaPoml6LB5OkadZ2MfQrbwrHn64HNAHxVofwq8bayFa18P3cUZ\/jugIBj1+cgn8K7zRv2cPENxtbVdW06yU9og0zj6jCj9a+mNY1zStFi8zV9Ss7FMZBuJljz9MnmvPtc+O3gjTNywXtzqUi\/w2cBI\/76faD+BoA53Sv2bvD8G06prGpXbDtEEhU\/hhj+tez6JpVpomkWmmabF5VnaxiKJM5wB6nufevMfh98b9J8X+KE0U6dcWEk4P2aSWQMJCBkqQB8pwDjrn8q9bpiCiiigAr5z\/a20OeVtB1m3gkkjVZLWd1XITkMmfrl6+jKKAPivwV8G\/Fnijy5vsf9mWLc\/aL0FMj\/AGU+8fbgD3r3bwh8A\/Cui7JtW87Wrpef3\/yRA+0Y6\/Ria9eooAgs7S10+1S3sreG1tox8scSBEUewHArkPE\/xT8HeHN6X2tW8twv\/LC1PnPn0O3IB+pFeQftZ6lq0GqaNYpcyx6PNbM\/lIxVZJQ2G3Y64BTGemT6188UDPo\/xJ+0n96Pw1of+7Nfyf8AtNP\/AIqvLfEPxc8a64WE+tz2sLf8srLEAA9Mr8x\/EmuCopASTzS3ErSzyPLKxyzuxYn6k1HRWronh3Wddk2aNpd7fHOCYIWcD6kDA\/GgCLw\/qc2i65p+p23+us50nUZ6lWBx+OMV+gun3cN\/YW15atvguIlmjb1VgCD+Rr5G0D4A+MtS2tfJZ6XEeT9omDPj2VM\/kSK+q\/Cmjr4f8NaZpCTNOLK3SDzWGC+0Yzjt9O1AjVooopgFFFFABRRRQB4x+1Tov2\/wDbanGmZNNulZj6RyfKf\/AB7y6+Sq\/RPU7C11TT7ix1CBLi0uEMcsTjIZT2rkvD3ws8GaBcGew0K2afOVe4LTlf8Ad3k4+o5oA+QvC3w\/8UeKdraNo1zLA3\/Lw48uL\/vtsA\/hmvXPDP7Nt1Jsk8Ta1HAvUwWKb2\/77bAB\/wCAmvpcAAYAwBRQB5\/4b+D\/AIK0HY0Wjx3k6\/8ALW+Pnk++0\/KPwArvYYo4IlihjSONRhUQAAD2Ap9FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH\/\/2Q=="
}
}
],
"current_page":1,
"first_page_url":"https:\/\/api.onepay.la\/v1\/customers\/9a708f99-fc8b-4a09-ad20-bea12f4af1b3\/accounts?page=1",
"from":1,
"next_page_url":null,
"path":"https:\/\/api.onepay.la\/v1\/customers\/9a708f99-fc8b-4a09-ad20-bea12f4af1b3\/accounts",
"per_page":20,
"prev_page_url":null,
"to":1
}
```
```json 422 theme={null}
{
"message": "Registro no encontrado, Cliente no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Tarjetas de un cliente
Source: https://docs.onepay.la/client/customers/cards
GET /customers/{customer_id}/cards
Obtiene las tarjetas de un cliente específico.
### Parámetros de Ruta
ID del cliente dueño de las tarjetas. [Crear cliente](/client/customers/create).
```bash cURL theme={null}
curl https://api.onepay.la/v1/customers/9dd4158b-0e45-42bc-b56f-a4c1f856814d/cards \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const customerId = '9dd4158b-0e45-42bc-b56f-a4c1f856814d';
const response = await fetch(`https://api.onepay.la/v1/customers/${customerId}/cards`, {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data.data); // Array de tarjetas
console.log(data.current_page); // Página actual
```
```python Python theme={null}
import requests
customer_id = "9dd4158b-0e45-42bc-b56f-a4c1f856814d"
url = f"https://api.onepay.la/v1/customers/{customer_id}/cards"
headers = {
"Authorization": "Bearer sk_test_xxx"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data["data"]) # Array de tarjetas
print(data["current_page"]) # Página actual
```
```php PHP theme={null}
"https://api.onepay.la/v1/customers/{$customerId}/cards",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data["data"]); // Array de tarjetas
echo $data["current_page"]; // Página actual
curl_close($ch);
?>
```
### Response
Número de la página actual
URL para acceder a la primera página de resultados
Índice inicial del primer elemento en la página actual
URL para acceder a la siguiente página de resultados. Será `null` si es la última página
URL base de la API sin los parámetros de paginación
Cantidad de elementos por página
URL para acceder a la página anterior. Será `null` si es la primera página
Índice final del último elemento en la página actual
Datos de la página actual
Identificador único de la tarjeta en formato UUID
Marca de la tarjeta
Etiqueta de la tarjeta
Últimos cuatro dígitos de la tarjeta
Fecha de expiración de la tarjeta
Identificador único del cliente en formato UUID
Fecha y hora de creación de la tarjeta
País de la tarjeta
### Ejemplo de petición
```json 200 theme={null}
{
{
"data":[
{
"id": "9a7a7105-631d-4ad0-8e06-5c7bc2dfe32e",
"brand": "mastercard",
"label": "**** **** **** 8212",
"last_four": "8212",
"expiration_date": "2030-09-30",
"customer_id": "9a708f99-fc8b-4a09-ad20-bea12f4af1b3",
"created_at": "2024-12-12 10:30:01",
"country": "CO"
}
],
"current_page":1,
"first_page_url":"https:\/\/api.onepay.la\/v1\/customers\/9a7a6ccf-f75c-45f9-ad11-aae3c80971f0\/cards?page=1",
"from":null,
"next_page_url":null,
"path":"https:\/\/api.onepay.la\/v1\/customers\/9a7a6ccf-f75c-45f9-ad11-aae3c80971f0\/cards",
"per_page":20,
"prev_page_url":null,
"to":null
}
}
```
```json 422 theme={null}
{
"message": "Registro no encontrado, Cliente no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Crear clientes
Source: https://docs.onepay.la/client/customers/create
POST /customers
Crea un nuevo cliente en tu cuenta.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Tipo de usuario, valores permitidos: natural, company
Primer Nombre del cliente
Apellidos del cliente
Correo electrónico del cliente
Número de teléfono del cliente usa el prefijo de la región ejemplo: +57
Tipo de documento de identidad (CC, CE, NIT, PASSPORT)
Número de documento de identidad
Habilita notificaciones automáticas por email y SMS al cliente sobre pagos aprobados, rechazados, y links de pago. Valor por defecto: `true`.
Nacionalidad del cliente, Formato ISO 3166-1 alpha-2
Fecha de nacimiento del cliente, formato YYYY-MM-DD
Id del cliente al que se relaciona
### Response
Identificador único del cliente en formato UUID
Nombre del cliente
Correo electrónico del cliente
Número de teléfono del cliente
Número de documento de identidad del cliente
Tipo de documento de identidad del cliente (ej. DNI, RUC, CE)
Fecha y hora de creación del cliente
```json 200 theme={null}
{
"id":"9da58912-101d-46f8-86c9-20a52119c0bf",
"first_name":"John",
"last_name":"Doe",
"email":"john.doe@example.com",
"phone":"+573100001020",
"document_type":"CC",
"document_number":"1060500333",
"nationality":"CO",
"birthdate":"1990-01-01",
"created_at":"2024-12-04T20:09:08.000000Z"
}
```
```json 422 theme={null}
{
"message":"El campo nombre es obligatorio. (y 6 errores m\u00e1s)",
"code":10001,
"code_name":"validation_error",
"errors":{
"first_name":[
"El campo nombre es obligatorio."
],
"last_name":[
"El campo apellido es obligatorio."
],
"phone":[
"El campo tel\u00e9fono es obligatorio."
],
"email":[
"El campo correo electr\u00f3nico es obligatorio."
],
"user_type":[
"El campo user type es obligatorio."
],
"document_type":[
"El campo document type es obligatorio."
],
"document_number":[
"El campo document number es obligatorio."
],
"nationality":[
"El código de país debe seguir el formato ISO 3166-1 alpha-2"
],
"birthdate":[
"La fecha debe tener el formato YYYY-MM-DD"
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
```bash cURL theme={null}
curl https://api.onepay.la/v1/customers \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: customer-001" \
-d '{
"user_type": "natural",
"first_name": "Juan",
"last_name": "Pérez",
"email": "juan@example.com",
"phone": "+573001234567",
"document_type": "CC",
"document_number": "1234567890",
"enable_notifications": true
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/customers', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'customer-001'
},
body: JSON.stringify({
user_type: 'natural',
first_name: 'Juan',
last_name: 'Pérez',
email: 'juan@example.com',
phone: '+573001234567',
document_type: 'CC',
document_number: '1234567890',
enable_notifications: true
})
});
const customer = await response.json();
console.log(customer);
```
```python Python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/customers',
headers={
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'customer-001'
},
json={
'user_type': 'natural',
'first_name': 'Juan',
'last_name': 'Pérez',
'email': 'juan@example.com',
'phone': '+573001234567',
'document_type': 'CC',
'document_number': '1234567890',
'enable_notifications': True
}
)
customer = response.json()
print(customer)
```
```php PHP theme={null}
"https://api.onepay.la/v1/customers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json",
"x-idempotency: customer-001"
],
CURLOPT_POSTFIELDS => json_encode([
"user_type" => "natural",
"first_name" => "Juan",
"last_name" => "Pérez",
"email" => "juan@example.com",
"phone" => "+573001234567",
"document_type" => "CC",
"document_number" => "1234567890",
"enable_notifications" => true
])
]);
$response = curl_exec($curl);
curl_close($curl);
$customer = json_decode($response, true);
print_r($customer);
?>
```
# Eliminar cliente
Source: https://docs.onepay.la/client/customers/delete
DELETE /customers/{customer_id}
Elimina un cliente específico de tu cuenta.
### Parámetros de Ruta
ID del cliente a eliminar. [Ver cómo crear clientes](/client/customers/create).
### Response
La petición retorna un código de estado HTTP 201 sin contenido en el cuerpo de la respuesta.
```json 200 theme={null}
{}
```
```json 422 theme={null}
{
"message": "Registro no encontrado, Cliente no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Detalles de un cliente
Source: https://docs.onepay.la/client/customers/detail
GET /customers/{customer_id}
Obtiene los detalles de un cliente específico.
### Parámetros de Ruta
ID del cliente que deseas consultar. [Crear cliente](/client/customers/create).
### Response
Identificador único del cliente en formato UUID
Nombre del cliente
Correo electrónico del cliente
Número de teléfono del cliente
Número de documento de identidad del cliente
Tipo de documento de identidad del cliente (ej. DNI, RUC, CE)
Fecha y hora de creación del cliente
```json 200 theme={null}
{
"id":"9da58912-101d-46f8-86c9-20a52119c0bf",
"first_name":"John",
"last_name":"Doe",
"email":"john.doe@example.com",
"phone":"+573100001020",
"document_type":"CC",
"document_number":"1060500333",
"created_at":"2024-12-04T20:09:08.000000Z"
}
```
```json 404 theme={null}
{
"message": "Cliente no encontrado",
"code": 10004,
"code_name": "not_found"
}
```
# Introducción
Source: https://docs.onepay.la/client/customers/index
Gestiona los clientes de tus transacciones.
## ¿Qué es un Cliente?
Un cliente es la representación de una persona natural o jurídica dentro de OnePay. Es el objeto central al que se asocian métodos de pago (tarjetas, cuentas bancarias), cobros y dispersiones.
**Debes crear un cliente antes de poder:**
* Registrar tarjetas o cuentas bancarias
* Crear cargos (débitos directos)
* Enviar dispersiones (payouts)
* Crear suscripciones
## ¿Cuándo crear un Cliente?
| Escenario | ¿Necesitas un cliente? |
| ------------------------------------------------ | ------------------------------------- |
| Enviar un link de pago (`POST /payments`) | No (solo necesitas `phone` o `email`) |
| Debitar una tarjeta o cuenta (`POST /charges`) | Sí |
| Dispersar dinero a un tercero (`POST /cashouts`) | Sí |
| Crear una suscripción recurrente | Sí |
| Emitir una tarjeta (Issuing) | Sí |
## Tipos de cliente
* **`natural`**: Persona natural (identificada con CC, CE o PASSPORT)
* **`company`**: Persona jurídica (identificada con NIT)
## Ejemplo rápido
```bash theme={null}
curl https://api.onepay.la/v1/customers \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cli-001" \
-d '{
"user_type": "natural",
"first_name": "María",
"last_name": "López",
"email": "maria@ejemplo.com",
"phone": "+573201112233",
"document_type": "CC",
"document_number": "1060500333"
}'
```
## Relaciones
```
Cliente
├── Cuentas bancarias (/accounts)
├── Tarjetas (/cards)
├── Suscripciones (/subscriptions)
├── Tarjetas emitidas (/issuing/cards)
└── Billetera (/wallets)
```
Para consultar los métodos de pago de un cliente específico, usa:
* [Cuentas del cliente](accounts) - `GET /customers/{id}/accounts`
* [Tarjetas del cliente](cards) - `GET /customers/{id}/cards`
* [Tarjetas emitidas](issuing-cards) - `GET /customers/{id}/issuing-cards`
## Endpoints
| Método | Endpoint | Descripción |
| -------- | --------------------- | --------------------- |
| `POST` | [/customers](create) | Crear cliente |
| `GET` | [/customers](list) | Listar clientes |
| `GET` | [/customers/](detail) | Detalle de un cliente |
| `DELETE` | [/customers/](delete) | Eliminar cliente |
# Tarjetas emitidas a un cliente
Source: https://docs.onepay.la/client/customers/issuing-cards
GET /customers/{customer_id}/issuing-cards
Obtiene las tarjetas emitidas a un cliente específico.
### Parámetros de Ruta
ID del cliente dueño de las tarjetas emitidas. [Crear cliente](/client/customers/create).
### Response
Número de la página actual
URL para acceder a la primera página de resultados
Índice inicial del primer elemento en la página actual
URL para acceder a la siguiente página de resultados. Será `null` si es la última página
URL base de la API sin los parámetros de paginación
Cantidad de elementos por página
URL para acceder a la página anterior. Será `null` si es la primera página
Índice final del último elemento en la página actual
Datos de la página actual
Identificador único de la tarjeta en formato UUID
Marca de la tarjeta
Etiqueta de la tarjeta
Últimos cuatro dígitos de la tarjeta
Fecha de expiración de la tarjeta
Identificador único del cliente en formato UUID
Fecha y hora de creación de la tarjeta
País de la tarjeta
### Ejemplo de petición
```json 200 theme={null}
{
"data": [
{
"id": "9e41fe85-a21b-4145-b127-b9ddd593be5b",
"status": "created",
"last_4": null,
"nickname": null,
"type": "physical",
"customer_id": "9e41fe85-a058-4afc-9940-09764468aa5c",
"wallet_id": "019523d3-419c-7097-a343-b39a8eb7a50c"
}
],
"current_page": 1,
"from": 1,
"last_page": 1,
"per_page": 15,
"to": 1,
"total": 1
}
```
```json 422 theme={null}
{
"message": "Registro no encontrado, Cliente no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Listado de clientes
Source: https://docs.onepay.la/client/customers/list
GET /customers
Obtiene la lista de clientes registrados en tu cuenta de OnePay.
**También disponible vía `QUERY`.** Para que la cédula, el teléfono o el email de búsqueda no queden en la URL, este endpoint acepta el método `QUERY`: los mismos parámetros van en el cuerpo JSON en vez de la query string. Ver la [guía del método QUERY](/guides/metodo-query) para ejemplos. El `GET` sigue funcionando igual.
### Query Parameters
Búsqueda global por nombre, documento, teléfono o correo del cliente (coincidencia parcial).
Número de página para paginación.
Cantidad de resultados por página (máximo 100).
Filtra clientes por correo electrónico.
Filtra clientes por número de documento.
Filtra clientes por número de teléfono.
```bash cURL theme={null}
curl https://api.onepay.la/v1/customers?page=1&limit=20 \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/customers?page=1&limit=20', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
```
```python Python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/customers',
params={'page': 1, 'limit': 20},
headers={
'Authorization': 'Bearer sk_test_xxx'
}
)
data = response.json()
```
```php PHP theme={null}
"https://api.onepay.la/v1/customers?page=1&limit=20",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($curl);
$data = json_decode($response, true);
?>
```
### Response
Número de la página actual
URL para acceder a la primera página de resultados
Índice inicial del primer elemento en la página actual
URL para acceder a la siguiente página de resultados. Será `null` si es la última página
URL base de la API sin los parámetros de paginación
Cantidad de elementos por página
URL para acceder a la página anterior. Será `null` si es la primera página
Índice final del último elemento en la página actual
Datos de la página actual
Identificador único del cliente en formato UUID
Nombre del cliente
Correo electrónico del cliente
Número de teléfono del cliente
Número de documento de identidad del cliente
Tipo de documento de identidad del cliente (ej. DNI, RUC, CE)
Fecha y hora de creación del cliente
```json 200 theme={null}
{
"data":[
{
"id":"9da58912-101d-46f8-86c9-20a52119c0bf",
"first_name":"John",
"last_name":"Doe",
"email":"john.doe@example.com",
"phone":"+573100001020",
"document_type":"CC",
"document_number":"1060500333",
"created_at":"2024-12-04T20:09:08.000000Z"
}
],
"current_page":1,
"first_page_url":"https:\/\/api.onepay.la\/v1\/customers?page=1",
"from":1,
"next_page_url":null,
"path":"https:\/\/api.onepay.la\/v1\/customers",
"per_page":20,
"prev_page_url":null,
"to":4
}
```
# Crear factura electrónica
Source: https://docs.onepay.la/client/electronic-invoices/create
POST /invoices
Crea una factura electrónica y, según la política, la timbra ante la DIAN.
Es [el mismo endpoint de crear factura](/client/invoices/create). Mandar `items` es lo que hace que OnePay emita el documento ante la DIAN en vez de registrar uno externo; en ese caso `provider`, `provider_id` y `amount` los pone el sistema.
Responde `201` sin esperar a la DIAN. El resultado del timbrado llega por el webhook `invoice.stamped` o `invoice.stamp_rejected`.
### Headers
Esta ruta no usa el header `x-idempotency`: la creación es idempotente **por
documento**. Un reintento con la misma `reference` (y `provider_id`) devuelve
la factura ya creada — genera la `reference` una sola vez por documento, no
una nueva por intento, o un timeout de red puede terminar en dos documentos
ante la DIAN. El header sí es obligatorio en
[emisión](/client/electronic-invoices/stamp) y
[notas crédito](/client/electronic-invoices/credit-notes).
### Body
Cliente al que se le factura. Debe tener completos los datos que exige la DIAN — ver [datos del receptor](/client/electronic-invoices/index#datos-que-exige-el-receptor). Si falta alguno, la respuesta es `422` con todos los campos faltantes.
Líneas de la factura. Mínimo 1, máximo 200. Cada línea puede venir del catálogo (`price_id`) o definirse suelta.
Precio del catálogo. OnePay resuelve descripción, monto e impuesto. Requerido si no mandas `description` y `unit_amount`.
Descripción de la línea, hasta 500 caracteres. Sobreescribe el nombre del precio si mandas ambos.
Cantidad. Admite decimales (por ejemplo `1.5` horas). Por defecto `1`, máximo `100000`.
Valor unitario **en centavos**. `8990000` son $89.900 COP. Máximo `10000000000` ($100.000.000).
Tarifa del impuesto en porcentaje. `0` es una línea exenta o excluida. Si la omites, se hereda del precio y luego del producto.
Tipo de impuesto. Por defecto `IVA`.
`exclusive` (por defecto) suma el impuesto sobre `unit_amount`. `inclusive` significa que `unit_amount` ya lo trae y OnePay lo desagrega.
Código de unidad de medida (UNECE Rec 20) que exige el XML. Por defecto `94` (unidad).
Código del producto según el estándar que uses.
Estándar del código: `999` (interno), `UNSPSC`, `GTIN`.
Si se emite ante la DIAN y cuándo:
* `none` **(por defecto)** — no se emite. La factura se crea y se cobra igual, sin documento fiscal y sin exigir los datos fiscales del cliente.
* `on_payment` — al aprobarse el pago.
* `on_issue` — al crear la factura, antes de cobrar.
* `manual` — cuando llames a `/stamp`.
Ver [cuándo se timbra](/client/electronic-invoices/index#cuando-se-timbra) antes de elegir `on_issue`.
Título del cobro que ve el cliente. Hasta 100 caracteres.
Descripción detallada. Hasta 2000 caracteres.
Referencia con la que el cliente consulta su deuda en el portal de pagos. Se recomienda el documento del titular.
Fecha de vencimiento del documento. No bloquea el pago: alimenta las reglas de
cobranza ancladas al vencimiento (recordatorios de "por vencer", "vence hoy" y mora)
y se copia al cobro que OnePay genera para la factura.
Fecha de pago oportuno: último día para pagar sin recargo ni suspensión del servicio.
Es informativa — no bloquea el pago ni expira el cobro — y es distinta de `due_date`:
un recibo puede tener las dos. Se copia al cobro que OnePay genera para la factura,
y las reglas de cobranza pueden anclar recordatorios a esta fecha.
Moneda. Por defecto la de tu empresa.
Datos adicionales que quieras persistir en la factura.
**El total de la factura tiene que ser cobrable.** La suma de las líneas debe quedar entre `10000` ($100) y `10000000000` ($100.000.000), el mismo rango que acepta el flujo sin `items`.
Fuera de ahí la respuesta es `422` con `invalid_invoice_line`. El caso que más sorprende es el total en cero: una factura gratis generaría un cobro que nadie puede pagar.
```bash cURL theme={null}
curl -X POST https://api.onepay.la/v1/invoices \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "cus_01J8XK2P9WQZ",
"name": "Plan Fibra 200 Mbps - agosto 2026",
"stamp_policy": "on_payment",
"due_date": "2026-08-16",
"timely_payment_date": "2026-08-11",
"items": [
{ "description": "Plan Fibra 200 Mbps", "unit_amount": 8990000, "tax": { "rate": 19 } },
{ "price_id": "price_01J8XK7T2M", "quantity": 1 }
]
}'
```
```json 201 theme={null}
{
"id": "inv_01J8XK9V4N",
"status": "CREATED",
"fiscal_status": null,
"stamp_policy": "on_payment",
"currency": "COP",
"due_date": "2026-08-16",
"timely_payment_date": "2026-08-11",
"customer": {
"id": "cus_01J8XK2P9WQZ",
"name": "Ana Ramírez",
"email": "ana@ejemplo.com",
"document_type": "CC",
"document_number": "1020304050"
},
"items": [
{
"description": "Plan Fibra 200 Mbps",
"quantity": 1,
"unit_amount": 8990000,
"subtotal": 8990000,
"tax_type": "IVA",
"tax_rate": 19,
"tax_amount": 1708100,
"total": 10698100,
"unit_measure": "94",
"price_id": null
}
],
"totals": { "subtotal": 8990000, "tax_amount": 1708100, "total": 10698100 },
"amount": 106981,
"payment_id": "pay_01J8XKC5D2",
"stampings": [],
"created_at": "2026-08-01T14:22:10+00:00"
}
```
```json 422 theme={null}
{
"code": "customer_not_invoiceable",
"message": "No se puede facturar: al cliente le faltan datos que exige la DIAN (dirección).",
"errors": {
"customer.address": ["required"]
}
}
```
```json 422 theme={null}
{
"code": "invalid_invoice_line",
"message": "El total de la factura (0 centavos) está fuera del rango cobrable (10000 a 10000000000 centavos)."
}
```
# Emitir nota crédito
Source: https://docs.onepay.la/client/electronic-invoices/credit-notes
POST /invoices/{invoice}/credit-notes
Anula o devuelve, total o parcialmente, una factura ya timbrada.
Una nota crédito no es otra factura: es otro documento fiscal sobre la misma venta, con su propia numeración y apuntando a la factura que corrige. Por eso una factura puede tener varias, una por cada devolución.
Si reembolsas un cobro desde OnePay, la nota crédito se emite sola. Este endpoint es para los casos que no pasan por un reembolso: un error en la factura, una anulación acordada, una devolución que gestionas por fuera.
Necesitas una resolución de la DIAN con `document_type: "credit_note"` y su propio prefijo. Las notas llevan numeración aparte de las facturas.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Monto a devolver **en centavos**. Omítelo para anular la factura completa.
OnePay no deja que la suma de las notas emitidas supere el total de la factura: sin ese tope, dos devoluciones parciales podrían descontar más IVA del que declaraste.
Motivo de la nota. Hasta 500 caracteres. Queda guardado en el documento.
```bash cURL theme={null}
curl -X POST https://api.onepay.la/v1/invoices/inv_01J8XK9V4N/credit-notes \
-H "Authorization: Bearer $ONEPAY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 3b1c9d2e-7f4a-4c8b-9e1d-5a2f8c3b7e01" \
-d '{
"amount": 15000000,
"reason": "Instalación no realizada"
}'
```
```json 201 theme={null}
{
"id": "stm_01J8XKB2R7",
"type": "credit_note",
"status": "accepted",
"number": "NC900",
"cufe": "d7b2f4a9...",
"xml_url": "https://...",
"pdf_url": "https://...",
"replaces_id": "stm_01J8XKA1Q3",
"total": 15000000,
"currency": "COP",
"stamped_at": "2026-08-05T10:14:02+00:00"
}
```
```json 422 theme={null}
{
"code": "credit_note_not_issuable",
"message": "La nota crédito por 15000000 excede lo que queda por devolver de la factura: total 28548100, ya devuelto 20000000, disponible 8548100."
}
```
# Consultar factura
Source: https://docs.onepay.la/client/electronic-invoices/get
GET /invoices/{invoice}
Devuelve la factura con sus líneas y su historial fiscal.
Es [el mismo endpoint de detalle de siempre](/client/invoices/get). Sobre una factura emitida por OnePay agrega el bloque fiscal.
No uses este endpoint para esperar el CUFE. El timbrado es asíncrono y el resultado te llega por el webhook `invoice.stamped`; hacer polling acá solo gasta requests.
El arreglo `stampings` trae el historial fiscal completo, del más nuevo al más viejo: la factura de venta y cada nota crédito o débito que la corrige.
```bash cURL theme={null}
curl https://api.onepay.la/v1/invoices/inv_01J8XK9V4N \
-H "Authorization: Bearer $ONEPAY_API_KEY"
```
```json 200 theme={null}
{
"id": "inv_01J8XK9V4N",
"status": "PAID",
"fiscal_status": "accepted",
"stamp_policy": "on_payment",
"currency": "COP",
"due_date": "2026-08-16",
"timely_payment_date": "2026-08-11",
"customer": {
"id": "cus_01J8XK2P9WQZ",
"name": "Ana Ramírez",
"email": "ana@ejemplo.com",
"document_type": "CC",
"document_number": "1020304050"
},
"items": [
{
"description": "Plan Fibra 200 Mbps",
"quantity": 1,
"unit_amount": 8990000,
"subtotal": 8990000,
"tax_type": "IVA",
"tax_rate": 19,
"tax_amount": 1708100,
"total": 10698100,
"unit_measure": "94"
}
],
"totals": { "subtotal": 23990000, "tax_amount": 4558100, "total": 28548100 },
"amount": 285481,
"payment_id": "pay_01J8XKC5D2",
"stampings": [
{
"id": "stm_01J8XKB2R7",
"type": "credit_note",
"status": "accepted",
"number": "NC900",
"cufe": "d7b2f4a9...",
"replaces_id": "stm_01J8XKA1Q3",
"total": 15000000,
"stamped_at": "2026-08-05T10:14:02+00:00"
},
{
"id": "stm_01J8XKA1Q3",
"type": "invoice",
"status": "accepted",
"number": "FE1",
"cufe": "a3f5c8e2...",
"xml_url": "https://...",
"pdf_url": "https://...",
"replaces_id": null,
"total": 28548100,
"stamped_at": "2026-08-02T09:03:44+00:00",
"sent_at": "2026-08-02T09:03:51+00:00"
}
],
"created_at": "2026-08-01T14:22:10+00:00"
}
```
# Introducción
Source: https://docs.onepay.la/client/electronic-invoices/index
Emite facturas electrónicas ante la DIAN desde OnePay — cuándo timbrar, qué datos exige el receptor, notas crédito y webhooks.
Esta funcionalidad está en habilitación. Para activarla en tu empresa, escríbenos por el chat del [panel de administración](https://admin.onepay.la): el proceso incluye cargar tu resolución de la DIAN y completar la habilitación de tu empresa como facturador electrónico.
## Qué hace
OnePay emite la factura electrónica **a nombre de tu empresa** ante la DIAN, con tu resolución y tu numeración, y le entrega el documento a tu cliente.
Es **el mismo endpoint** que [Facturas](/client/invoices/index) — `POST /v1/invoices` — y el mismo recurso. Lo que cambia es si mandas `items`:
| | Sin `items` | Con `items` |
| ----------------- | ------------------------------------------------- | ------------------------------------ |
| Origen | Ya existe en tu sistema (Wispro, Siigo, SAEplus…) | Nace en OnePay |
| Qué hace OnePay | La cobra | La **emite** ante la DIAN y la cobra |
| Documento legal | El de tu sistema | El XML que OnePay timbra |
| Campos que mandas | `provider`, `provider_id`, `reference`, `amount` | `customer_id`, `items` |
En los dos casos la factura obtiene su cobro asociado, aparece en el mismo listado y se consulta por la misma URL.
Si ya facturas en otro sistema y solo necesitas recaudar, no cambia nada para ti: sigue enviando el mismo payload de siempre. `items` es aditivo.
***
## Cuándo se timbra
El parámetro más importante de la integración es `stamp_policy`, porque decide **en qué momento el documento existe ante la DIAN**.
| Política | Emite | Para qué |
| ---------------------- | ------------------------- | --------------------------------------------------------------------- |
| `none` *(por defecto)* | Nunca | Facturas por otro sistema, o todavía no estás habilitado ante la DIAN |
| `on_payment` | Cuando el pago se aprueba | Venta de contado |
| `on_issue` | Al crear la factura | Venta a crédito, cobro anticipado |
| `manual` | Cuando llamas a `/stamp` | Necesitas revisar antes de emitir |
**`none` no es lo mismo que `manual`.** Con `manual` la intención es emitir más tarde; con `none` no se emite nunca. La diferencia importa: una factura "pendiente de emitir" que en realidad nunca se va a emitir es indistinguible de una que alguien olvidó.
Con `none` la factura existe igual, con sus líneas y su cobro — simplemente no hay documento fiscal. Y como no lo va a haber, **no se te exigen los datos fiscales del cliente**: dirección, dígito de verificación ni responsabilidades fiscales.
**`none` es el valor por defecto.** Si no mandas `stamp_policy`, la factura NO se emite ante la DIAN.
Es deliberado: emitir un documento con efectos tributarios tiene que ser una decisión explícita. Si se te olvida el parámetro, el resultado es una factura sin emitir —que puedes emitir después con `/stamp`— y no un documento ante la DIAN que haya que anular con una nota crédito.
**Con `on_issue` el documento se emite antes de saber si te van a pagar.** Si el cobro falla o lo reembolsas, tienes una factura viva ante la DIAN por una venta que no ocurrió, y la única salida legal es una nota crédito.
OnePay la emite automáticamente al reembolsar, pero si tu operación no necesita facturar por anticipado, `on_payment` te evita el problema entero.
***
## Datos que exige el receptor
La DIAN no acepta una factura con el receptor incompleto. Lo que se exige depende del tipo de documento:
| Campo | Siempre | Solo si NIT o RUT |
| -------------------------- | ------- | ----------------- |
| Correo electrónico | ✅ | |
| Nombre o razón social | ✅ | |
| Tipo y número de documento | ✅ | |
| Dirección | ✅ | |
| Dígito de verificación | | ✅ |
| Responsabilidades fiscales | | ✅ |
Si falta algo, la API responde `422` con **todos** los campos faltantes de una vez, no con el primero:
```json theme={null}
{
"code": "customer_not_invoiceable",
"message": "No se puede facturar: al cliente le faltan datos que exige la DIAN (dirección, dígito de verificación).",
"errors": {
"customer.address": ["required"],
"customer.document_verification": ["required"]
}
}
```
***
## Flujo
```mermaid theme={null}
sequenceDiagram
participant TS as Tu sistema
participant OP as OnePay
participant DIAN as DIAN
participant CF as Cliente final
TS->>OP: 1. POST /invoices (con items)
OP-->>TS: 2. 201 con totales calculados
Note right of OP: Responde sin esperar a la DIAN
alt stamp_policy = on_payment
CF->>OP: 3. Paga la factura
OP->>OP: 4. Pago aprobado
end
OP->>DIAN: 5. Timbra el documento
DIAN-->>OP: 6. Acepta o rechaza
alt Aceptada
OP-->>TS: 7. Webhook invoice.stamped
OP->>CF: 8. Envia XML + PDF por correo
else Rechazada
OP-->>TS: 7. Webhook invoice.stamp_rejected
end
```
**El timbrado es asíncrono.** La DIAN puede tardar segundos o minutos, así que `POST /v1/invoices` responde de inmediato con `fiscal_status: null` y el resultado te llega por webhook. No hagas polling contra el endpoint de detalle esperando el CUFE.
***
## Ejemplo completo de implementación
Un ISP que cobra internet mensual y quiere que OnePay emita sus facturas.
### Paso 1 — Carga tu resolución de la DIAN
Una sola vez, con los datos que aparecen en tu resolución del portal MUISCA.
```bash theme={null}
curl -X POST https://api.onepay.la/v1/fiscal-resolutions \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"number": "18760000001",
"prefix": "FE",
"document_type": "invoice",
"from": 1,
"to": 5000,
"valid_from": "2026-01-15",
"valid_until": "2027-01-15",
"technical_key": "fc8eac4227b2b1e8..."
}'
```
Queda en `draft`. Actívala cuando la hayamos validado:
```bash theme={null}
curl -X POST https://api.onepay.la/v1/fiscal-resolutions/{id}/activate \
-H "Authorization: Bearer sk_test_xxx"
```
Carga también una resolución con `document_type: "credit_note"` y su propio prefijo. Las notas crédito llevan numeración aparte, y sin ella no vas a poder anular ni devolver.
### Paso 2 — Asegura que tu cliente tenga los datos fiscales
```bash theme={null}
curl -X POST https://api.onepay.la/v1/customers \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"first_name": "Ana",
"last_name": "Ramírez",
"email": "ana@ejemplo.com",
"phone": "+573001234567",
"document_type": "CC",
"document_number": "1020304050",
"address": { "line": "Calle 45 # 12-30", "city_code": "17001" }
}'
```
### Paso 3 — Previsualiza los totales
Útil para mostrar el detalle en tu propia interfaz antes de emitir. No crea nada.
```bash theme={null}
curl -X POST https://api.onepay.la/v1/invoices/preview \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "description": "Plan Fibra 200 Mbps - agosto", "unit_amount": 8990000, "tax": { "rate": 19 } }
]
}'
```
```json theme={null}
{
"data": {
"items": [
{
"description": "Plan Fibra 200 Mbps - agosto",
"quantity": 1,
"unit_amount": 8990000,
"subtotal": 8990000,
"tax_rate": 19,
"tax_amount": 1708100,
"total": 10698100
}
],
"subtotal": 8990000,
"tax_amount": 1708100,
"total": 10698100
}
}
```
**Todos los montos van en centavos.** `8990000` son \$89.900 COP. Es el mismo criterio de entrada y de salida, y evita que un decimal mal redondeado haga que la DIAN rechace el documento.
### Paso 4 — Crea la factura
```bash theme={null}
curl -X POST https://api.onepay.la/v1/invoices \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "cus_01J8XK2P9WQZ",
"name": "Plan Fibra 200 Mbps - agosto 2026",
"stamp_policy": "on_payment",
"due_date": "2026-08-16",
"timely_payment_date": "2026-08-11",
"reference": "1020304050",
"items": [
{ "description": "Plan Fibra 200 Mbps - agosto", "unit_amount": 8990000, "tax": { "rate": 19 } },
{ "description": "Instalación", "unit_amount": 15000000, "tax": { "rate": 19 } }
],
"metadata": { "contrato": "CT-88421" }
}'
```
```json theme={null}
{
"id": "inv_01J8XK9V4N",
"status": "CREATED",
"fiscal_status": null,
"stamp_policy": "on_payment",
"currency": "COP",
"due_date": "2026-08-16T00:00:00.000000Z",
"timely_payment_date": "2026-08-11T00:00:00.000000Z",
"customer": { "id": "cus_01J8XK2P9WQZ", "name": "Ana Ramírez", "document_number": "1020304050" },
"items": [ "..." ],
"totals": { "subtotal": 23990000, "tax_amount": 4558100, "total": 28548100 },
"amount": 285481,
"payment_id": "pay_01J8XKC5D2",
"stampings": []
}
```
Esta ruta no aplica idempotencia por header: la creación es idempotente **por
documento**. Si reintentas por un timeout con la misma `reference` (y
`provider_id`), OnePay te devuelve la factura ya creada en vez de crear otra —
por eso genera la `reference` una sola vez por documento, no una nueva por
intento. El header `x-idempotency` sí es obligatorio donde se emite documento
fiscal: [emisión](/client/electronic-invoices/stamp) y
[notas crédito](/client/electronic-invoices/credit-notes).
### Paso 5 — Escucha los webhooks
Con `on_payment`, cuando tu cliente pague, OnePay timbra y te avisa:
```json theme={null}
{
"event": "invoice.stamped",
"data": {
"invoice_id": "inv_01J8XK9V4N",
"stamping": {
"type": "invoice",
"status": "accepted",
"number": "FE1",
"cufe": "a3f5c8e2...",
"xml_url": "https://...",
"pdf_url": "https://...",
"total": 28548100
}
}
}
```
Si la DIAN rechaza:
```json theme={null}
{
"event": "invoice.stamp_rejected",
"data": {
"invoice_id": "inv_01J8XK9V4N",
"stamping": {
"status": "rejected",
"number": "FE1",
"rejection_reason": "Regla FAJ01: el receptor no tiene responsabilidades fiscales"
}
}
}
```
**Guarda el `cufe` y el `xml_url` en tu sistema.** El XML es el documento legal; el PDF es solo su representación gráfica.
Fíjate en `totals` y en `amount`: los totales fiscales van **en centavos** y agrupados aparte, mientras que `amount` es el monto en pesos de siempre, el que ya leen tus integraciones. Están separados a propósito — mezclar las dos unidades en el mismo nivel es la forma más fácil de cobrar cien veces de más.
### Paso 6 — Devoluciones
Si tienes que devolver dinero, emite una nota crédito. OnePay ya la emite sola cuando reembolsas un cobro, pero también puedes hacerlo directo:
```bash theme={null}
curl -X POST https://api.onepay.la/v1/invoices/inv_01J8XK9V4N/credit-notes \
-H "Authorization: Bearer sk_test_xxx" \
-H "x-idempotency: 6d2a9f4c-1e8b-4a5d-b3c7-9f0e2a6d8c14" \
-H "Content-Type: application/json" \
-d '{ "amount": 15000000, "reason": "Instalación no realizada" }'
```
Omite `amount` para anular la factura completa. Puedes emitir varias notas parciales sobre la misma factura; OnePay no deja que la suma supere el total.
***
## Errores
Todos traen un `code` estable sobre el que puedes ramificar sin leer el mensaje.
| `code` | Qué pasó |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `customer_not_invoiceable` | Al receptor le faltan datos que exige la DIAN |
| `invalid_invoice_line` | Una línea no se puede resolver (indica cuál con su índice), o el total queda fuera del rango cobrable |
| `credit_note_not_issuable` | La factura no está timbrada, o la nota excede lo que queda por devolver |
| `resolution_not_activatable` | La resolución está vencida o sin folios |
| `invoice_not_stampable` | La factura no se puede emitir: es importada de otro sistema, su `stamp_policy` no admite emisión manual, ya se timbró, o no tiene líneas |
***
## Preguntas frecuentes
OnePay te avisa al 80% y al 95% del rango consumido, y 30 días antes de que venza la resolución. Carga la siguiente resolución con anticipación y actívala: puedes tener varias cargadas, pero solo una activa por prefijo y tipo de documento.
Si te quedas sin folios, el timbrado falla con `resolution_not_activatable` y las facturas se siguen creando pero no se emiten.
No automáticamente. Las facturas que importas desde tu sistema de gestión no se timbran: OnePay asume que ya las emitiste tú. Si quieres migrar tu facturación a OnePay, escríbenos — hay que apagar la emisión en tu sistema anterior primero, o terminarías facturando dos veces la misma venta.
Puedes usar cualquiera de las dos formas. Con `tax.behavior: "inclusive"` el `unit_amount` ya trae el impuesto y OnePay lo desagrega; con `"exclusive"` (por defecto) el impuesto se suma encima.
El XML de la DIAN siempre lleva base e impuesto por separado, así que la desagregación ocurre igual — la diferencia es solo cómo nos mandas el precio.
Sí. En vez de `description` y `unit_amount`, manda `price_id` de un [Precio](/client/prices/index) y OnePay resuelve nombre, monto e impuesto. Puedes mezclar líneas del catálogo con líneas sueltas en la misma factura, y sobreescribir el impuesto de una línea puntual sin duplicar el producto.
Usa tu API key de pruebas. El entorno de pruebas tiene su propia resolución y su propia numeración, completamente separada de producción.
# Listar facturas
Source: https://docs.onepay.la/client/electronic-invoices/list
GET /invoices
Lista las facturas de tu empresa, emitidas e importadas.
Es [el mismo listado de siempre](/client/invoices/list). Las facturas emitidas por OnePay traen además el bloque fiscal (`fiscal_status`, `items`, `stampings`, `totals`); las importadas de tu sistema de gestión salen exactamente como antes.
Para ver solo las emitidas ante la DIAN, filtra por `fiscal_status`.
### Query
Filtra por estado ante la DIAN: `queued`, `accepted`, `rejected`, `contingency`.
Filtra por la referencia con la que creaste la factura.
Resultados por página. Máximo 100, por defecto 25.
```bash cURL theme={null}
curl "https://api.onepay.la/v1/invoices?fiscal_status=accepted&per_page=50" \
-H "Authorization: Bearer $ONEPAY_API_KEY"
```
```json 200 theme={null}
{
"data": [
{
"id": "inv_01J8XK9V4N",
"status": "PAID",
"fiscal_status": "accepted",
"stamp_policy": "on_payment",
"currency": "COP",
"customer": { "id": "cus_01J8XK2P9WQZ", "name": "Ana Ramírez" },
"totals": { "subtotal": 23990000, "tax_amount": 4558100, "total": 28548100 },
"stampings": [
{ "type": "invoice", "status": "accepted", "number": "FE1", "cufe": "a3f5c8e2..." }
]
}
],
"links": { "next": null },
"meta": { "current_page": 1, "total": 1 }
}
```
# Previsualizar totales
Source: https://docs.onepay.la/client/electronic-invoices/preview
POST /invoices/preview
Calcula subtotales, impuestos y total sin crear nada.
Úsalo para mostrar el detalle en tu interfaz antes de emitir. No crea la factura ni consume un consecutivo.
Es el mismo cálculo que hace la creación real. Si replicas la matemática de impuestos en tu lado, tu total y el nuestro van a diferir en algún redondeo — y esa diferencia solo aparece cuando la DIAN rechaza el documento.
### Body
Mismas líneas que en [crear factura](/client/electronic-invoices/create). Mínimo 1, máximo 200.
```bash cURL theme={null}
curl -X POST https://api.onepay.la/v1/invoices/preview \
-H "Authorization: Bearer $ONEPAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "description": "Plan Fibra 200 Mbps", "unit_amount": 8990000, "tax": { "rate": 19 } },
{ "description": "Instalación", "unit_amount": 15000000, "tax": { "rate": 0 } }
]
}'
```
```json 200 theme={null}
{
"data": {
"items": [
{
"description": "Plan Fibra 200 Mbps",
"quantity": 1,
"unit_amount": 8990000,
"subtotal": 8990000,
"tax_type": "IVA",
"tax_rate": 19,
"tax_amount": 1708100,
"total": 10698100,
"unit_measure": "94"
},
{
"description": "Instalación",
"quantity": 1,
"unit_amount": 15000000,
"subtotal": 15000000,
"tax_type": null,
"tax_rate": 0,
"tax_amount": 0,
"total": 15000000,
"unit_measure": "94"
}
],
"subtotal": 23990000,
"tax_amount": 1708100,
"total": 25698100
}
}
```
# Resoluciones DIAN
Source: https://docs.onepay.la/client/electronic-invoices/resolutions
POST /fiscal-resolutions
Carga y activa la resolución de facturación de tu empresa.
La resolución es el permiso de la DIAN para emitir documentos con un prefijo y un rango de números. La sacas del portal MUISCA y la cargas acá.
**Carga una resolución por tipo de documento.** Las facturas y las notas crédito llevan numeración separada: sin una resolución de `credit_note`, no vas a poder anular ni devolver.
## Cargar una resolución
Nace en estado `draft`. Activarla es un paso aparte, después de que validemos los datos: una resolución mal digitada no falla al guardarse, falla al timbrar la primera factura real.
### Body
Número de la resolución que asignó la DIAN.
Tipo de documento que numera: `invoice`, `credit_note` o `debit_note`.
Primer número del rango autorizado.
Último número del rango autorizado.
Prefijo autorizado. Acompaña al consecutivo en el número visible del documento (`FE1`, `NC900`).
Inicio de vigencia.
Fin de vigencia. Vencida deja de timbrar aunque queden números.
Fecha en que la DIAN expidió la resolución.
Clave técnica de la resolución. Entra en el cálculo del CUFE.
Se guarda encriptada y nunca vuelve en una respuesta de la API.
```bash cURL theme={null}
curl -X POST https://api.onepay.la/v1/fiscal-resolutions \
-H "Authorization: Bearer $ONEPAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"number": "18760000001",
"prefix": "FE",
"document_type": "invoice",
"from": 1,
"to": 5000,
"valid_from": "2026-01-15",
"valid_until": "2027-01-15",
"technical_key": "fc8eac4227b2b1e8..."
}'
```
```json 201 theme={null}
{
"id": "res_01J8XK5M2P",
"number": "18760000001",
"prefix": "FE",
"document_type": "invoice",
"status": "draft",
"from": 1,
"to": 5000,
"current": 0,
"next_number": 1,
"remaining": 5000,
"usage_percentage": 0,
"valid_until": "2027-01-15",
"is_expired": false,
"can_stamp": false
}
```
***
## Activar
`POST /fiscal-resolutions/{resolution}/activate`
Al activar una resolución, la anterior del mismo prefijo y tipo queda fuera de servicio. Dos resoluciones activas a la vez serían dos numeraciones corriendo en paralelo.
```bash theme={null}
curl -X POST https://api.onepay.la/v1/fiscal-resolutions/res_01J8XK5M2P/activate \
-H "Authorization: Bearer $ONEPAY_API_KEY"
```
Falla con `resolution_not_activatable` si está vencida o ya consumió todo su rango.
***
## Listar
`GET /fiscal-resolutions`
Devuelve todas tus resoluciones con su consumo. Los campos que importan para operar:
| Campo | |
| ------------------ | ------------------------------------------- |
| `next_number` | El siguiente consecutivo que se va a usar |
| `remaining` | Números que quedan disponibles |
| `usage_percentage` | Porcentaje del rango consumido |
| `can_stamp` | Si esta resolución puede emitir ahora mismo |
OnePay te avisa al 80% y al 95% del rango consumido, y 30 días antes del vencimiento. Conseguir una resolución nueva depende de los tiempos de la DIAN, así que carga la siguiente apenas recibas el primer aviso.
# Timbrar factura
Source: https://docs.onepay.la/client/electronic-invoices/stamp
POST /invoices/{invoice}/stamp
Dispara la emisión de una factura con política manual, o reintenta una on_issue que falló.
Para las facturas creadas con `stamp_policy: "manual"`, que esperan exactamente este llamado.
También sirve para reintentar una `on_issue` cuyo timbrado automático falló de forma permanente — por ejemplo, si al crearla no tenías una resolución activa. Su disparo ya ocurrió, así que sin esta puerta habría que recrear la factura.
**No aplica a `on_payment` ni a `none`.** Con `on_payment` el disparo es el pago, y emitir a mano generaría un documento fiscal por una venta que todavía no cobraste — justo lo que esa política evita. Para forzarlo, cambia la política a `manual`.
Responde `202`: encola el envío y te avisa por webhook. La DIAN puede tardar minutos, así que no se bloquea el request esperándola.
### Headers
Token único para garantizar la idempotencia de la petición
```bash cURL theme={null}
curl -X POST https://api.onepay.la/v1/invoices/inv_01J8XK9V4N/stamp \
-H "Authorization: Bearer $ONEPAY_API_KEY" \
-H "Idempotency-Key: 5c2e8a1b-9d3f-4e7c-8b2a-1f6d4c9e3b02"
```
```json 202 theme={null}
{
"id": "inv_01J8XK9V4N",
"status": "CREATED",
"fiscal_status": null,
"stamp_policy": "manual",
"total": 28548100,
"stampings": []
}
```
### Errores
Dos casos se rechazan de inmediato, sin encolar: una factura importada de otro sistema —que puede llegar porque esta subruta cuelga de `/invoices/{id}`— y una cuya política no admite emisión manual (`on_payment` o `none`).
```json 422 theme={null}
{
"code": "invoice_not_stampable",
"message": "La factura 9e8f1a2b… tiene stamp_policy `on_payment` y no se puede timbrar a mano: con `on_payment` la emisión la dispara el pago, y con `none` no se emite. Para forzarla, cambia la política a `manual`."
}
```
El resto se descubre al procesar, así que llegan como `invoice.stamp_rejected` o quedan en el log de la factura. Ninguno se arregla reintentando:
| Situación | Qué hacer |
| ------------------------------------- | ----------------------------------------------------------------------------------- |
| La factura ya fue timbrada | Para corregirla, emite una [nota crédito](/client/electronic-invoices/credit-notes) |
| La factura no tiene líneas | La DIAN no acepta un documento vacío |
| Al receptor le faltan datos | Completa los campos que indica el error |
| No hay resolución activa o sin folios | Carga y activa una [resolución](/client/electronic-invoices/resolutions) |
# [Flujo] Pago de facturas
Source: https://docs.onepay.la/client/flows/bill-payment
POST flows
Invoca un flujo para ante una acción del usuario.
### Body
Número de teléfono del cliente, debe incluir el prefijo internacional (por ejemplo: +573001234567).
Nombre del flujo a invocar.
Parámetros adicionales del flujo.
Referencia de pago para identificar la factura.
ID de la conversación, es opcional, si lo envía se cerrará la conversación al finalizar el flujo.
```json 200 theme={null}
no content
```
```json 422 theme={null}
{
"message": "El número de teléfono es requerido.",
"code": 10001,
"code_name": "validation_error",
"errors": {
"phone": [
"El número de teléfono es requerido."
],
"flow": [
"El nombre del flujo es requerido."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Invocar flujos
Source: https://docs.onepay.la/client/flows/create
POST flows
Invoca un flujo para ante una acción del usuario.
### Body
Número de teléfono del cliente.
Nombre del flujo a invocar.
Parámetros adicionales del flujo.
```json 200 theme={null}
no content
```
```json 422 theme={null}
{
"message": "El número de teléfono es requerido.",
"code": 10001,
"code_name": "validation_error",
"errors": {
"phone": [
"El número de teléfono es requerido."
],
"flow": [
"El nombre del flujo es requerido."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Eliminar facturas masivamente
Source: https://docs.onepay.la/client/invoices/bulk-delete
DELETE /invoices
Elimina de forma masiva todas las facturas pendientes de la empresa autenticada.
Esta acción es **irreversible**. Todas las facturas pendientes de la empresa serán eliminadas junto con sus pagos asociados. Úselo con precaución.
El proceso se ejecuta de forma **asíncrona**: el endpoint retorna inmediatamente con un `202 Accepted` y las facturas se eliminan en segundo plano. Cada factura eliminada también cancela y elimina su pago asociado.
Las facturas con estado `PAID` o `CONCILIATED` **no serán eliminadas**.
### Body
Razón de la eliminación. Determina el comportamiento de los eventos asociados al pago.
Valores permitidos:
* `DELETE_FROM_PROVIDER` — Eliminada desde el proveedor (dispara `PaymentDeletedEvent`).
* `PAID_FROM_PROVIDER` — Pagada desde el proveedor (elimina el pago silenciosamente, sin disparar eventos).
Referencia del pago externo en el proveedor. Solo aplica cuando `reason` es `PAID_FROM_PROVIDER`.
Cuando se envía este campo junto con `reason=PAID_FROM_PROVIDER`, OnePay genera automáticamente un **recibo de pago en PDF** para cada factura y lo envía al cliente por WhatsApp, confirmando que su pago fue registrado por la empresa. Esto aplica únicamente a los clientes que tengan un número de teléfono registrado.
Este campo es opcional. Si no se envía, las facturas se eliminan sin enviar recibos a los clientes.
Medio con el que los clientes pagaron por fuera de OnePay. Solo se registra cuando `reason` es `PAID_FROM_PROVIDER`; con cualquier otro motivo se ignora.
Es **texto libre** de hasta 60 caracteres (`Efectivo`, `Nequi`, `Consignación Bancolombia`, `Tarjeta`) y se aplica a **todas** las facturas del lote, así que úsalo solo cuando el medio sea el mismo para todas. Queda disponible en el detalle de cada factura como `paid_provider_method`.
A diferencia de `provider_payment_id` —que identifica un pago puntual y por eso no se guarda en cada factura del lote—, el medio de pago sí se persiste en todas.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/invoices \
-X DELETE \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"reason": "PAID_FROM_PROVIDER",
"provider_payment_id": "EXT-REF-001",
"payment_method": "Efectivo"
}'
```
```ts theme={null}
const response = await fetch('https://api.onepay.la/v1/invoices', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
reason: 'PAID_FROM_PROVIDER',
provider_payment_id: 'EXT-REF-001',
payment_method: 'Efectivo',
}),
});
// 202 Accepted — eliminación en progreso
```
```python theme={null}
import requests
response = requests.delete(
'https://api.onepay.la/v1/invoices',
headers={'Authorization': 'Bearer sk_test_xxx'},
json={
'reason': 'PAID_FROM_PROVIDER',
'provider_payment_id': 'EXT-REF-001',
'payment_method': 'Efectivo',
},
)
# 202 Accepted — eliminación en progreso
print(response.status_code)
```
### Response
```json 202 theme={null}
null
```
# Crear factura
Source: https://docs.onepay.la/client/invoices/create
POST /invoices
Crea una nueva factura y su Payment asociado.
**Este endpoint no usa `x-idempotency`.** A diferencia de otros `POST` de la API, aquí la cabecera
no tiene efecto: la protección contra duplicados es implícita. Si ya existe una factura con el
mismo `provider + reference + provider_id` en estado `CREATED`, OnePay devuelve `201` con **esa
factura**, sin crear un cobro nuevo.
Por eso los reintentos deben hacerse con **el mismo cuerpo**, y por eso `provider_id` tiene que ser
único por documento y en el tiempo: reenviarlo devuelve la factura vieja en vez de crear la nueva.
Ver [Homologación de la integración](/client/invoices/homologacion).
### Body
Valor con el que el usuario podrá consultar su deuda y realizar el pago en el portal de pagos. Se recomienda utilizar el documento de identidad del titular del servicio. El uso del número de contrato es posible, pero no es la opción más recomendada.
Identificador de **la factura** dentro de su sistema: el número del documento o un UUID propio. Entre 5 y 100 caracteres.
Debe ser **único por documento y en el tiempo**: no se reutiliza en el siguiente ciclo, ni para el mismo cliente, ni para el mismo contrato. Para identificar al cliente está `reference`.
Reenviar un `provider_id` ya usado no crea la factura nueva: mientras la anterior siga en estado `CREATED`, OnePay responde `201` con esa factura y el cobro nuevo no se genera.
Proveedor del sistema que se está integrando. Para solicitar la asignación de un proveedor, contacte al equipo de soporte a través de la burbuja de chat ubicada en la esquina inferior derecha del [panel de administración](https://admin.onepay.la).
Monto de la factura en pesos (COP). Debe estar entre 5.000 y 100.000.000.
Título con el que se le cobrará al usuario. Debe tener entre 5 y 100 caracteres.
**Ejemplos sugeridos:**
* `Factura #12314235 de Febrero del 2024`
* `Factura #2432543 | Mensualidad Internet`
Descripción detallada de la factura. Se propaga al Payment asociado. Mínimo 4 y máximo 2000 caracteres.
Número de WhatsApp del usuario al que desea cobrar, en formato E.164. Si no se incluye este valor, el usuario no será notificado por medio de WhatsApp.
Correo electrónico del usuario al que desea cobrar. Si no se incluye este valor, el usuario no será notificado por medio de correo electrónico.
Fecha de vencimiento de la factura. Este valor se utilizará para crear reglas de cobranza ancladas al vencimiento (recordatorios de "por vencer", "vence hoy" y mora) para esta factura en concreto.
**No bloquea el pago**: pasada esta fecha la factura se sigue pudiendo pagar. Se
copia al cobro que OnePay genera para cobrarla, así que aparece también como
`due_date` del `payment` asociado.
Una factura no recibe fecha de expiración propia: el cobro que la cobra expira
según la configuración de tu empresa. Ver [Crear cobro](/client/payments/create)
para la diferencia entre `due_date`, `timely_payment_date` y `expiration_date`.
Fecha de pago oportuno: último día en que el usuario puede pagar la factura sin
recargo ni suspensión del servicio. Es distinta de `due_date` — un recibo puede
tener las dos fechas.
**Es informativa**: no bloquea el pago ni expira el cobro. Se copia al cobro que
OnePay genera para cobrarla, así que aparece también como `timely_payment_date`
del `payment` asociado. Las reglas de cobranza pueden anclar recordatorios a esta
fecha (disparadores "antes", "el día" y "después" del pago oportuno, configurables
en el portal).
URL pública del documento PDF de la factura, en caso de tenerla.
Datos adicionales que desea persistir o guardar en la factura dentro de OnePay.
Configuración para pagos parciales. Permite que la factura sea pagada en múltiples transacciones.
Requiere que el feature **Pagos Parciales** esté habilitado en tu cuenta. Contacta a soporte para activarlo.
Monto mínimo por pago parcial en la moneda de la factura (ej: pesos). Mínimo: 1.
Monto máximo por pago parcial. Debe ser mayor que `min_amount`. Si no se envía, el máximo es el saldo restante.
Número máximo de pagos parciales permitidos. Mínimo: 2, Máximo: 10. Por defecto: 3.
Horas antes de que expire la ventana de pago parcial después del primer abono. Mínimo: 1, Máximo: 720. Por defecto: 24.
Al crear una factura, la respuesta incluye el campo `id` — este es el **identificador único de la factura en OnePay**.
Guárdalo en tu sistema ya que lo necesitarás para [actualizar](/client/invoices/update) o [eliminar](/client/invoices/delete) la factura posteriormente.
**Recomendación:** Almacena este valor como `external_id` (o equivalente) en tu sistema de gestión para asociar fácilmente tus registros con OnePay.
```bash cURL theme={null}
curl https://api.onepay.la/v1/invoices \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"reference": "1060500333",
"provider_id": "987654",
"provider": "biller",
"amount": 50000,
"name": "Internet plan - Octubre",
"description": "Factura de internet correspondiente al mes de octubre 2025",
"phone": "+573167591030",
"email": "cliente@ejemplo.com",
"due_date": "2025-10-20",
"timely_payment_date": "2025-10-15",
"document_url": "https://example.com/document.pdf",
"metadata": {
"key": "value"
}
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/invoices', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
reference: '1060500333',
provider_id: '987654',
provider: 'biller',
amount: 50000,
name: 'Internet plan - Octubre',
description: 'Factura de internet correspondiente al mes de octubre 2025',
phone: '+573167591030',
email: 'cliente@ejemplo.com',
due_date: '2025-10-20',
timely_payment_date: '2025-10-15',
document_url: 'https://example.com/document.pdf',
metadata: {
key: 'value'
}
})
});
const invoice = await response.json();
```
```python Python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/invoices',
headers={
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
json={
'reference': '1060500333',
'provider_id': '987654',
'provider': 'biller',
'amount': 50000,
'name': 'Internet plan - Octubre',
'description': 'Factura de internet correspondiente al mes de octubre 2025',
'phone': '+573167591030',
'email': 'cliente@ejemplo.com',
'due_date': '2025-10-20',
'timely_payment_date': '2025-10-15',
'document_url': 'https://example.com/document.pdf',
'metadata': {
'key': 'value'
}
}
)
invoice = response.json()
```
```php PHP theme={null}
"https://api.onepay.la/v1/invoices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"reference" => "1060500333",
"provider_id" => "987654",
"provider" => "biller",
"amount" => 50000,
"name" => "Internet plan - Octubre",
"description" => "Factura de internet correspondiente al mes de octubre 2025",
"phone" => "+573167591030",
"email" => "cliente@ejemplo.com",
"due_date" => "2025-10-20",
"timely_payment_date" => "2025-10-15",
"document_url" => "https://example.com/document.pdf",
"metadata" => [
"key" => "value"
]
])
]);
$response = curl_exec($curl);
$invoice = json_decode($response, true);
?>
```
### Response
```json 201 theme={null}
{
"id": "9da58912-101d-46f8-86c9-20a52119c0bf",
"name": "Internet plan - Octubre",
"description": "Factura de internet correspondiente al mes de octubre 2025",
"amount": 50000,
"provider": "biller",
"provider_id": "987654",
"reference": "1060500333",
"status": "CREATED",
"remarks": null,
"metadata": { "key": "value" },
"due_date": "2025-10-20T00:00:00.000000Z",
"timely_payment_date": "2025-10-15T00:00:00.000000Z",
"created_at": "2025-10-20T15:06:00.000000Z",
"updated_at": "2025-10-20T15:06:00.000000Z",
"payment_id": "c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
"is_test": false,
"partial_payment_config": null,
"payment": {
"id": "c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
"source": "Internet plan - Octubre",
"currency": "COP",
"amount": 50000,
"amount_label": "$ 50.000",
"title": "Internet plan - Octubre",
"description": "Internet plan - Octubre",
"phone": "+573167591030",
"expiration_at": null,
"due_date": "2025-10-20T00:00:00.000000Z",
"timely_payment_date": "2025-10-15T00:00:00.000000Z",
"document_link": "https://example.com/document.pdf",
"external_id": "987654",
"allows": { "accounts": true, "cards": true, "card_extra": false, "realtime": false },
"status": "pending",
"is_test": false,
"created_at": "2025-10-20T15:06:00.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
"redirect_url": null,
"provider_id": null,
"metadata": null,
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null
}
}
```
```json 201 Con pagos parciales theme={null}
{
"id": "9da58912-101d-46f8-86c9-20a52119c0bf",
"name": "Internet plan - Octubre",
"amount": 50000,
"provider": "biller",
"provider_id": "987654",
"reference": "1060500333",
"status": "CREATED",
"remarks": null,
"metadata": { "key": "value" },
"due_date": "2025-10-20T00:00:00.000000Z",
"timely_payment_date": "2025-10-15T00:00:00.000000Z",
"created_at": "2025-10-20T15:06:00.000000Z",
"updated_at": "2025-10-20T15:06:00.000000Z",
"payment_id": "c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
"is_test": false,
"partial_payment_config": {
"min_amount_in_cents": 1000000,
"max_amount_in_cents": null,
"max_payment_methods": 3,
"timeout_hours": 24
},
"payment": {
"id": "c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
"source": "Internet plan - Octubre",
"currency": "COP",
"amount": 50000,
"amount_label": "$ 50.000",
"title": "Internet plan - Octubre",
"description": "Internet plan - Octubre",
"phone": "+573167591030",
"expiration_at": null,
"due_date": "2025-10-20T00:00:00.000000Z",
"timely_payment_date": "2025-10-15T00:00:00.000000Z",
"document_link": "https://example.com/document.pdf",
"external_id": "987654",
"allows": { "accounts": true, "cards": true, "card_extra": false, "realtime": false },
"status": "pending",
"is_test": false,
"created_at": "2025-10-20T15:06:00.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
"redirect_url": null,
"provider_id": null,
"metadata": null,
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null,
"partial_payment": {
"total_paid_in_cents": 0,
"total_paid_label": "$ 0",
"remaining_amount_in_cents": 5000000,
"remaining_label": "$ 50.000",
"progress_percentage": 0,
"is_fully_paid": false,
"min_amount_in_cents": 1000000,
"max_amount_in_cents": null,
"max_payment_methods": 3,
"timeout_hours": 24,
"partial_expires_at": null,
"charges": []
}
}
}
```
```json 422 theme={null}
{
"message":"La solicitud contiene errores de validación.",
"code":10001,
"code_name":"validation_error",
"errors":{
"reference":["El campo referencia es obligatorio."],
"amount":["El monto debe ser al menos 5000."],
"name":["El nombre debe tener al menos 5 caracteres."],
"phone":["El teléfono debe estar en formato E.164."],
"email":["El correo electrónico no es válido."]
}
}
```
# Eliminar factura
Source: https://docs.onepay.la/client/invoices/delete
DELETE /invoices/{invoice_id}
Cancela el Payment asociado y marca la factura según el motivo.
### Path params
ID de la factura a eliminar. [Crear factura](/client/invoices/create).
### Body
Motivo de la eliminación. Valores permitidos:
* `DELETE_FROM_PROVIDER` — La factura fue eliminada desde el proveedor. **La factura se elimina.** Se notifica al cliente que la factura fue eliminada.
* `PAID_FROM_PROVIDER` — La factura fue pagada fuera de OnePay. **La factura no se elimina:** sobrevive en estado `PAID_FROM_PROVIDER`. El cobro asociado se cancela sin disparar sus eventos de pago, pero el webhook `invoice.canceled` **sí** se emite (con el objeto `payment` incluido).
Referencia del pago externo en el proveedor. Solo aplica cuando `reason` es `PAID_FROM_PROVIDER`.
Cuando se envía este campo junto con `reason=PAID_FROM_PROVIDER`, OnePay genera automáticamente un **recibo de pago en PDF** y lo envía al cliente por WhatsApp, confirmando que su pago fue registrado por la empresa.
Este campo es opcional. Si no se envía, la factura se elimina sin enviar ningún recibo al cliente.
Medio con el que el cliente pagó por fuera de OnePay (en la caja del proveedor, por transferencia, etc.). Solo se registra cuando `reason` es `PAID_FROM_PROVIDER`; con cualquier otro motivo se ignora.
Es **texto libre** de hasta 60 caracteres: envía la etiqueta tal como la maneja tu sistema (`Efectivo`, `Nequi`, `Consignación Bancolombia`, `Tarjeta`). OnePay lo guarda sin normalizar y lo devuelve en el detalle de la factura como `paid_provider_method`.
Este campo es opcional y no cambia el comportamiento del recibo por WhatsApp, que depende de `provider_payment_id`.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/invoices/2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a \
-X DELETE \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"reason": "PAID_FROM_PROVIDER",
"provider_payment_id": "EXT-REF-001",
"payment_method": "Efectivo"
}'
```
```ts theme={null}
const response = await fetch('https://api.onepay.la/v1/invoices/2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
reason: 'PAID_FROM_PROVIDER',
provider_payment_id: 'EXT-REF-001',
payment_method: 'Efectivo',
}),
});
// 204 No Content
```
```python theme={null}
import requests
response = requests.delete(
'https://api.onepay.la/v1/invoices/2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a',
headers={'Authorization': 'Bearer sk_test_xxx'},
json={
'reason': 'PAID_FROM_PROVIDER',
'provider_payment_id': 'EXT-REF-001',
'payment_method': 'Efectivo',
},
)
# 204 No Content
```
### Response
```json 204 theme={null}
no content
```
```json 404 theme={null}
{
"message": "La factura no existe o pertenece a otra compañía.",
"code": 10004,
"code_name": "not_found"
}
```
```json 409 theme={null}
{
"message": "No se puede eliminar una factura que ya fue pagada o conciliada.",
"code": 10009,
"code_name": "conflict"
}
```
Solo puedes cancelar facturas que pertenezcan a tu compañía y que **no** estén en estado `PAID` o `CONCILIATED`.
Este endpoint forma parte de la [homologación de la integración](/client/invoices/homologacion): los dos motivos se validan por separado, porque corresponden a situaciones distintas y no son intercambiables.
# Obtener factura
Source: https://docs.onepay.la/client/invoices/get
GET /invoices/{invoice_id}
Devuelve el detalle de una factura, incluyendo el Payment asociado.
### Path params
ID de la factura creada previamente. [Ver cómo crear una factura](/client/invoices/create).
### Response
Identificador único de la factura
Nombre o concepto de la factura
Monto de la factura en pesos
Proveedor de la factura (ej: `"biller"`)
ID de la factura en tu sistema
Referencia de pago de la factura
Estado de la factura: `CREATED`, `FAILED`, `PAID`, `CONCILIATED`, `PAID_FROM_PROVIDER`, `PAID_FROM_EFECTY`, `DELETE_FROM_PROVIDER`
Notas o comentarios adicionales
Referencia del pago en el proveedor, cuando la factura se saldó fuera de OnePay o ya fue conciliada. `null` en cualquier otro caso.
Medio con el que el cliente pagó fuera de OnePay, tal como se envió en [Eliminar factura](/client/invoices/delete) con `reason=PAID_FROM_PROVIDER`. Texto libre, `null` si no se informó.
Metadatos adicionales de la factura
Fecha de vencimiento de la factura (ISO 8601). No bloquea el pago. Alimenta las reglas de cobranza ancladas al vencimiento y se copia al cobro asociado.
Fecha de pago oportuno de la factura (ISO 8601): último día para pagar sin recargo ni suspensión del servicio. Informativa: no bloquea el pago ni expira el cobro. Distinta de `due_date` — una factura puede tener las dos. Se copia al cobro asociado (aparece también en el `payment`).
Fecha de creación (ISO 8601)
Fecha de última actualización (ISO 8601)
ID del cobro asociado a esta factura
Indica si la factura fue creada en modo prueba
Configuración de pagos parciales. `null` si no aplica.
Monto mínimo por abono en centavos
Monto máximo por abono en centavos. `null` si no hay límite.
Número máximo de abonos permitidos
Horas de expiración desde el primer abono
Cobro asociado a la factura (objeto completo `PaymentJsonResource`). Ver [crear cobro](/client/payments/create) para detalle de campos.
### Response Example
```json 200 theme={null}
{
"id": "2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a",
"name": "Internet plan - Octubre",
"amount": 50000,
"provider": "biller",
"provider_id": "987654",
"reference": "INV-12345678",
"status": "CREATED",
"remarks": null,
"metadata": { "key": "value" },
"due_date": null,
"timely_payment_date": null,
"created_at": "2025-10-20T15:06:00.000000Z",
"updated_at": "2025-10-20T15:06:00.000000Z",
"payment_id": "c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
"is_test": false,
"partial_payment_config": null,
"payment": {
"id": "c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
"source": "Internet plan - Octubre",
"currency": "COP",
"amount": 50000,
"amount_label": "$ 50.000",
"title": "Internet plan - Octubre",
"description": "Internet plan - Octubre",
"phone": "+573167591038",
"expiration_at": null,
"due_date": null,
"timely_payment_date": null,
"document_link": "https://example.com/document.pdf",
"external_id": "987654",
"allows": { "accounts": true, "cards": true, "card_extra": false, "realtime": false },
"status": "pending",
"is_test": false,
"created_at": "2025-10-20T15:06:00.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
"redirect_url": null,
"provider_id": null,
"metadata": null,
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null
}
}
```
```json 200 Con pagos parciales theme={null}
{
"id": "2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a",
"name": "Internet plan - Octubre",
"amount": 50000,
"provider": "biller",
"provider_id": "987654",
"reference": "INV-12345678",
"status": "CREATED",
"remarks": null,
"metadata": { "key": "value" },
"due_date": null,
"timely_payment_date": null,
"created_at": "2025-10-20T15:06:00.000000Z",
"updated_at": "2025-10-20T15:06:00.000000Z",
"payment_id": "c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
"is_test": false,
"partial_payment_config": {
"min_amount_in_cents": 1000000,
"max_amount_in_cents": null,
"max_payment_methods": 3,
"timeout_hours": 24
},
"payment": {
"id": "c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
"source": "Internet plan - Octubre",
"currency": "COP",
"amount": 50000,
"amount_label": "$ 50.000",
"title": "Internet plan - Octubre",
"description": "Internet plan - Octubre",
"phone": "+573167591038",
"expiration_at": null,
"due_date": null,
"timely_payment_date": null,
"document_link": "https://example.com/document.pdf",
"external_id": "987654",
"allows": { "accounts": true, "cards": true, "card_extra": false, "realtime": false },
"status": "partially_paid",
"is_test": false,
"created_at": "2025-10-20T15:06:00.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
"redirect_url": null,
"provider_id": null,
"metadata": null,
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null,
"partial_payment": {
"total_paid_in_cents": 1000000,
"total_paid_label": "$ 10.000",
"remaining_amount_in_cents": 4000000,
"remaining_label": "$ 40.000",
"progress_percentage": 20.0,
"is_fully_paid": false,
"min_amount_in_cents": 1000000,
"max_amount_in_cents": null,
"max_payment_methods": 3,
"timeout_hours": 24,
"partial_expires_at": "2025-10-21T15:06:00+00:00",
"charges": [
{
"id": "3f8b7a21-1d4a-4d2e-8f1a-17e2f1e6b9ab",
"amount_in_cents": 1000000,
"amount_label": "$ 10.000",
"payment_method_type": "account",
"payment_method": "PSE - Bancolombia",
"paid_at": "2025-10-20T16:00:00+00:00"
}
]
}
}
}
```
Códigos de error
* 401 Unauthorized: token ausente o inválido.
* 403 Forbidden: compañía inactiva o sin permisos.
* 404 Not Found: la factura no existe o pertenece a otra compañía.
# Homologación de la integración
Source: https://docs.onepay.la/client/invoices/homologacion
Qué valida OnePay antes de habilitar tu integración de facturas en producción, endpoint por endpoint, y cómo es la corrida integral de cierre.
Antes de habilitar la salida a producción de tu compañía, OnePay revisa tu integración de facturas contra un conjunto de criterios conocidos. Esta página es ese conjunto: si tu integración los cumple, la homologación se cierra sin devoluciones.
El proceso tiene **dos etapas**: primero validamos cada endpoint por separado sobre tu tráfico de sandbox, y después corres la misma secuencia de punta a punta con tu llave de producción.
| Etapa | Entorno | Qué se valida | Cómo se cierra |
| ------------------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| **1 · Validación por endpoint** | Sandbox (`sk_test_`) | Cada endpoint y cada webhook contra sus criterios, de forma aislada | Sin requisitos incumplidos |
| **2 · Corrida integral** | Producción (`sk_live_`) | La misma secuencia, completa y sobre facturas nuevas: creación → pago → actualización → cancelación con los dos motivos | Los 6 pasos verificados con los `id` que entregues |
| **Salida** | Producción | Salida a producción habilitada, primera factura real acompañada | Solo con las etapas 1 y 2 cerradas |
**En ninguna de las dos etapas trabajas contra un guion nuestro.** La etapa 1 no te pide preparar nada: OnePay la hace sobre el tráfico que ya generaste en sandbox, revisando tus llamadas reales.
La etapa 2 la corres **por tu cuenta**, con tu llave de producción, cuando estés listo. Al terminar nos entregas los `id` y nosotros analizamos el flujo de peticiones y el del pago del lado de OnePay. No hace falta agendar nada ni esperar a que estemos conectados.
En las tablas de criterios distinguimos dos tipos:
* **Requisito** — sin esto no se homologa.
* **Recomendación** — no bloquea la homologación, pero es lo que hace que la integración aguante en producción.
***
## Prerrequisitos
| Tipo | Criterio |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Requisito | La etapa 1 se hace en sandbox, con una llave `sk_test_`; la etapa 2, en producción, con la `sk_live_`. |
| Requisito | Guardas el `id` que devuelve `POST /v1/invoices` como `external_id` (o equivalente) de tu factura. Es la **única** llave para `PUT`, `GET` y `DELETE`. |
**Tu llave `sk_live_` la generas tú desde el panel de administración.** La homologación no te la retiene: la necesitas para correr la etapa 2.
Lo que sí depende de este proceso es la **salida a producción de la compañía**: OnePay la habilita cuando la homologación queda aprobada, así que conviene cerrarla antes de planear la fecha de salida.
***
## Etapa 1 · Validación por endpoint
### Crear factura — `POST /v1/invoices`
| Tipo | Criterio |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Requisito | La creación responde `201` y tu sistema lee y persiste `id`, `payment_id` y `payment.payment_link`. |
| Requisito | `provider_id` es el número de la factura: **único por documento y en el tiempo**, entre 5 y 100 caracteres. |
| Requisito | `reference` identifica al **cliente** (cédula o contrato), se repite entre ciclos y es lo que la persona escribe en el portal de pagos para ver su deuda. |
| Requisito | Toda factura lleva `phone` en formato E.164 y/o un `email` válido. |
| Requisito | `due_date` va en formato `YYYY-MM-DD` **completo**. |
| Requisito | `amount`, `name` y `description` dentro de sus rangos válidos. Los `422` recurrentes por datos de origen se corrigen **antes** de reenviar. |
| Recomendación | Los reintentos se hacen con **el mismo cuerpo**. |
**`provider_id` debe ser único por documento y en el tiempo.** Cada factura lleva el suyo y no se reutiliza nunca: ni en el siguiente ciclo, ni para el mismo cliente, ni para el mismo contrato. Para identificar al cliente el campo es `reference`.
Reenviar un `provider_id` ya usado no crea la factura nueva. Mientras la anterior siga en estado `CREATED`, OnePay la reconoce como el mismo documento y responde `201` con **esa** factura: el cobro nuevo no se genera y el cliente sigue viendo el monto anterior. La respuesta es exitosa, así que tu sistema no se entera.
**Un `due_date` de año-mes nace vencido.** Un valor como `"2026-05"` es aceptado por la validación y se guarda como el **día 1** de ese mes: la factura nace vencida y las reglas de cobranza disparan mora desde el primer día.
Si manejas una fecha de pago oportuno distinta del vencimiento, va en `timely_payment_date`, no en `due_date`.
**Sin datos de contacto no hay cobro.** Una factura sin `phone` ni `email` se crea igual y responde `201`, pero el cobro no sale por ningún canal: ni WhatsApp ni correo. El cliente nunca se entera de que tiene algo que pagar.
**Por qué el reintento va con el mismo cuerpo:** si repites el `POST` con un cuerpo idéntico, la deduplicación te devuelve el mismo `id` y no se duplica el cobro. Un reintento con datos cambiados no es un reintento — crea un cobro nuevo.
### Actualizar factura — `PUT /v1/invoices/{id}`
| Tipo | Criterio |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Requisito | El `PUT` envía `reference`, `amount` y `name`, y tu sistema procesa el `200`: trae un `payment_id` **nuevo** y el cobro anterior queda cancelado. |
**El contacto se hereda.** Si el `PUT` no trae `phone` ni `email`, el cobro de reemplazo conserva los del cobro anterior. Enviarlos sirve para **actualizarlos**; no es obligatorio para que el cobro llegue.
### Cancelar factura — `DELETE /v1/invoices/{id}`
Los dos motivos de cancelación no son intercambiables: cada uno corresponde a una situación real distinta.
| Tipo | Criterio |
| ------------- | ----------------------------------------------------------------------------------------------------------------------- |
| Requisito | Factura pagada en la caja del comercio → `reason: PAID_FROM_PROVIDER` con `provider_payment_id` **y** `payment_method`. |
| Requisito | Factura anulada en tu sistema → `reason: DELETE_FROM_PROVIDER` en el endpoint **individual**. |
| Recomendación | El `409` se trata como estado final ("ya fue pagada en OnePay"), sin reintentar. |
| Recomendación | El `404` por desajuste de ambiente se trata como error de configuración, no como fallo transitorio. |
**Para qué sirve `payment_method`:** es el medio con el que el cliente pagó por fuera de OnePay. Texto libre de hasta 60 caracteres — `Efectivo`, `Nequi`, `Consignación Bancolombia`. Sin él, OnePay sabe que la factura se pagó afuera pero no sabe cómo.
**El endpoint masivo no es para el flujo diario.** [`DELETE /v1/invoices`](/client/invoices/bulk-delete) borra **todas** las facturas pendientes de la empresa. Es una herramienta de limpieza puntual y no debe quedar cableada al flujo de anulación de tu sistema de gestión.
El `404` de desajuste de ambiente aparece cuando consultas una factura de sandbox con la llave de producción o al revés. Es terminal: reintentarlo no cambia nada, hay que revisar qué llave está usando el proceso.
### Webhooks
| Tipo | Criterio |
| ------------- | ------------------------------------------------------------------------------------------------------ |
| Requisito | Tu webhook está suscrito **como mínimo** a `invoice.paid`, con `secret` y token estático configurados. |
| Requisito | Los eventos a los que estás suscrito reciben `2xx`. Ninguno puede quedar agotado. |
| Recomendación | Validas el header `x-webhook-token` y la firma `Signature`. |
| Recomendación | Procesas de forma idempotente por `invoice.id` + tipo de evento. |
| Recomendación | Al rotar el webhook, aceptas el token viejo y el nuevo durante la transición. |
| Recomendación | Usas `GET /v1/invoices/{id}` como respaldo de conciliación si se pierde un `invoice.paid`. |
**Por qué `invoice.paid` es el mínimo:** es el evento que cierra el ciclo de cobro. Sin él no te enteras de que una factura se pagó en OnePay y tu sistema queda desincronizado.
**Un evento agotado se pierde.** OnePay entrega cada evento en **6 intentos como máximo**, con un backoff que se agota en poco menos de 10 minutos. Después del sexto intento fallido el evento deja de reintentarse por esa vía. Ver [Entrega y reintentos](/client/webhooks/index#entrega-y-reintentos) para el calendario completo.
**La firma se calcula sobre el cuerpo crudo.** `Signature` es un HMAC-SHA256 sobre los bytes tal como llegaron. Deserializar el JSON y volver a serializarlo antes de calcular el HMAC cambia el cuerpo y rompe la firma, aunque el contenido sea equivalente. Ver [Verificar la firma](/client/webhooks/index).
**Por qué la idempotencia importa:** los reintentos pueden entregarte el mismo evento dos veces. Sin idempotencia por `invoice.id` + tipo de evento, un reintento se convierte en un pago registrado dos veces en tu sistema.
***
## Etapa 2 · Corrida integral
Es la misma secuencia de la etapa 1, pero ejecutada de punta a punta **con tu llave `sk_live_`** y sobre facturas **nuevas**. Al correr en producción son facturas reales de tus clientes: el dinero se mueve y los mensajes salen normalmente. Al terminar nos entregas el `id` de OnePay de cada paso, y nosotros revisamos el flujo de peticiones y el del pago para confirmar que cada resultado esperado se dio.
`POST /v1/invoices` con el payload completo, enviado **dos veces con el mismo cuerpo**. Usa un monto bajo: esta factura se paga de verdad en el paso 2.
**Esperado:** ambas respuestas `201` y con **el mismo** `id`. Si el segundo `201` trae un `id` distinto, hay un cobro duplicado.
Paga el `payment.payment_link`. Es un **pago real**: el dinero se mueve y se liquida como cualquier otro cobro, con su comisión.
**Esperado:** llega `invoice.paid` con el pago aprobado, la factura queda en `CONCILIATED`, y en tu sistema queda marcada como pagada. Este último punto se verifica con evidencia de tu lado: es el paso que demuestra que el webhook no solo llega, sino que cierra el ciclo.
`PUT /v1/invoices/{id}` cambiando el monto de **otra** factura.
**Esperado:** `200` con un `payment_id` nuevo. El cobro conserva el teléfono de la factura original y llega por WhatsApp.
`DELETE /v1/invoices/{id}` con `reason: PAID_FROM_PROVIDER`, `provider_payment_id` y `payment_method`.
**Esperado:** `204`. La factura **sobrevive** en estado `PAID_FROM_PROVIDER` con el método registrado — no se borra. Si la factura tiene teléfono, el cliente recibe el recibo en PDF por WhatsApp.
`DELETE /v1/invoices/{id}` con `reason: DELETE_FROM_PROVIDER` sobre **otra** factura.
**Esperado:** `204`. La factura se elimina.
`DELETE /v1/invoices/{id}` sobre la factura que pagaste en el paso 2.
**Esperado:** `409`, registrado en tu sistema como "ya pagada en OnePay" y **sin reintentos**.
Los pasos 4 y 5 son los que más seguido revelan un problema: son el mismo endpoint con dos comportamientos distintos, y una integración que trata los dos motivos por igual falla ahí.
***
## Salida a producción
Con las etapas 1 y 2 cerradas:
1. **Salida a producción habilitada** por OnePay, y tu webhook de producción configurado con `secret` y los mismos eventos que homologaste.
2. **Primera factura real acompañada** de punta a punta: creación, envío, pago y conciliación, con OnePay presente.
3. **Retiro de las facturas de prueba** que hayan quedado en sandbox.
4. **Monitoreo de las primeras 72 horas**: entregas de webhook, tasa de `422` y cobros duplicados.
# Introducción
Source: https://docs.onepay.la/client/invoices/index
Guía técnica para integrar facturas con OnePay — flujo de integración, estados, webhooks y funcionalidades avanzadas.
## ¿Qué es una Factura?
Una factura es un registro de cobro que genera automáticamente un [Payment](/client/payments/index) asociado. Al crear una factura, OnePay crea un cobro vinculado, lo envía al cliente y gestiona todo el ciclo de vida hasta el pago y la conciliación.
Si solo necesitas cobrar un monto sin vincular a un sistema de gestión externo, usa directamente [Payments](/client/payments/index).
**¿Quieres que OnePay emita la factura ante la DIAN?** Es este mismo endpoint: manda `items` y `customer_id` en vez de `provider` y `amount`, y OnePay genera el documento fiscal con tu resolución. Ver [Facturación electrónica](/client/electronic-invoices/index).
## ¿Cuándo usar Facturas?
| Escenario | Solución |
| ------------------------------------------------------------------------ | ---------------------------------- |
| Cobro desde un sistema de gestión externo (SAEplus, Wispro, Siigo, etc.) | Usa Facturas |
| Cobro con detalle de items y datos de facturación | Usa Facturas |
| Dividir el pago entre múltiples destinatarios | Usa Facturas con splits |
| Cobro en múltiples abonos | Usa Facturas con `partial_payment` |
***
## Flujo de integración
El flujo completo para integrar facturas tiene estos pasos clave:
```mermaid theme={null}
sequenceDiagram
participant SG as Sistema de Gestion
participant OP as OnePay
participant CF as Cliente Final
Note over SG,CF: Flujo principal de facturacion
SG->>OP: 1. POST /invoices (Crear factura)
Note right of OP: OnePay crea internamente un cobro asociado a la factura creada.
OP->>CF: 2. Envia link/cobro al cliente final (WhatsApp, email, etc.)
CF->>OP: 3. Paga la factura (via OnePay)
OP->>OP: 4. Actualiza estado de factura = Pagada
OP-->>SG: 5. Webhook notificacion de pago exitoso
alt El sistema necesita modificar el valor o datos de la factura
SG->>OP: 6. PUT /invoices/{invoice} (Actualizar factura)
Note right of OP: OnePay crea un nuevo cobro con el valor actualizado.
OP->>CF: 7. Envia nuevo cobro al cliente final
end
alt El pago se hizo por otro proveedor externo
SG->>OP: 8. DELETE /invoices/{invoice} (Eliminar factura)
Note right of OP: OnePay elimina el cobro asociado y detiene el seguimiento de pago.
end
```
Para homologar la integración de facturas, tu sistema debe implementar como mínimo estas cuatro capacidades:
1. **Crear facturas** — `POST /invoices` para sincronizar facturas desde tu sistema de gestión hacia OnePay.
2. **Recibir confirmación de pago** — Webhook `invoice.paid` para saber cuándo una factura fue pagada a través de OnePay.
3. **Actualizar facturas** — `PUT /invoices/{invoice}` para reflejar cambios de valor o datos de la factura.
4. **Eliminar facturas** — `DELETE /invoices/{invoice}` para cancelar facturas o marcarlas como pagadas por otro medio distinto a OnePay.
Implementarlas no basta: OnePay valida además **cómo** las usas. Antes de escribir código, revisa [Homologación de la integración](/client/invoices/homologacion) — trae los criterios exactos endpoint por endpoint y la corrida de cierre que se hace antes de habilitar la salida a producción de tu compañía.
### Crear factura
Al llamar a `POST /invoices`, OnePay:
* Crea un registro de factura con estado `CREATED`
* Genera un **Payment** asociado con `source = INVOICE`
* Si ya existe una factura con el mismo `provider + reference + provider_id` en estado `CREATED`, retorna la existente (deduplicación implícita). Reusar un `provider_id` que todavía tiene una factura viva devuelve esa factura vieja: ver [Homologación de la integración](/client/invoices/homologacion)
* Retorna la factura con los datos del payment y su `payment_link`
Al crear una factura, la respuesta incluye el campo `id` — este es el **identificador único de la factura en OnePay**.
Guárdalo en tu sistema ya que lo necesitarás para [actualizar](/client/invoices/update) o [eliminar](/client/invoices/delete) la factura posteriormente.
**Recomendación:** Almacena este valor como `external_id` (o equivalente) en tu sistema de gestión para asociar fácilmente tus registros con OnePay.
### Webhooks
OnePay notifica automáticamente los cambios de estado de cada factura. Configura los [eventos de facturas](/client/webhooks/index#facturas) en tu webhook para recibirlos.
Para ver la estructura completa del payload que recibirás, consulta los [ejemplos de webhooks de facturas](/client/webhooks/ejemplos#facturas).
### Actualizar factura
Al llamar a `PUT /invoices/{invoice}`:
* **Si el payment aún no se pagó:** OnePay cancela el payment anterior y crea uno nuevo con los datos actualizados. Se envía un nuevo cobro al cliente.
* **Si el payment ya se pagó:** Solo se actualizan los campos informativos (nombre, monto, referencia), sin generar un nuevo cobro.
* El campo `provider` no se puede modificar.
### Eliminar factura
Al llamar a `DELETE /invoices/{invoice}`:
* No se puede eliminar una factura con estado `PAID` o `CONCILIATED` (retorna HTTP 409)
* OnePay cancela el payment asociado
* La factura se marca según el `reason`: con `PAID_FROM_PROVIDER` (pagada externamente) la factura **no se borra** — sobrevive en ese estado; con `DELETE_FROM_PROVIDER` sí se elimina
* En ambos casos se emite el webhook `invoice.canceled` y se detiene todo seguimiento y recordatorio de cobranza
***
## Estados de una factura
| Estado | Descripción |
| ---------------------- | ---------------------------------------------------------- |
| `CREATED` | Factura creada, cobro enviado al cliente |
| `PAID` | Pagada en OnePay, pendiente conciliación con el proveedor |
| `CONCILIATED` | Pagada y conciliada exitosamente con el sistema de gestión |
| `PAID_FROM_PROVIDER` | Marcada como pagada desde el sistema externo |
| `DELETE_FROM_PROVIDER` | Eliminada desde el sistema externo |
| `FAILED` | Fallo en la creación o procesamiento |
***
## Endpoints
| Método | Endpoint | Descripción |
| -------- | ------------------------ | ----------------------------- |
| `POST` | [/invoices](create) | Crear factura |
| `GET` | [/invoices](list) | Listar facturas |
| `GET` | [/invoices/](get) | Detalle de una factura |
| `PUT` | [/invoices/](update) | Actualizar factura |
| `DELETE` | [/invoices/](delete) | Eliminar factura |
| `DELETE` | [/invoices](bulk-delete) | Eliminar facturas masivamente |
# Listar facturas
Source: https://docs.onepay.la/client/invoices/list
GET /invoices
Obtiene un listado paginado de facturas de tu cuenta.
### Query params
Número de página. Por defecto 1.
Filtra por ID exacto de la factura.
Filtra por estado de la factura.
Filtra por referencia exacta.
Filtra por provider id.
Ordena por fecha de creación. Valores permitidos: created\_at o -created\_at. Por defecto -created\_at.
```bash cURL theme={null}
curl https://api.onepay.la/v1/invoices?page=1&filter[status]=CREATED&sort=-created_at \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/invoices?page=1&filter[status]=CREATED&sort=-created_at', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data.data); // Array de facturas
console.log(data.total); // Total de facturas
```
```python Python theme={null}
import requests
url = "https://api.onepay.la/v1/invoices"
headers = {
"Authorization": "Bearer sk_test_xxx"
}
params = {
"page": 1,
"filter[status]": "CREATED",
"sort": "-created_at"
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(data["data"]) # Array de facturas
print(data["total"]) # Total de facturas
```
```php PHP theme={null}
1,
"filter" => ["status" => "CREATED"],
"sort" => "-created_at"
]);
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data["data"]); // Array de facturas
echo $data["total"]; // Total de facturas
curl_close($ch);
?>
```
### Response
```json 200 theme={null}
{
"data": [
{
"id": "2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a",
"name": "Internet plan - Octubre",
"provider": "biller",
"provider_id": "987654",
"reference": "INV-12345678",
"status": "CREATED",
"remarks": null,
"metadata": {
"key": "value"
}
}
],
"current_page": 1,
"from": 1,
"last_page": 2,
"per_page": 20,
"to": 20,
"total": 21
}
```
Notas
* La respuesta usa un formateador de colección personalizado que expone los datos de paginación en la raíz de la respuesta (current\_page, from, last\_page, per\_page, to, total), además de la clave data.
* El listado no incluye el objeto payment anidado por rendimiento; se expone en el detalle y en la creación.
# Actualizar factura
Source: https://docs.onepay.la/client/invoices/update
PUT /invoices/{invoice_id}
Actualiza una factura existente. Cancela el Payment anterior, crea uno nuevo y lo asocia a la factura.
**Facturas con pagos parciales:** Si la factura tiene un Payment en estado `partially_paid`, actualizarla cancelará ese Payment (y perderá todos los abonos registrados) y creará uno nuevo sin configuración de pagos parciales. Solo actualiza facturas parcialmente pagadas si estás seguro de que quieres reiniciar el proceso de cobro.
Si el Payment ya está `approved`, la actualización solo modifica los metadatos de la factura sin cancelar ni reemplazar el Payment. En ese caso `notify` no tiene efecto: como no se genera un cobro nuevo, no hay nada que enviarle al cliente.
### Path params
ID de la factura a actualizar. [Crear factura](/client/invoices/create).
### Body
Referencia única de la factura dentro de tu compañía. Mínimo 5 y máximo 100 caracteres.
Identificador opcional que asocias a tu proveedor externo.
Monto de la factura en pesos (COP). Debe estar entre 5.000 y 100.000.000.
Nombre o concepto de la factura. Mínimo 5 y máximo 100 caracteres.
Descripción detallada de la factura. Se propaga al nuevo Payment generado. Mínimo 4 y máximo 2000 caracteres.
Número de teléfono del cliente en formato E.164. Opcional.
Correo electrónico del cliente. Opcional. Máximo 200 caracteres.
Fecha de vencimiento de la factura en formato `YYYY-MM-DD` (ej. `2026-10-31`). Opcional. No bloquea el pago.
Alimenta las reglas de cobranza ancladas al vencimiento (recordatorios de "por vencer", "vence hoy" y mora).
Si se omite o se envía `null`, se conserva el `due_date` actual de la factura. El valor se propaga al nuevo Payment generado durante la actualización.
Fecha de pago oportuno: último día para pagar sin recargo ni suspensión del servicio, en formato `YYYY-MM-DD` (ej. `2026-10-25`). Opcional. Es informativa: no bloquea el pago ni expira el cobro, y es distinta del `due_date` — una factura puede tener las dos.
Si se omite o se envía `null`, se conserva el `timely_payment_date` actual de la factura. El valor se propaga al nuevo Payment generado durante la actualización, y las reglas de cobranza pueden anclar recordatorios a esta fecha (disparadores "antes", "el día" y "después" del pago oportuno, configurables en el portal).
Si no envías `due_date` o `timely_payment_date` en la actualización, la factura
conserva su fecha de vencimiento y su fecha de pago oportuno actuales. Solo se
modifican cuando envías un valor explícito.
Controla si se le avisa al cliente sobre el cobro nuevo. Con `false` la factura se actualiza y el cobro se reemplaza igual, pero **no** se envía el mensaje de WhatsApp ni el correo al cliente. Por defecto (`true` u omitido) sí se envían.
**`notify: false` deja al cliente con el link anterior:** actualizar una factura **cancela el cobro anterior y crea uno nuevo con un link de pago distinto**. Si silencias el aviso, el cliente se queda con el link viejo, que ya quedó cancelado y no se puede pagar.
Para avisarle más tarde, usa el `payment.id` que devuelve la respuesta contra [Reenviar cobro](/client/payments/resend) (`POST /v1/payments/{payment_id}`).
**El envío puede diferirse.** Con `notify: true` (o si lo omites), el mensaje solo sale dentro de la ventana de contacto de Colombia: lunes a viernes de 7:00 a.m. a 7:00 p.m. y sábados de 8:00 a.m. a 3:00 p.m. (hora de Bogotá). Domingos y festivos colombianos no se contacta.
Si la actualización cae fuera de esa ventana, el mensaje se programa automáticamente para la siguiente ventana válida: no es una falla ni requiere reintento de tu parte. Es el comportamiento propio de los cobros originados en facturas; el reenvío manual de un cobro con [Reenviar cobro](/client/payments/resend) sí sale de inmediato.
```bash cURL theme={null}
curl https://api.onepay.la/v1/invoices/2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a \
-X PUT \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"reference": "INV-12345678",
"amount": 75000,
"name": "Internet plan - Actualizado",
"description": "Plan 100MB - facturación octubre",
"email": "juan@example.com",
"phone": "+573001234567",
"provider_id": "987654",
"due_date": "2026-10-31",
"timely_payment_date": "2026-10-25",
"notify": false
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/invoices/2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a', {
method: 'PUT',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
reference: 'INV-12345678',
amount: 75000,
name: 'Internet plan - Actualizado',
description: 'Plan 100MB - facturación octubre',
email: 'juan@example.com',
phone: '+573001234567',
provider_id: '987654',
due_date: '2026-10-31',
timely_payment_date: '2026-10-25',
notify: false
})
});
const invoice = await response.json();
console.log(invoice.id); // ID de la factura actualizada
```
```python Python theme={null}
import requests
url = "https://api.onepay.la/v1/invoices/2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a"
headers = {
"Authorization": "Bearer sk_test_xxx",
"Content-Type": "application/json"
}
data = {
"reference": "INV-12345678",
"amount": 75000,
"name": "Internet plan - Actualizado",
"description": "Plan 100MB - facturación octubre",
"email": "juan@example.com",
"phone": "+573001234567",
"provider_id": "987654",
"due_date": "2026-10-31",
"timely_payment_date": "2026-10-25",
"notify": False
}
response = requests.put(url, headers=headers, json=data)
invoice = response.json()
print(invoice["id"]) # ID de la factura actualizada
```
```php PHP theme={null}
"https://api.onepay.la/v1/invoices/2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"reference" => "INV-12345678",
"amount" => 75000,
"name" => "Internet plan - Actualizado",
"description" => "Plan 100MB - facturación octubre",
"email" => "juan@example.com",
"phone" => "+573001234567",
"provider_id" => "987654",
"due_date" => "2026-10-31",
"timely_payment_date" => "2026-10-25",
"notify" => false
])
]);
$response = curl_exec($ch);
$invoice = json_decode($response, true);
echo $invoice["id"]; // ID de la factura actualizada
curl_close($ch);
?>
```
### Response
```json 200 theme={null}
{
"id": "2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a",
"name": "Internet plan - Actualizado",
"description": "Factura de internet actualizada para octubre 2025",
"provider": "biller",
"provider_id": "987654",
"reference": "INV-12345678",
"status": "CREATED",
"remarks": null,
"due_date": "2026-10-31T00:00:00Z",
"timely_payment_date": "2026-10-25T00:00:00Z",
"created_at": "2025-10-20T15:06:00Z",
"updated_at": "2025-10-20T15:06:00Z",
"metadata": {
"key": "value"
},
"payment": {
"id": "new-payment-id",
"title": "Internet plan - Actualizado",
"description": "Internet plan - Actualizado",
"currency": "COP",
"amount": 75000,
"amount_label": "75.000",
"due_date": "2026-10-31T00:00:00Z",
"timely_payment_date": "2026-10-25T00:00:00Z",
"phone": "+573167591039",
"external_id": "987654",
"allows": { "accounts": true, "cards": true, "card_extra": false, "realtime": false },
"status": "pending",
"is_test": false,
"payment_link": "https://pay.onepay.test/p/new-payment-id",
"redirect_url": null,
"created_at": "2025-10-20T15:25:00Z"
}
}
```
```json 422 theme={null}
{
"message":"La solicitud contiene errores de validación.",
"code":10001,
"code_name":"validation_error",
"errors":{
"reference":["El campo referencia es obligatorio."],
"amount":["El monto debe ser al menos 5000."],
"name":["El nombre debe tener al menos 5 caracteres."],
"phone":["El teléfono debe estar en formato E.164."],
"email":["El correo electrónico no es válido."]
}
}
```
```json 404 theme={null}
{
"message": "La factura no existe o pertenece a otra compañía"
}
```
# Crear tarjetas
Source: https://docs.onepay.la/client/issuing/cards/create
POST issuing/cards
Crea una nueva tarjeta en tu cuenta.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
ID del cliente al que se le asignará la tarjeta. [Crear cliente](/client/customers/create).
ID de la billetera al que se le asignará la tarjeta.
Apodo para la tarjeta.
Tipo de tarjeta.
Dirección de envío de la tarjeta.
Primera línea de la dirección.
Segunda línea de la dirección.
Ciudad de la dirección.
Estado de la dirección.
Código de país ISO 3166-1 alfa-2
Código postal de la dirección.
```json 200 theme={null}
{
"id": "9e4298cb-ad7b-40f0-929d-a68e20a561c9",
"status": "created",
"last_4": null,
"nickname": null,
"type": "physical",
"customer_id": "9e4298cb-a9a4-476d-8c7d-287c0f1e103b",
"wallet_id": "0195255e-3258-707e-bfaf-3f6807d12d60",
"customer": {
"id": "9e4298cb-a9a4-476d-8c7d-287c0f1e103b",
"first_name": "Rossie",
"last_name": "Rempel",
"email": "",
"phone": "+12259504339",
"document_type": "CC",
"document_number": "72827",
"created_at": "2025-02-20T21:58:05.000000Z",
"is_test": true
},
"address": {
"line_1": "125 Novella Turnpike",
"line_2": "40003 Lang Circle Suite 752",
"state": "Boylefurt",
"city": "Port Alessiaton",
"country": "Zambia"
},
"wallet": {
"id": "0195255e-3258-707e-bfaf-3f6807d12d60",
"balance": 0,
"label": "$0"
}
}
```
```json 422 theme={null}
{
"message": "The customer id field is required. (and 7 more errors)",
"code": 10001,
"code_name": "validation_error",
"errors": {
"customer_id": [
"The customer id field is required."
],
"wallet_id": [
"The wallet id field is required."
],
"address": [
"The address field is required."
],
"address.line_1": [
"The address.line 1 field is required."
],
"address.city": [
"The address.city field is required."
],
"address.state": [
"The address.state field is required."
],
"address.zip_code": [
"The address.zip code field is required."
],
"address.country": [
"The address.country field is required."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Eliminar tarjetas
Source: https://docs.onepay.la/client/issuing/cards/delete
DELETE issuing/cards/{card_id}
La tarjeta sera marcada como cancelada.
ID de la tarjeta emitida a eliminar. [Crear tarjeta](/client/issuing/cards/create).
```json 200 theme={null}
no content
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Tarjeta no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Detalles de tarjeta
Source: https://docs.onepay.la/client/issuing/cards/detail
GET issuing/cards/{card_id}
Obtenga el detalle de la tarjeta.
ID de la tarjeta emitida que deseas consultar. [Crear tarjeta](/client/issuing/cards/create).
```json 200 theme={null}
{
"id": "9e4298cb-ad7b-40f0-929d-a68e20a561c9",
"status": "created",
"last_4": null,
"nickname": null,
"type": "physical",
"customer_id": "9e4298cb-a9a4-476d-8c7d-287c0f1e103b",
"wallet_id": "0195255e-3258-707e-bfaf-3f6807d12d60",
"customer": {
"id": "9e4298cb-a9a4-476d-8c7d-287c0f1e103b",
"first_name": "Rossie",
"last_name": "Rempel",
"email": "",
"phone": "+12259504339",
"document_type": "CC",
"document_number": "72827",
"created_at": "2025-02-20T21:58:05.000000Z",
"is_test": true
},
"address": {
"line_1": "125 Novella Turnpike",
"line_2": "40003 Lang Circle Suite 752",
"state": "Boylefurt",
"city": "Port Alessiaton",
"country": "Zambia"
},
"wallet": {
"id": "0195255e-3258-707e-bfaf-3f6807d12d60",
"balance": 0,
"label": "$0"
}
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Tarjeta no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Habilitar tarjeta
Source: https://docs.onepay.la/client/issuing/cards/enable-card
GET issuing/cards/{card_id}/enable
[Solo tarjetas físicas]
Activa la tarjeta física para que puedas usarla, generando un link al que el cliente debe acceder y completar con los datos de la tarjeta.
### Headers
Token único para garantizar la idempotencia de la petición
ID de la tarjeta emitida que habilitarás. [Ver creación de tarjetas](/client/issuing/cards/create).
```json 204 theme={null}
{
"url": "https://s.onepay.la/1234567890"
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Congelar tarjeta
Source: https://docs.onepay.la/client/issuing/cards/froze
PUT issuing/cards/{card_id}/froze
Congela una tarjeta existente.
### Headers
Token único para garantizar la idempotencia de la petición
### Path
ID de la tarjeta emitida que congelarás. [Crear tarjeta](/client/issuing/cards/create).
```json 204 theme={null}
no content
```
# Listar tarjetas
Source: https://docs.onepay.la/client/issuing/cards/list
GET issuing/cards
Obtén una lista de todas las tarjetas creadas en tu cuenta.
### Parámetros de consulta
Número de registros a retornar por página. Por defecto es 20.
Tipo de tarjeta
Estado de la tarjeta
Últimos 4 dígitos de la tarjeta
Apodo de la tarjeta
Orden de los resultados, \[-created\_at | created\_at]
Número de página a consultar. Por defecto es 1.
### Respuesta
Array de objetos tipo Card
Metadata de la paginación
Página actual
Número del primer registro en la página actual
Última página disponible
Registros por página
Número del último registro en la página actual
Total de registros disponibles
### Ejemplo de respuesta
```json 200 theme={null}
{
"data": [
{
"id": "9e41fe85-a21b-4145-b127-b9ddd593be5b",
"status": "created",
"last_4": null,
"nickname": null,
"type": "physical",
"customer_id": "9e41fe85-a058-4afc-9940-09764468aa5c",
"wallet_id": "019523d3-419c-7097-a343-b39a8eb7a50c"
}
],
"current_page": 1,
"from": 1,
"last_page": 1,
"per_page": 15,
"to": 1,
"total": 1
}
```
# Transacciones de tarjetas
Source: https://docs.onepay.la/client/issuing/cards/transactions
GET issuing/cards/{card_id}/transactions
Obtiene las transacciones de una tarjeta.
### Path
ID de la tarjeta emitida cuyas transacciones consultarás. [Crear tarjeta](/client/issuing/cards/create).
Moneda de la transacción
Estado de la transacción
Página actual
```json 200 theme={null}
{
"id": "9e28925d-2495-48bb-8740-dc0f5454d738",
"status": "created",
"last_4": null,
"nickname": null,
"customer": {
"id": "9e28925c-7543-496f-abff-ed973137ab7c",
"first_name": "Carmela",
"last_name": "Rice",
"email": "",
"phone": "+17408135335",
"document_type": "CC",
"document_number": "554637",
"created_at": "2025-02-07T23:28:34.000000Z",
"is_test": true
},
"address": {
"line": "5630 Schulist Stravenue Suite 568",
"line_2": "20276 Jordi Villages Apt. 981",
"state": "Coleman Rice V",
"city": "Dakotamouth",
"country": "LS"
},
"wallet": {
"id": "0194e2be-5ef6-7080-8bb6-ab629957edde",
"balance": 0,
"label": "$0"
}
}
```
```json 422 theme={null}
{
"message": "The customer id field is required. (and 7 more errors)",
"code": 10001,
"code_name": "validation_error",
"errors": {
"customer_id": [
"The customer id field is required."
],
"wallet_id": [
"The wallet id field is required."
],
"address": [
"The address field is required."
],
"address.line_1": [
"The address.line 1 field is required."
],
"address.city": [
"The address.city field is required."
],
"address.state": [
"The address.state field is required."
],
"address.zip_code": [
"The address.zip code field is required."
],
"address.country": [
"The address.country field is required."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Descongelar tarjeta
Source: https://docs.onepay.la/client/issuing/cards/unfroze
PUT issuing/cards/{card_id}/unfroze
Descongela una tarjeta existente.
### Headers
Token único para garantizar la idempotencia de la petición
### Path
ID de la tarjeta emitida que vas a descongelar. [Crear tarjeta](/client/issuing/cards/create).
```json 204 theme={null}
no content
```
# Actualizar tarjetas
Source: https://docs.onepay.la/client/issuing/cards/update
PUT issuing/cards/{card_id}
Actualiza una tarjeta existente.
### Headers
Token único para garantizar la idempotencia de la petición
### Path
ID de la tarjeta emitida que actualizarás. [Crear tarjeta](/client/issuing/cards/create).
### Body
Apodo para la tarjeta.
Estado de la tarjeta.
```json 200 theme={null}
{
"id": "9e28925d-2495-48bb-8740-dc0f5454d738",
"status": "created",
"last_4": null,
"nickname": null,
"customer": {
"id": "9e28925c-7543-496f-abff-ed973137ab7c",
"first_name": "Carmela",
"last_name": "Rice",
"email": "",
"phone": "+17408135335",
"document_type": "CC",
"document_number": "554637",
"created_at": "2025-02-07T23:28:34.000000Z",
"is_test": true
},
"address": {
"line": "5630 Schulist Stravenue Suite 568",
"line_2": "20276 Jordi Villages Apt. 981",
"state": "Coleman Rice V",
"city": "Dakotamouth",
"country": "LS"
},
"wallet": {
"id": "0194e2be-5ef6-7080-8bb6-ab629957edde",
"balance": 0,
"label": "$0"
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Actualizar pin
Source: https://docs.onepay.la/client/issuing/cards/update-pin
PUT issuing/cards/{card_id}/pin
[Solo tarjetas fisicas] Actualiza el pin de la tarjeta
### Headers
Token único para garantizar la idempotencia de la petición
ID de la tarjeta emitida cuyo PIN vas a actualizar. [Crear tarjeta](/client/issuing/cards/create).
### Body
PIN de 4 digitos para la tarjeta fisica.
```json 204 theme={null}
no content
```
```json 422 theme={null}
{
"message": "The customer id field is required. (and 7 more errors)",
"code": 10001,
"code_name": "validation_error",
"errors": {
"pin": [
"The pin field is required."
],
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Ver datos de tarjeta
Source: https://docs.onepay.la/client/issuing/cards/view
GET issuing/cards/{card_id}/view
Obtiene el iframe de la tarjeta para que puedas mostrarlo en tu sitio web.
ID de la tarjeta emitida que deseas visualizar. [Crear tarjeta](/client/issuing/cards/create).
```json 200 theme={null}
{
"id": "9ccf6d59-a00d-43c9-933d-4057083bd50f",
"iframe": "https://s.onepay.la/1234567890"
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Tarjeta no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Introducción
Source: https://docs.onepay.la/client/issuing/index
Gestiona las tarjetas de tus clientes.
## Descripción
En esta sección de la documentación técnica, se presenta cómo OnePay permite la emisión de tarjetas de gastos, ya sea para uso corporativo o para clientes finales. A través de la plataforma de OnePay, las empresas pueden gestionar de manera eficiente la emisión, activación y administración de tarjetas, ofreciendo una solución integral para el control de gastos y la mejora de la experiencia del cliente.
### Características
* **Emisión de tarjetas**: Permite la creación y emisión de tarjetas físicas o virtuales para diferentes propósitos.
* **Gestión centralizada**: Administra todas las tarjetas emitidas desde una única plataforma, facilitando el seguimiento y control.
* **Personalización**: Ofrece opciones de personalización para adaptarse a las necesidades específicas de cada empresa o cliente.
* **Seguridad**: Implementa medidas de seguridad avanzadas para proteger la información y las transacciones de los usuarios.
### Beneficios
* **Control de gastos**: Facilita el seguimiento y control de los gastos corporativos, mejorando la transparencia y eficiencia.
* **Mejora de la experiencia del cliente**: Proporciona a los clientes finales una solución conveniente y segura para sus necesidades de pago.
* **Flexibilidad**: Adapta la emisión de tarjetas a diferentes escenarios y requerimientos, ya sea para empleados, clientes o socios comerciales.
* **Integración**: Se integra fácilmente con otros servicios y sistemas de OnePay, ofreciendo una solución completa y coherente.
En las siguientes secciones, se detallarán los pasos para implementar y utilizar el servicio de emisión de tarjetas de OnePay, así como las mejores prácticas para maximizar sus beneficios.
# Obtener balance
Source: https://docs.onepay.la/client/movimientos/balance
GET /balances
Endpoint para obtener el balance de la cuenta de OnePay.
```json 200 theme={null}
{
"id": "0ced28ec-bd54-42a0-844d-00fde7b03300",
"balance": 30284766.15,
"balance_label": "$30.284.766,15"
}
```
```json 401 theme={null}
{
"message": "No autenticado",
"code": 10000,
"code_name": "unauthenticated"
}
```
```json 404 theme={null}
{
"message": "Balance no encontrado",
"code": 10004,
"code_name": "not_found"
}
```
# Detalle de un movimiento
Source: https://docs.onepay.la/client/movimientos/detail
GET /transactions/{transaction_id}
Obtiene el detalle de un movimiento, incluyendo el nodo de origen.
Obtiene un movimiento de la billetera de tu empresa. Es un endpoint **solo de consulta**.
A diferencia del [listado](/client/movimientos/list), el detalle **sí** incluye el `node`: el origen del movimiento (un pago, una dispersión, etc.).
### Path Parameters
UUID del movimiento obtenido desde el [listado de movimientos](/client/movimientos/list).
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/transactions/0194b42f-5515-7245-b9f4-193c92f37b8c \
-X GET \
-H "Authorization: Bearer sk_test_xxx"
```
```ts theme={null}
const response = await fetch('https://api.onepay.la/v1/transactions/0194b42f-5515-7245-b9f4-193c92f37b8c', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx',
},
});
const data = await response.json();
```
```python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/transactions/0194b42f-5515-7245-b9f4-193c92f37b8c',
headers={'Authorization': 'Bearer sk_test_xxx'},
)
data = response.json()
```
### Response
UUID del movimiento.
Tipo de movimiento: `deposit` (entrada) o `withdraw` (salida).
Monto del movimiento en pesos (COP).
Monto formateado, por ejemplo `$50.000`.
Concepto del movimiento. Puede ser `null`.
Descripción legible del movimiento. Puede ser `null`.
Código del tipo de movimiento (ver [tabla de valores](/client/movimientos/list#valores-de-subtype)).
Etiqueta legible del `subtype`.
`true` si el movimiento está confirmado; `false` si está reservado o pendiente.
Fecha (ISO 8601) en que el saldo se acredita al balance. Puede ser `null`.
Fecha de creación en formato ISO 8601.
Identificador externo asociado al movimiento, si existe. Puede ser `null`.
Tipo del nodo de origen del movimiento, por ejemplo `Payment` o `CashoutLine`. Es `null` cuando el movimiento no tiene un origen asociado.
UUID del nodo de origen. Es `null` cuando no aplica.
Objeto con el origen del movimiento. Su forma depende de `node_type`:
* `Payment`: el pago asociado (mismo formato que el [detalle de pago](/client/payments/detail)).
* `CashoutLine`: la línea de dispersión asociada.
* Otros tipos: `null`.
### Ejemplo de respuesta
```json 200 theme={null}
{
"id": "0194b42f-5515-7245-b9f4-193c92f37b8c",
"type": "deposit",
"amount": 50000,
"amount_label": "$50.000",
"concept": "Pago recibido",
"description": "Pago recibido: f37b8c",
"subtype": "PAYIN",
"subtype_label": "Pago",
"confirmed": true,
"accredited_at": null,
"created_at": "2025-01-29T22:29:48.000000Z",
"external_id": "ORD-9912",
"node_type": "Payment",
"node_id": "9e16627d-1eb9-46c4-ba19-b229ea77d68e",
"node": {
"id": "9e16627d-1eb9-46c4-ba19-b229ea77d68e",
"source": "Pago de pedido ORD-9912",
"currency": "COP",
"amount": 50000,
"amount_label": "$50.000",
"title": "Pago de pedido ORD-9912",
"status": "approved",
"is_test": false,
"external_id": "ORD-9912",
"created_at": "2025-01-29T22:29:48.000000Z",
"paid_at": "2025-01-29T22:29:48.000000Z",
"payment_link": "https://checkout.onepay.la/9e16627d-1eb9-46c4-ba19-b229ea77d68e"
}
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado",
"code": 10002,
"code_name": "record_not_found"
}
```
# Solicitar dispersión
Source: https://docs.onepay.la/client/movimientos/dispersion
POST /balances
Solicita la dispersión del balance a una cuenta bancaria registrada de tu empresa.
Dispersa el balance de tu cuenta OnePay a una cuenta bancaria registrada de tu empresa.
**Cambio de contrato (agosto de 2026).** Este endpoint respondía `204 No Content`. Ahora responde
`201` con la dispersión creada, para que tengas el `id` con el que casar los webhooks
[`cashout.*`](/client/webhooks/cashouts). Si tu integración valida el status exacto `204`,
actualízala antes de la fecha de despliegue.
Ambos parámetros son opcionales:
* Si no envías `amount`, se dispersa el **balance completo**.
* Si no envías `account_id`, se usa la **cuenta bancaria principal** (fundable) de tu empresa.
La cuenta bancaria debe pertenecer directamente a tu empresa. Cuentas de tipo PSE no son elegibles como cuenta principal.
Si envías un `account_id` que pertenece a un cliente o invitado, recibirás un error `company_account_not_found`.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Monto a dispersar en pesos (COP). Mínimo \$10.000. Si no se envía, se dispersa el balance completo.
ID de la cuenta bancaria destino. Debe pertenecer a tu empresa (no a un cliente o invitado). Si no se envía, se usa la cuenta principal. [Aprende a registrar cuentas](/client/accounts/create).
Identificador propio de la dispersión, máximo 100 caracteres. Se devuelve en la respuesta y en
todos los webhooks `cashout.*` de esta dispersión, para que puedas cruzarla contra tu sistema.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/balances \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json"
```
```bash theme={null}
curl https://api.onepay.la/v1/balances \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{"amount": 500000}'
```
```bash theme={null}
curl https://api.onepay.la/v1/balances \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{"amount": 500000, "account_id": "84cc072e-90e8-33cf-9305-098095fed32f"}'
```
```bash theme={null}
curl https://api.onepay.la/v1/balances \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{"amount": 500000, "external_id": "TESORERIA-2026-08-19"}'
```
### Response
La respuesta es la línea de dispersión creada, con las mismas llaves que viajan después en los
webhooks [`cashout.*`](/client/webhooks/cashouts). Guarda el `id` (o envía tu propio `external_id`)
para poder casar esos eventos con la solicitud que hiciste.
Identificador único de la dispersión. Es el mismo `id` que llega en los webhooks `cashout.*`.
En esta dispersión es el **ID de tu empresa**, porque el dinero va a una cuenta propia y no a un
cliente. En [`POST /cashouts`](/client/cashouts/create) en cambio es el cliente beneficiario.
Cuenta bancaria de tu empresa a la que se envió el dinero.
Monto dispersado en pesos (COP), no en centavos.
Estado inicial de la dispersión (normalmente `to_process`). Su evolución llega por webhook.
`true` si la dispersión se creó con una llave de pruebas (`sk_test_xxx`).
Fecha de programación. En esta dispersión siempre llega `null`: se procesa de inmediato.
Concepto de la operación. En dispersiones a cuenta propia siempre es
`Envío de fondos OnePay a cuenta.`.
`true` si las comisiones se descuentan del monto que llega a la cuenta destino.
Canal utilizado (`ACH`, `TURBO`).
El `external_id` que enviaste. Llega `null` si no lo enviaste.
Referencia interna de la operación. En dispersiones a cuenta propia siempre es
`Deposito a cuenta propia`.
Fecha de creación del registro.
### Errores
| Código | Nombre | HTTP | Descripción |
| ------ | --------------------------- | ---- | ---------------------------------------------------------- |
| 10500 | `balance_is_empty` | 401 | El saldo está vacío |
| 10501 | `insufficient_funds` | 401 | El monto solicitado supera el balance disponible |
| 10809 | `company_account_not_found` | 422 | No se encontró cuenta bancaria o no pertenece a tu empresa |
```json 201 theme={null}
{
"id":"9d44ce43-a227-4566-b107-5a6bc01cbcdf",
"customer_id":"9b3f1a20-6d51-4a7e-9f2c-1c9f0e4d7b11",
"account_id":"84cc072e-90e8-33cf-9305-098095fed32f",
"is_test":false,
"amount":500000,
"status":"to_process",
"scheduled_at":null,
"created_at":"2026-08-19T14:32:10.000000Z",
"external_id":"TESORERIA-2026-08-19",
"description":"Envío de fondos OnePay a cuenta.",
"reference":"Deposito a cuenta propia",
"method":"ACH",
"discount_to_destination":false
}
```
```json 401 theme={null}
{
"message": "Tu saldo está vacío, necesitas depositar fondos para continuar con la operación.",
"code": 10500,
"code_name": "balance_is_empty"
}
```
```json 401 theme={null}
{
"message": "No tienes fondos suficientes para hacer está operación.",
"code": 10501,
"code_name": "insufficient_funds"
}
```
```json 422 theme={null}
{
"message": "No se encontró una cuenta bancaria registrada. Debes registrar una cuenta bancaria antes de solicitar una dispersión de balance.",
"code": 10809,
"code_name": "company_account_not_found"
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Listar movimientos
Source: https://docs.onepay.la/client/movimientos/list
GET /transactions
Lista los movimientos (transacciones) de la billetera de tu empresa.
Devuelve la lista paginada de los movimientos de la billetera de tu empresa, ordenados del más reciente al más antiguo. Es un endpoint **solo de consulta**.
El listado **no** incluye el nodo de origen (`node`) de cada movimiento. Para obtenerlo, consulta el [detalle de un movimiento](/client/movimientos/detail).
### Query Parameters
Filtra por tipo de movimiento: `deposit` (entrada de dinero) o `withdraw` (salida de dinero).
Filtra por el código de movimiento específico (ver tabla de `subtype` más abajo), por ejemplo `PAYIN`, `CASHOUT` o `PAYOUT`.
Filtra por estado de confirmación: `true` (confirmados) o `false` (reservados / pendientes).
Filtra los movimientos de una billetera específica. El valor es el `id` (UUID) de la billetera, obtenido en [listar billeteras](/client/movimientos/wallets). Un `id` inexistente o de otra empresa devuelve una lista vacía.
Fecha inicial (inclusive) en formato `YYYY-MM-DD`. Devuelve movimientos creados desde esta fecha.
Fecha final (inclusive) en formato `YYYY-MM-DD`. Devuelve movimientos creados hasta esta fecha.
Ordenamiento. Valores permitidos: `created_at`, `-created_at`, `amount`, `-amount`. El prefijo `-` indica orden descendente.
Cantidad de resultados por página (mínimo 1, máximo 100).
Número de página para paginación.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/transactions \
-X GET \
-H "Authorization: Bearer sk_test_xxx"
```
Con filtros de tipo y rango de fechas:
```bash theme={null}
curl "https://api.onepay.la/v1/transactions?filter[type]=deposit&filter[from]=2025-01-01&filter[to]=2025-01-31" \
-X GET \
-H "Authorization: Bearer sk_test_xxx"
```
```ts theme={null}
const params = new URLSearchParams({
'filter[type]': 'deposit',
'filter[from]': '2025-01-01',
'filter[to]': '2025-01-31',
});
const response = await fetch(`https://api.onepay.la/v1/transactions?${params}`, {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx',
},
});
const data = await response.json();
```
```python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/transactions',
params={
'filter[type]': 'deposit',
'filter[from]': '2025-01-01',
'filter[to]': '2025-01-31',
},
headers={'Authorization': 'Bearer sk_test_xxx'},
)
data = response.json()
```
### Response
Lista de movimientos.
UUID del movimiento. Úsalo para consultar el [detalle](/client/movimientos/detail).
UUID de la billetera a la que pertenece el movimiento. Coincide con el `id` de [listar billeteras](/client/movimientos/wallets).
Tipo de movimiento: `deposit` (entrada) o `withdraw` (salida).
Monto del movimiento en pesos (COP).
Monto formateado, por ejemplo `$50.000`.
Concepto del movimiento. Puede ser `null`.
Descripción legible del movimiento. Puede ser `null`.
Código del tipo de movimiento (ver tabla más abajo).
Etiqueta legible del `subtype`, por ejemplo `Pago`.
`true` si el movimiento está confirmado; `false` si está reservado o pendiente.
Fecha (ISO 8601) en que el saldo se acredita al balance. Puede ser `null`.
Fecha de creación en formato ISO 8601.
Identificador externo asociado al movimiento, si existe. Puede ser `null`.
Página actual.
Índice del primer registro en la página actual.
Última página disponible.
Cantidad de registros por página.
Índice del último registro en la página actual.
Total de movimientos.
#### Valores de `subtype`
Los más comunes, agrupados por categoría:
| Categoría | Código | Etiqueta |
| ---------- | ------------------- | -------------------------------------------- |
| Entradas | `PAYIN` | Pago |
| Entradas | `PAYIN_KEY` | Pago con llave |
| Entradas | `PAYIN_INSTANT` | Pago instantáneo |
| Entradas | `MONETIZATION` | Abono por monetización |
| Salidas | `CASHOUT` | Desembolso a cuenta |
| Salidas | `PAYOUT` | Transferencia |
| Salidas | `BILL_PAYMENT` | Pago de factura |
| Salidas | `WALLET_TRANSFER` | Transferencia entre Wallets OnePay |
| Comisiones | `PAYIN_COMMISSION` | Comisión pago aprobado con IVA |
| Comisiones | `PAYOUT_COMMISSION` | Procesamiento de datos transferencia con IVA |
| Impuestos | `TAX_ICA` | Impuesto ICA |
| Impuestos | `TAX_RETE_FUENTE` | Impuesto Retención en la Fuente |
| Impuestos | `TAX_RETE_IVA` | Impuesto Retención IVA |
| Ajustes | `MANUAL` | Ajuste manual de balance |
### Ejemplo de respuesta
```json 200 theme={null}
{
"data": [
{
"id": "0194b42f-5515-7245-b9f4-193c92f37b8c",
"wallet_id": "0ced28ec-bd54-42a0-844d-00fde7b03300",
"type": "deposit",
"amount": 50000,
"amount_label": "$50.000",
"concept": "Pago recibido",
"description": "Pago recibido: f37b8c",
"subtype": "PAYIN",
"subtype_label": "Pago",
"confirmed": true,
"accredited_at": null,
"created_at": "2025-01-29T22:29:48.000000Z",
"external_id": "ORD-9912"
},
{
"id": "0194ad6d-2464-7215-a9a6-8e88d9a5a09d",
"wallet_id": "0ced28ec-bd54-42a0-844d-00fde7b03300",
"type": "withdraw",
"amount": 1000,
"amount_label": "$1.000",
"concept": "Transferencia enviada",
"description": "Transferencia enviada: a5a09d",
"subtype": "CASHOUT",
"subtype_label": "Desembolso a cuenta",
"confirmed": true,
"accredited_at": null,
"created_at": "2025-01-28T14:59:58.000000Z",
"external_id": null
}
],
"current_page": 1,
"from": 1,
"last_page": 65,
"per_page": 20,
"to": 20,
"total": 1291
}
```
```json 401 theme={null}
{
"message": "No autenticado",
"code": 10000,
"code_name": "unauthenticated"
}
```
# Listar billeteras
Source: https://docs.onepay.la/client/movimientos/wallets
GET /wallets
Lista las billeteras de tu empresa, cada una con su balance.
Devuelve el arreglo de billeteras (wallets) de tu empresa, cada una con su balance actual. Es un endpoint **solo de consulta** y **no paginado**.
Solo se incluyen las billeteras del entorno (live o test) que corresponde a tu token. El `id` de cada billetera puede usarse como [`filter[wallet_id]`](/client/movimientos/list) al consultar los movimientos.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/wallets \
-X GET \
-H "Authorization: Bearer sk_test_xxx"
```
```ts theme={null}
const response = await fetch('https://api.onepay.la/v1/wallets', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx',
},
});
const data = await response.json();
```
```python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/wallets',
headers={'Authorization': 'Bearer sk_test_xxx'},
)
data = response.json()
```
```php theme={null}
"https://api.onepay.la/v1/wallets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer sk_test_xxx"]
]);
$data = json_decode(curl_exec($curl), true);
?>
```
### Response
La respuesta es un arreglo con todas las billeteras del entorno actual (no paginado).
UUID de la billetera. Úsalo como `filter[wallet_id]` al consultar movimientos.
Nombre legible de la billetera, por ejemplo `Balance predeterminado`.
Identificador interno de la billetera, por ejemplo `default` o `default_testing`.
Moneda de la billetera, por ejemplo `COP`.
Balance actual en la moneda de la billetera (en pesos para `COP`).
Balance formateado, por ejemplo `$30.284.766,15`.
`true` si es la billetera predeterminada de la empresa.
### Ejemplo de respuesta
```json 200 theme={null}
[
{
"id": "0ced28ec-bd54-42a0-844d-00fde7b03300",
"name": "Balance predeterminado",
"slug": "default",
"currency": "COP",
"balance": 30284766.15,
"balance_label": "$30.284.766,15",
"is_default": true
},
{
"id": "0194b42f-5515-7245-b9f4-193c92f37b8c",
"name": "Pagos",
"slug": "payouts",
"currency": "COP",
"balance": 1250000,
"balance_label": "$1.250.000",
"is_default": false
}
]
```
```json 401 theme={null}
{
"message": "No autenticado",
"code": 10000,
"code_name": "unauthenticated"
}
```
# Obtener payment intent
Source: https://docs.onepay.la/client/payment-intent/get
GET /payment-intents/{id}
Obtiene el detalle de un payment intent (intento de pago) de tu compañía
### Path Parameters
ID del payment intent (UUID)
### Response
Identificador único (UUID)
Descripción del cobro
Monto del cobro en unidades monetarias (no centavos)
Monto formateado con moneda
Moneda. Ej: COP
Estado actual
Tipo del método de pago (CreditCard, Account, Wallet, etc.)
ID del método de pago
Origen del cobro (Link, Payment, Plan, Subscription). Puede variar según el caso.
Fecha de creación (ISO 8601)
Fecha de pago si aplica
Observaciones o marcas internas
Indica si pertenece al entorno de pruebas
ID de la red/proveedor si aplica
ID externo proporcionado por tu sistema
Método de pago asociado. La forma del objeto depende de payment\_method\_type.
ID de la tarjeta
Marca de la tarjeta (Visa, Mastercard, etc.)
Etiqueta asignada
Últimos 4 dígitos
MM/YYYY
ID del titular
Fecha de registro
País de emisión si aplica
ID de la autorización de cuenta
Nombre asignado
Tipo de cuenta (checking | savings)
Estado de la autorización
Indica si existe autorización activa
ID del titular
Si requiere re-vinculación
ID externo si aplica
Banco
Objeto del banco con id, name y logo
Cliente asociado al cobro
ID del cliente
Nombre
Apellido
Correo electrónico
Teléfono (E.164)
Tipo de documento
Número de documento
Fecha de creación
Indicador de entorno
### Response Example
```json 200 theme={null}
{
"id": "9bf2bc44-28d4-4693-9896-7fc1fe1f5b65",
"description": "Pago factura 001-2024",
"amount": 63040,
"amount_label": "$63.040",
"currency": "COP",
"status": "paid",
"payment_method_type": "CreditCard",
"payment_method_id": "3f8b7a21-1d4a-4d2e-8f1a-17e2f1e6b9ab",
"source": {
"type": "Payment",
"id": "12e34567-89ab-4cde-f012-3456789abcde"
},
"created_at": "2024-10-20T12:00:00.000000Z",
"paid_at": "2024-10-20T12:10:10.000000Z",
"remarks": null,
"is_test": true,
"network_id": "prov-123",
"external_id": "EXT-12345",
"method": {
"id": "3f8b7a21-1d4a-4d2e-8f1a-17e2f1e6b9ab",
"brand": "visa",
"label": "Personal",
"last_four": "4242",
"expiration_date": "12/2028",
"customer_id": "1c2d3e4f-5678-90ab-cdef-111213141516",
"created_at": "2024-09-15T10:20:30.000000Z",
"country": "CO"
},
"customer": {
"id": "4e5f6a7b-8c9d-0e1f-2345-6789abcdef01",
"first_name": "Juan",
"last_name": "Pérez",
"email": "juan.perez@example.com",
"phone": "+573001112233",
"document_type": "CC",
"document_number": "1234567890",
"created_at": "2024-09-10T09:00:00.000000Z",
"is_test": true
}
}
```
# Listar payment intents
Source: https://docs.onepay.la/client/payment-intent/list
GET /payment-intents
Obtiene una lista paginada de payment intents (intentos de pago) de tu compañía
### Query Parameters
ID único del payment intent
Filtra por estado. Valores posibles: created, paid, processing, failed, refunded, disputed.
Identificador externo definido por tu sistema para correlacionar transacciones.
Ordena los resultados. Valores: created\_at | -created\_at | paid\_at | -paid\_at
Página a consultar (paginación base 1). Por defecto: 1
### Response
Lista de payment intents
Identificador único (UUID)
Descripción del cobro
Monto del cobro en unidades monetarias (no centavos)
Monto formateado con moneda
Moneda. Ej: COP
Estado actual
Tipo del método de pago (CreditCard, Account, Wallet, etc.)
ID del método de pago
Origen del cobro (Link, Payment, Plan, Subscription). Puede variar según el caso.
Fecha de creación (ISO 8601)
Fecha de pago si aplica
Observaciones o marcas internas
Indica si pertenece al entorno de pruebas
ID de la red/proveedor si aplica
ID externo proporcionado por tu sistema
Página actual
Índice inicial del listado
Número total de páginas
Tamaño de página (por defecto 20)
Índice final del listado
Total de registros
### Response Example
```json 200 theme={null}
{
"current_page": 1,
"from": 1,
"last_page": 3,
"per_page": 20,
"to": 20,
"total": 50,
"data": [
{
"id": "a1b2c3d4-1111-2222-3333-444455556666",
"description": "Cargo suscripción Premium",
"amount": 63040,
"amount_label": "$63.040",
"currency": "COP",
"status": "processing",
"payment_method_type": "CreditCard",
"payment_method_id": "3f8b7a21-1d4a-4d2e-8f1a-17e2f1e6b9ab",
"source": {
"type": "Link",
"id": "9b7e45b5-05e2-4b4e-bb1c-3d8a6a3c15e2"
},
"created_at": "2024-11-02T16:47:09.000000Z",
"paid_at": null,
"remarks": null,
"is_test": true,
"network_id": null,
"external_id": null
},
{
"id": "7777c3d4-8888-9999-aaaa-bbbbccccdddd",
"description": "Pago factura 001-2024",
"amount": 250000,
"amount_label": "$250.000",
"currency": "COP",
"status": "paid",
"payment_method_type": "Account",
"payment_method_id": "8d3fe7c0-6f0c-4de0-99d2-4c86f4f0a9f0",
"source": {
"type": "Payment",
"id": "12e34567-89ab-4cde-f012-3456789abcde"
},
"created_at": "2024-10-20T12:00:00.000000Z",
"paid_at": "2024-10-20T12:10:10.000000Z",
"remarks": null,
"is_test": true,
"network_id": "prov-123",
"external_id": "EXT-12345"
}
]
}
```
# Crear cobro
Source: https://docs.onepay.la/client/payments/create
POST /payments
Crea un nuevo pago en tu cuenta.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Monto a cobrar, en **unidades mayores de la moneda** (no en centavos). Enviar `1400000` con
`currency: "COP"` cobra \$1.400.000 COP.
No lo confundas con los campos de `partial_payment_config`, que sí van en centavos: los
reconoces porque lo llevan en el nombre (`min_amount_in_cents`).
Breve mensaje que se mostrará al usuario al realizar el pago
Código de moneda ISO (COP, USD) por defecto COP
Número de teléfono del cliente a enviar la solicitud de pago via whatsapp.
Campo opcional si quieres enviar una solicitud de pago via email
Referencia de pago para que el usuario pueda interactuar con el portal de recaudo.
Monto en la misma moneda con valor de impuestos, el valor predeterminado será del 19%
ID externo para relacionar el pago con un registro ya existente en tu sistema.
Descripción del pago
URL de un documento que se mostrará al usuario para que pueda realizar el pago.
Fecha de vencimiento del cobro, en formato `YYYY-MM-DD HH:MM:SS`.
**No bloquea el pago**: pasada esta fecha el cobro se sigue pudiendo pagar. Su
función es alimentar las reglas de cobranza ancladas al vencimiento (los
recordatorios de "por vencer", "vence hoy" y de mora salen de acá). Es la misma
fecha que el `due_date` de una factura, que se copia al cobro que la cobra.
Fecha de pago oportuno, en formato `YYYY-MM-DD` (también acepta fecha y hora):
el último día para
pagar sin recargo ni suspensión del servicio.
**Es informativa**: no bloquea el pago ni expira el cobro. Es distinta de
`due_date` — un recibo puede tener las dos. Las reglas de cobranza pueden anclar
recordatorios a esta fecha (disparadores "antes", "el día" y "después" del pago
oportuno, configurables en el portal). Es la misma fecha que el
`timely_payment_date` de una factura, que se copia al cobro que la cobra.
Fecha de expiración del cobro, en formato `YYYY-MM-DD HH:MM:SS`.
**Sí bloquea el pago**: al cumplirse, el cobro pasa a estado `expired` y deja de
poder pagarse. Si no la envías se aplica la expiración por defecto configurada
para tu empresa; si tu empresa no tiene una configurada, el cobro no expira.
Son tres fechas distintas y complementarias: `due_date` es **cuándo vence el
documento** (blanda, ancla los recordatorios de vencimiento y mora),
`timely_payment_date` es **hasta cuándo se puede pagar sin recargo** (blanda,
informativa, ancla los recordatorios de pago oportuno) y `expiration_date` es
**hasta cuándo se puede pagar** (dura, cierra el cobro). Puedes enviar una,
varias o las tres.
Fecha en la que el cobro será enviado al usuario. `YYYY-MM-DD`.
Metadatos adicionales del pago en formato JSON
La llave `template_id` está reservada. Si la envías dentro de `metadata` recibirás un error 422: úsala como campo de primer nivel.
Plantilla de WhatsApp con la que se enviará el cobro. Si no la envías, OnePay elige la plantilla según la configuración de tu canal.
Obtén los valores válidos con [`GET /templates`](/client/templates/list): solo sirven los `id` que traen `selectable: true`, es decir, plantillas aprobadas de categoría `PAYMENT` que pertenecen a tu empresa o son genéricas compartidas contigo.
Si la plantilla no existe, no está aprobada, no es de cobro o no está disponible para tu empresa, la petición falla con un error 422 y el cobro **no** se crea.
La plantilla queda fijada en el cobro: la verás en `metadata.template_id` de la respuesta y se usará también en los reenvíos. Si el cobro entra al motor de cobranzas, los recordatorios por etapa usan la plantilla configurada en la regla correspondiente.
URL de redirección
Los pagos divididos permiten distribuir automáticamente un único pago entre múltiples destinatarios según reglas preestablecidas, optimizando la gestión de fondos sin necesidad de cálculos manuales o costos adicionales.
ID del cliente beneficiario del split. [Ver clientes](/client/customers/create).
Tipo de distribución:
* `percentage` — Porcentaje entero del monto total (`10` = 10%)
* `fixed` — Monto fijo en unidades mayores de la moneda (no en centavos)
Si el total de splits supera el 100% del monto o excede el monto total, la operación será rechazada.
Valor del split según el tipo:
* Si `split_type` es `percentage`: porcentaje entero (`5` = 5%, `100` = 100%)
* Si `split_type` es `fixed`: monto en la misma unidad que `amount` (unidades mayores, no centavos)
Versiones anteriores de esta página describían el porcentaje "en centésimas" (`10000` = 100%).
Era un error: la suma de los splits de tipo `percentage` no puede pasar de `100`, así que
esos valores se rechazan con un 422.
Descripción interna del split.
ID de la cuenta donde se recibirá el split. Si no se especifica, se usa la cuenta principal del cliente.
Para dividir hacia otra empresa que usa OnePay, registra su saldo como una cuenta y usa ese
`account_id`. [Ver la guía](/client/accounts/onepay-balance).
Forma anterior de dividir hacia el saldo de otra empresa: `true` y el identificador del saldo
ajeno en `account_id`, en cada cobro.
Obsoleto. Registra ese saldo como una cuenta del cliente y usa `customer_id` + `account_id`
como en cualquier otro split. [Cómo migrar](/client/accounts/onepay-balance#migrar-desde-to-company-wallet).
Ambas formas funcionan durante la transición.
Fecha programada para realizar el split (`YYYY-MM-DD HH:mm:ss`). Si es `null`, se ejecuta de inmediato.
Configuración para pagos parciales. Permite que un cobro sea pagado en múltiples transacciones.
Requiere que el feature **Pagos Parciales** esté habilitado en tu cuenta. Contacta a soporte para activarlo.
Monto mínimo por pago parcial en centavos. Mínimo: 100 (equivale a \$1).
Monto máximo por pago parcial en centavos. Si no se envía, el máximo es el saldo restante.
Número máximo de pagos parciales permitidos. Mínimo: 2, Máximo: 10. Por defecto: 3.
Horas antes de que expire la ventana de pago parcial después del primer abono. Mínimo: 1, Máximo: 720. Por defecto: 24.
**Métodos de pago permitidos**
El método de pago disponible depende de la configuración de tu cuenta. Comunícate con el equipo de soporte para habilitar métodos adicionales.
| Método | Campo requerido | Descripción |
| ------------------------- | --------------- | ----------------------------------------------- |
| Cuenta bancaria (ACH) | `account_id` | Débito directo desde cuenta bancaria registrada |
| Tarjeta de crédito/débito | `card_id` | Cargo a tarjeta tokenizada |
Solo uno de los dos (`account_id` o `card_id`) debe estar presente en la petición.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: payment-123" \
-d '{
"amount": 1400000,
"currency": "COP",
"title": "Suscripción Premium",
"reference": "INV-2045",
"phone": "+573201112233",
"email": "customer@example.com",
"redirect_url": "https://app.onepay.la/thanks",
"allows": {
"cards": true,
"accounts": true,
"pse": true
},
"metadata": {
"salesforce_id": "OP-554"
}
}'
```
```ts theme={null}
import fetch from 'node-fetch';
const body = {
amount: 1400000,
currency: 'COP',
title: 'Suscripción Premium',
reference: 'INV-2045',
phone: '+573201112233',
email: 'customer@example.com',
redirect_url: 'https://app.onepay.la/thanks',
allows: {
cards: true,
accounts: true,
pse: true
},
metadata: {
salesforce_id: 'OP-554'
}
};
await fetch('https://api.onepay.la/v1/payments', {
method: 'POST',
headers: {
Authorization: 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'payment-123'
},
body: JSON.stringify(body)
});
```
```python theme={null}
import requests
payload = {
"amount": 1400000,
"currency": "COP",
"title": "Suscripción Premium",
"reference": "INV-2045",
"phone": "+573201112233",
"email": "customer@example.com",
"redirect_url": "https://app.onepay.la/thanks",
"allows": {
"cards": True,
"accounts": True,
"pse": True
},
"metadata": {
"salesforce_id": "OP-554"
}
}
response = requests.post(
"https://api.onepay.la/v1/payments",
headers={
"Authorization": "Bearer sk_test_xxx",
"x-idempotency": "payment-123"
},
json=payload,
timeout=15
)
response.raise_for_status()
print(response.json())
```
### Response
Identificador único del pago
Monto del pago en pesos
Código de moneda ISO
Estado del pago:
* `pending` - Pendiente
* `processing` - Procesando
* `approved` - Aprobado
* `declined` - Rechazado
* `cancelled` - Cancelado
* `expired` - Expirado
* `partially_paid` - Parcialmente pagado
* `partial_expired` - Pago parcial expirado
ID del cliente que realizó el pago
Método de pago utilizado
Fecha de vencimiento del cobro (ISO 8601). No bloquea el pago.
Fecha de pago oportuno (ISO 8601): último día para pagar sin recargo ni
suspensión. Informativa: no bloquea el pago ni expira el cobro.
Descripción del pago
Metadatos adicionales del pago
Información de pago parcial. Solo presente cuando `partial_payment_config` está configurado.
Total pagado hasta el momento en centavos
Total pagado formateado (ej: "\$50.000")
Saldo restante por pagar en centavos
Saldo restante formateado
Porcentaje de progreso del pago (0 a 100)
Indica si el pago fue completado totalmente
Monto mínimo por pago parcial en centavos
Monto máximo por pago parcial en centavos
Número máximo de pagos parciales permitidos
Horas de expiración configuradas
Fecha de expiración del pago parcial (ISO 8601). Se establece después del primer abono.
Lista de cargos pagados
ID del cargo
Monto del cargo en centavos
Monto formateado
Tipo de método de pago (ej: "card", "account", "pse")
Descripción del método de pago
Fecha de pago (ISO 8601)
Fecha y hora de creación en formato ISO 8601
### Ejemplo de respuesta
```json Cobro estándar theme={null}
{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Suscripción Premium",
"currency": "COP",
"amount": 1400000,
"amount_label": "$ 1.400.000",
"title": "Suscripción Premium",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-03-20T22:36:24.000000Z",
"due_date": null,
"timely_payment_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "pending",
"is_test": false,
"created_at": "2025-03-05T22:36:24.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": "https://app.onepay.la/thanks",
"provider_id": null,
"metadata": { "salesforce_id": "OP-554" },
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null
}
```
```json Con pagos parciales theme={null}
{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Suscripción Premium",
"currency": "COP",
"amount": 1400000,
"amount_label": "$ 1.400.000",
"title": "Suscripción Premium",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-03-20T22:36:24.000000Z",
"due_date": null,
"timely_payment_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "pending",
"is_test": false,
"created_at": "2025-03-05T22:36:24.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": "https://app.onepay.la/thanks",
"provider_id": null,
"metadata": { "salesforce_id": "OP-554" },
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null,
"partial_payment": {
"total_paid_in_cents": 0,
"total_paid_label": "$ 0",
"remaining_amount_in_cents": 140000000,
"remaining_label": "$ 1.400.000",
"progress_percentage": 0,
"is_fully_paid": false,
"min_amount_in_cents": 20000000,
"max_amount_in_cents": null,
"max_payment_methods": 3,
"timeout_hours": 24,
"partial_expires_at": null,
"charges": []
}
}
```
# Eliminar cobro
Source: https://docs.onepay.la/client/payments/delete
DELETE /payments/{payment_id}
Este endpoint te permite eliminar un cobro existente
### Path Parameters
ID del cobro que eliminarás. [Crear cobro](/client/payments/create).
### Body
Controla si se le avisa al cliente que su cobro fue cancelado. Con `false` el cobro se cancela igual, pero **no** se envía el mensaje de WhatsApp (plantilla `canceled_payment`) ni el correo de cancelación. Por defecto (`true` u omitido) sí se envían, que es el comportamiento histórico del endpoint.
Está pensado para ajustes operativos: corregir un cobro y volver a emitirlo, o retirar una deuda que el cliente ya pagó en caja. En esos casos avisarle que *"la empresa canceló tu pago pendiente"* lo confunde, porque desde su lado no hay nada que corregir.
El body es opcional: si no lo envías, se aplica `notify: true`. Un valor que no sea booleano devuelve `422`.
**El webhook al comercio se envía igual.** `notify` solo silencia los avisos al **cliente final** —WhatsApp y correo—. La notificación a tu sistema sale siempre, también con `notify: false`, así que tu integración se entera de la cancelación sin ningún cambio.
**`notify: false` deja al cliente con un link muerto:** cancelar un cobro invalida su link de pago (el checkout responde `404`). Si silencias el aviso, el cliente conserva un link que ya no cobra y no se entera.
Por eso el default es `true`. Usa `notify: false` solo cuando la comunicación ya esté resuelta por otro lado: le vas a emitir un cobro nuevo, o ya pagó en caja.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/payments/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166 \
-X DELETE \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"notify": false
}'
```
```ts theme={null}
const response = await fetch('https://api.onepay.la/v1/payments/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
notify: false, // Cancela el cobro sin avisarle al cliente
}),
});
// 204 No Content
```
```python theme={null}
import requests
response = requests.delete(
'https://api.onepay.la/v1/payments/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166',
headers={'Authorization': 'Bearer sk_test_xxx'},
json={'notify': False}, # Cancela el cobro sin avisarle al cliente
)
# 204 No Content
```
### Response
```json 204 theme={null}
no content
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Pago no existe",
"code": 10002,
"code_name": "record_not_found"
}
{
"message": "Registro no encontrado, Token de api no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
```json 422 theme={null}
{
"message": "El pago fue cancelado",
"code": 15004,
"code_name": "payment_cancelled"
}
{
"message": "Este pago ya fue pagado.",
"code": 15003,
"code_name": "payment_already_paid"
}
{
"message": "La solicitud contiene errores de validación.",
"code": 10001,
"code_name": "validation_error",
"errors": {
"notify": ["El campo notify debe ser verdadero o falso."]
}
}
```
# Ver cobro
Source: https://docs.onepay.la/client/payments/detail
GET /payments/{payment_id}
Este endpoint te permite obtener el detalle de un cobro.
ID del cobro creado previamente. [Ver cómo crear un cobro](/client/payments/create).
```bash cURL theme={null}
curl https://api.onepay.la/v1/payments/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166 \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const paymentId = '9e5ccd4a-d2f0-49dd-87fc-a0da752bd166';
const response = await fetch(`https://api.onepay.la/v1/payments/${paymentId}`, {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const payment = await response.json();
console.log(payment.status); // Estado del cobro
console.log(payment.payment_link); // Link de pago
```
```python Python theme={null}
import requests
payment_id = "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166"
url = f"https://api.onepay.la/v1/payments/{payment_id}"
headers = {
"Authorization": "Bearer sk_test_xxx"
}
response = requests.get(url, headers=headers)
payment = response.json()
print(payment["status"]) # Estado del cobro
print(payment["payment_link"]) # Link de pago
```
```php PHP theme={null}
"https://api.onepay.la/v1/payments/{$paymentId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($ch);
$payment = json_decode($response, true);
echo $payment["status"]; // Estado del cobro
echo $payment["payment_link"]; // Link de pago
curl_close($ch);
?>
```
### Response
Identificador único del cobro
Título del cobro (mismo valor que `title`)
Código de moneda ISO (ej: `COP`)
Monto del cobro en pesos
Monto formateado (ej: `"$ 1.400.000"`)
Título del cobro
Descripción del cobro
Número de teléfono del cliente
Fecha de expiración del cobro (ISO 8601). Al cumplirse, el cobro pasa a `expired`
y deja de poder pagarse.
Fecha de vencimiento del cobro (ISO 8601). No bloquea el pago: alimenta las
reglas de cobranza ancladas al vencimiento (recordatorios de "por vencer",
"vence hoy" y mora).
Fecha de pago oportuno (ISO 8601): último día para pagar sin recargo ni
suspensión del servicio. Informativa: no bloquea el pago ni expira el cobro.
Distinta de `due_date` — un cobro puede tener las dos. Si el cobro nace de una
factura, se copia de esta. Las reglas de cobranza pueden anclar recordatorios
a esta fecha ("antes", "el día" y "después" del pago oportuno).
URL del documento adjunto
ID externo del cobro en tu sistema
Métodos de pago habilitados para este cobro
Estado actual del cobro: `pending`, `approved`, `declined`, `cancelled`, `expired`, `in_progress`, `refunded`, `partially_paid`, `partial_expired`
Indica si el cobro fue creado en modo prueba
Fecha de creación (ISO 8601)
Fecha de pago (ISO 8601). `null` si aún no ha sido pagado.
URL del link de pago
URL de redirección tras el pago
ID del proveedor de pago
Metadatos adicionales del cobro
Datos del cliente que realizó el pago. `null` si aún no ha pagado.
Método de pago utilizado. `null` si aún no ha pagado.
Reglas de split aplicadas al cobro
Datos de la empresa. Presente cuando se consulta con credenciales que incluyen la empresa.
Comisión aplicada. `null` si no aplica.
Información de pago parcial. Solo presente cuando el cobro tiene `partial_payment_config` configurado. Ver [crear cobro](/client/payments/create) para detalle de campos.
### Response Example
```json Cobro aprobado theme={null}
{
"id": "9bf2bc44-28d4-4693-9896-7fc1fe1f5b65",
"source": "Factura Movistar Noviembre",
"currency": "COP",
"amount": 63040,
"amount_label": "$ 63.040",
"title": "Factura Movistar Noviembre",
"description": "Factura Movistar Noviembre",
"phone": "+573138977841",
"expiration_at": "2024-05-03T16:47:09.000000Z",
"due_date": null,
"timely_payment_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "approved",
"is_test": false,
"created_at": "2024-05-02T16:47:09.000000Z",
"paid_at": "2024-05-02T18:00:00.000000Z",
"payment_link": null,
"redirect_url": null,
"provider_id": null,
"metadata": null,
"customer": {
"id": "4e5f6a7b-8c9d-0e1f-2345-6789abcdef01",
"first_name": "Juan",
"last_name": "Demo",
"email": "hola@onepay.la",
"phone": "+573167591039",
"document_type": "CC",
"document_number": "1234567890",
"created_at": "2024-04-01T10:00:00.000000Z",
"is_test": false
},
"method": null,
"splits": [],
"company": null,
"commission": null
}
```
```json Pago parcial theme={null}
{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Suscripción Premium",
"currency": "COP",
"amount": 500000,
"amount_label": "$ 500.000",
"title": "Suscripción Premium",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-04-20T22:36:24.000000Z",
"due_date": null,
"timely_payment_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "partially_paid",
"is_test": false,
"created_at": "2025-04-15T10:00:00.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": null,
"provider_id": null,
"metadata": null,
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null,
"partial_payment": {
"total_paid_in_cents": 20000000,
"total_paid_label": "$ 200.000",
"remaining_amount_in_cents": 30000000,
"remaining_label": "$ 300.000",
"progress_percentage": 40.0,
"is_fully_paid": false,
"min_amount_in_cents": 5000000,
"max_amount_in_cents": null,
"max_payment_methods": 3,
"timeout_hours": 24,
"partial_expires_at": "2025-04-16T10:00:00+00:00",
"charges": [
{
"id": "3f8b7a21-1d4a-4d2e-8f1a-17e2f1e6b9ab",
"amount_in_cents": 20000000,
"amount_label": "$ 200.000",
"payment_method_type": "account",
"payment_method": "PSE - Bancolombia",
"paid_at": "2025-04-15T10:30:00+00:00"
}
]
}
}
```
# Introducción
Source: https://docs.onepay.la/client/payments/index
Gestiona los cobros y solicitudes de pago de tus clientes.
## ¿Qué es un Cobro (Payment)?
Un cobro es una **solicitud de pago** que se envía al cliente. OnePay genera un link de pago único donde el cliente elige su método de pago preferido (tarjeta, PSE, Nequi, Daviplata, Bre-B, etc.).
Si necesitas debitar automáticamente un método de pago ya autorizado (sin intervención del cliente), usa [Cargos (Charges)](/client/charges/index) en su lugar.
## ¿Cuándo usar Cobros?
* Facturas o pagos únicos donde el cliente elige cómo pagar
* Cobros enviados por WhatsApp, email o link compartido
* Pagos donde no tienes un método de pago registrado del cliente
* Cobros con múltiples métodos de pago habilitados
## Canales de envío
| Canal | Campo clave | Descripción |
| ---------------------- | ------------ | ----------------------------------------------------------------- |
| **WhatsApp** | `phone` | El cliente recibe el link de pago directamente en su WhatsApp |
| **Email** | `email` | Se envía un correo electrónico con el link de pago |
| **Link manual** | Ninguno | Copia el `payment_link` de la respuesta y compártelo como quieras |
| **Link monto abierto** | Sin `amount` | El cliente ingresa el monto que desea pagar |
| **Portal de recaudo** | `reference` | El cliente busca su cobro por referencia en el portal |
Para ver ejemplos detallados de cada canal, consulta los [Casos de uso de cobros](/client/use-cases/payments).
## Ejemplo rápido
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: pago-001" \
-d '{
"amount": 150000,
"title": "Factura #1234",
"phone": "+573201112233",
"currency": "COP"
}'
```
La respuesta incluye un `payment_link` que el cliente puede abrir para completar el pago.
## Estados del cobro
| Estado | Descripción |
| ----------------- | ---------------------------------------------------------------------------- |
| `pending` | Creado, esperando que el cliente pague |
| `in_progress` | El pago está siendo procesado |
| `approved` | Pago exitoso |
| `declined` | Pago rechazado por el banco o procesador |
| `cancelled` | Cobro cancelado manualmente |
| `expired` | El cobro expiró sin ser pagado |
| `partially_paid` | El cliente pagó un monto menor al requerido. Puede recibir pagos adicionales |
| `partial_expired` | El cobro parcial expiró sin completarse |
| `refunded` | Pago devuelto al cliente |
| `disputed` | El cliente abrió una disputa o contracargo |
| `issue` | Incidencia en el procesamiento — contacta soporte |
| `scheduled` | Pago programado para una fecha futura |
Los cobros en estado `partially_paid` pueden seguir recibiendo pagos hasta completar el monto total o expirar. Suscríbete a los eventos `payment.partially_paid` y `payment.partial_expired` en tus [webhooks](/client/webhooks/create) para rastrear estos estados.
## Configurar métodos de pago
Usa el campo `allows` para controlar qué métodos están disponibles en cada cobro:
```json theme={null}
{
"allows": {
"cards": true,
"pse": true,
"accounts": true,
"wallets": true,
"breb": true
}
}
```
## Endpoints
| Método | Endpoint | Descripción |
| -------- | ----------------------------- | -------------------------- |
| `POST` | [/payments](create) | Crear cobro |
| `GET` | [/payments](list) | Listar cobros |
| `GET` | [/payments/](detail) | Detalle de un cobro |
| `POST` | [/payments//resend](resend) | Reenviar cobro al cliente |
| `DELETE` | [/payments/](delete) | Eliminar cobro |
| `GET` | [/payments//intents](intents) | Intentos de pago del cobro |
# Intentos de pago
Source: https://docs.onepay.la/client/payments/intents
GET /payments/{payment_id}/intents
Endpoint para obtener la lista de intentos asociados a un pago en el sistema de OnePay.
ID del pago cuyo historial de intentos consultarás. [Crear pago](/client/payments/create).
```json 200 theme={null}
[
{
"id": "9e028bd9-755f-4069-8742-7727d0dc4047",
"status": "succeeded",
"currency": "COP",
"amount": 10000,
"amount_label": "$10.000",
"payment_method_type": "CARD",
"payment_method_id": "9e028bd9-74b0-4eda-a121-ab3d59909ce7",
"network_id": "ntw_987654321",
"transaction_id": "txn_abc123xyz",
"remarks": {
"code": "approved",
"message": "Pago aprobado"
},
"is_test": true,
"created_at": "2025-01-20T01:48:54.000000Z",
"paid_at": "2025-01-20T01:49:10.000000Z"
},
{
"id": "8f139e2a-6b5c-4d7e-9f01-23a456789abc",
"status": "failed",
"currency": "COP",
"amount": 10000,
"amount_label": "$10.000",
"payment_method_type": "PSE",
"payment_method_id": "8f139e2a-6b5c-4d7e-9f01-23a456789abc",
"network_id": null,
"transaction_id": null,
"remarks": {
"code": "declined",
"message": "Fondos insuficientes"
},
"is_test": true,
"created_at": "2025-01-20T01:45:22.000000Z",
"paid_at": null
}
]
```
# Listar cobros
Source: https://docs.onepay.la/client/payments/list
GET /payments
Este endpoint te permite obtener una lista de todos los cobros
### Query Parameters
ID único del cobro
Filtra los cobros por estado. Valores posibles: pending, completed, failed, cancelled.
Referencia de pago para que el usuario pueda interactuar con el portal de recaudo.
Identificador externo que asignaste al crear el cobro. La búsqueda es por coincidencia exacta y sólo devuelve cobros de tu empresa.
Orden de los resultados por fecha de creación \[created\_at | -created\_at | paid\_at | -paid\_at]
```bash cURL theme={null}
curl https://api.onepay.la/v1/payments?filter[status]=completed&sort=-created_at \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/payments?filter[status]=completed&sort=-created_at', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data.data); // Array de cobros
console.log(data.current_page); // Página actual
```
```python Python theme={null}
import requests
url = "https://api.onepay.la/v1/payments"
headers = {
"Authorization": "Bearer sk_test_xxx"
}
params = {
"filter[status]": "completed",
"sort": "-created_at"
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(data["data"]) # Array de cobros
print(data["current_page"]) # Página actual
```
```php PHP theme={null}
["status" => "completed"],
"sort" => "-created_at"
]);
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data["data"]); // Array de cobros
echo $data["current_page"]; // Página actual
curl_close($ch);
?>
```
### Response
Lista de cobros encontrados
Identificador único del cobro
Monto del cobro en unidades mayores de la moneda, no en centavos
Moneda del cobro (ej: MXN)
Estado actual del cobro
Fecha de creación en formato ISO 8601
Información de paginación
Número total de cobros
Página actual
Número total de páginas
### Response Example
```json 200 theme={null}
{
"current_page":1,
"data":[
{
"id":"9bf2bc44-28d4-4693-9896-7fc1fe1f5b65",
"status":"cancelled",
"currency":"COP",
"amount":63040,
"external_id":null,
"title":"Factura Movistar Noviembre",
"description":"Factura Movistar Noviembre",
"document_link":"https:\/\/s3.us-east-2.amazonaws.com\/onepay.production\/examples\/movistar.pdf?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEIj%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMiJIMEYCIQDsCxYOf9h%2BnJE%2F%2BCb1xw8MHe4Va%2BhS0y%2BN0T0Hmk1pSAIhAKjTeQ1CwkDngSJLRnLno0w9zSLZRBF85Q0ZE5QBy6B0KosDCIH%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMNDE5MjQzNzMzMzU1IgydbiKzTvDFE2Z7kZsq3wJs7LXSTWKJuPy59ioMYVx9IaGIvpbmA8VeweFROkm4bEqg%2BdXmu5em2USXkIO34u4htN2GhjYnPDz3JpbJZuqPc0sAMbUQuiQPr5AS1ZKhOlBz5BwrBVmaiAnQej1wda8M0SO0gkBAdR6PaX7VG5mTpT6fqIb58FuwGETmR4T11VkJg0fn8FzU7N2JGpoM5uKC9bVaDFh53B%2B4G2VFulCWXRjfJMsYJvTL4AvrTnb6hYFYKRPkAzcdg6yX%2FGELN6V%2Bb5o%2B75DNw96mtF%2FXlbxJg7mLmu3pV8VXRh6otYUtL2wsHAVKCDMu0l5biDjcXkgKtsK%2BvtI9zN4AenE%2BLasZ8TCLJlyi4uuirDnJ%2BQ%2BZ4RJYEXS25Cqq1sa9a%2Bgt79hhR9CmfrgZYOn7ytP01%2FfPspLYFyd4HW3cpeo7%2BC6vmaaErhDpsGn8nuujZM9esGRZTzFUTxKKibuJKbwn4RowsIGxvAY6nQGc8SORqhGHoPWPoKLYMSJ6KImpPLXIfvwxaQFAivgDucwsIhlDNE%2BneS8gqDofMozpGFkCIXudPBvcR0nhMnOdpy1rcRTGhBKLcDQ3k598DjegYtqfOUHpSj1PkxumM6j3vjiY%2FnAS47kGpsAKUOygCXu%2FtFNSUqQxIHnhXcxZS%2Bzcuo9re9IeIpoVdqC1SDpSiFck2QhxAtFAzy1K&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAWDHG7WFV4AZBUR5Z%2F20250119%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20250119T015132Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Signature=7597b9bd823c6350964231139fdbae9844f549f9dd7498cfa18c31bfbd14a703",
"phone":"+573138977841",
"expiration_at":"2024-05-03T16:47:09.000000Z",
"created_at":"2024-05-02T16:47:09.000000Z",
"paid_at":null,
"metadata":null,
"source":"demo",
"allows":{
"cards":true,
"accounts":true,
"card_extra":false,
"realtime":false,
"pse":true,
"transfiya":true
},
"exchange":null,
"extra_value":null,
"scheduled_date":null,
"source_id":null,
"reference":null,
"email":null,
"redirect_url":null,
"remarks":null,
"amount_label":"$63.040",
"deletable":false,
"payment_link":"https:\/\/pagos.onepay.la\/payment\/9bf2bc44-28d4-4693-9896-7fc1fe1f5b65",
"coupon_discount":0,
"customer":{
"first_name":"Juan",
"last_name":"Demo",
"email":"hola@onepay.la",
"phone":"+573167591039",
"user_type":"natural",
},
"method":null,
"splits":[
],
"coupon":null
},
...
],
"to":20,
"per_page":20
}
```
# Reenviar cobro
Source: https://docs.onepay.la/client/payments/resend
POST /payments/{payment_id}
Reenvia una solicitud de pago a tu cliente.
### Path Parameters
Token único para garantizar la idempotencia de la petición
ID del cobro que quieres reenviar a tu cliente. [Crear cobro](/client/payments/create).
### Response
Indica si la operación fue exitosa
Mensaje descriptivo del resultado de la operación
### Response Example
```json 201 theme={null}
{}
```
```json 422 theme={null}
{
"message": "Este pago fue aprobado, no se puede reintentar"
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
```json 404 Pago theme={null}
{
"message": "Registro no encontrado, Pago no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
```json 404 Token theme={null}
{
"message": "Registro no encontrado, Token de api no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Actualizar cobro
Source: https://docs.onepay.la/client/payments/update
PUT /payments/{payment_id}
Actualiza un cobro existente sin cancelarlo ni recrearlo, y reenvía el mensaje solo si lo pides.
Actualiza un cobro **en sitio**: cambias monto, título, fecha u otros campos sin
cancelar el cobro ni crear uno nuevo. El mensaje al cliente se reenvía **solo si
envías `resend: true`**.
Pensado para cobros que cambian a diario (por ejemplo, intereses de mora). En
lugar de cancelar y recrear el cobro en cada ajuste —lo que reenvía un mensaje
cada vez y satura al cliente— actualizas el mismo cobro y decides cuándo
notificar.
Solo se modifican los campos que envías; el resto queda intacto. La idempotencia
(`x-idempotency`) no aplica a este endpoint.
### Path Parameters
ID del cobro que quieres actualizar. [Crear cobro](/client/payments/create).
### Body
Todos los campos son opcionales.
Si es `true`, reenvía la solicitud de pago al cliente (WhatsApp) con los datos
actualizados. Si es `false` o se omite, el cobro se actualiza en silencio y **no
se consume ningún mensaje**.
Nuevo monto a cobrar, en unidades mayores de la moneda (no en centavos), igual que al crear el cobro.
Nuevo monto de impuestos, en la misma moneda.
Breve mensaje que se muestra al cliente al pagar. Mínimo 4 caracteres.
Descripción del cobro. Mínimo 4 caracteres.
Referencia de pago para el portal de recaudo.
Número de teléfono del cliente al que se reenvía la solicitud vía WhatsApp.
Correo del cliente para la solicitud de pago.
URL de un documento (por ejemplo, la factura actualizada) que se mostrará al
cliente. Si lo envías, se usa tal cual; si no, y cambió el monto, título o
descripción, OnePay regenera automáticamente su propio documento.
Fecha de vencimiento del cobro, formato `YYYY-MM-DD HH:MM:SS`. No bloquea el
pago: alimenta las reglas de cobranza ancladas al vencimiento (recordatorios
de "por vencer", "vence hoy" y mora). Envía `null` para quitarla.
Fecha de pago oportuno, formato `YYYY-MM-DD` (también acepta fecha y hora):
último día para pagar
sin recargo ni suspensión del servicio. Es informativa —no bloquea el pago ni
expira el cobro— y distinta de `due_date`: un cobro puede tener las dos. Las
reglas de cobranza pueden anclar recordatorios a esta fecha. Envía `null`
para quitarla.
Fecha de expiración del cobro, formato `YYYY-MM-DD HH:MM:SS`. Al cumplirse, el
cobro pasa a `expired` y deja de poder pagarse. Envía `null` para que no expire.
Cada fecha se actualiza por separado: si envías solo `due_date`, el pago
oportuno y la expiración quedan como estaban, y al revés.
Solo se pueden actualizar cobros **abiertos** (pendientes, en progreso,
rechazados, programados o parcialmente pagados). Un cobro ya pagado, cancelado
o expirado responde `422 cant_update_payment`.
Además, si el cobro tiene una **transacción en curso** en la pasarela, no se
puede cambiar el `amount` ni el `tax` (responde `422 payment_charge_in_progress`);
los campos de texto sí se pueden editar.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/payments/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166 \
-X PUT \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 1523000,
"title": "Cuota + interés al 22-jul",
"resend": false
}'
```
```ts theme={null}
import fetch from 'node-fetch';
const body = {
amount: 1523000,
title: 'Cuota + interés al 22-jul',
resend: false
};
await fetch('https://api.onepay.la/v1/payments/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166', {
method: 'PUT',
headers: {
Authorization: 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify(body)
});
```
```python theme={null}
import requests
payload = {
"amount": 1523000,
"title": "Cuota + interés al 22-jul",
"resend": False
}
response = requests.put(
"https://api.onepay.la/v1/payments/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
headers={"Authorization": "Bearer sk_test_xxx"},
json=payload,
timeout=15
)
response.raise_for_status()
print(response.json())
```
### Response
Devuelve el cobro actualizado, con la misma estructura que [Crear cobro](/client/payments/create).
Identificador único del cobro.
Monto del cobro en pesos.
Estado del cobro.
Título del cobro.
Descripción del cobro.
Fecha de vencimiento del cobro (ISO 8601), si aplica. No bloquea el pago.
Fecha de pago oportuno (ISO 8601), si aplica: último día para pagar sin
recargo ni suspensión del servicio. Informativa: no bloquea el pago ni expira
el cobro.
Enlace de pago del cobro.
### Ejemplo de respuesta
```json 200 theme={null}
{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Cuota + interés al 22-jul",
"currency": "COP",
"amount": 1523000,
"amount_label": "$ 1.523.000",
"title": "Cuota + interés al 22-jul",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-03-20T22:36:24.000000Z",
"due_date": null,
"timely_payment_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "pending",
"is_test": false,
"created_at": "2025-03-05T22:36:24.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": null,
"provider_id": null,
"metadata": null,
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null
}
```
```json 422 Cobro no editable theme={null}
{
"message": "Este pago ya no se puede actualizar por su estado actual.",
"code": 15007,
"code_name": "cant_update_payment"
}
```
```json 422 Transacción en curso theme={null}
{
"message": "Este pago tiene una transacción activa en proceso. Por favor espera a que expire e intenta nuevamente.",
"code": 15004,
"code_name": "payment_charge_in_progress"
}
```
```json 404 Pago theme={null}
{
"message": "Registro no encontrado, Pago no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Crear clientes
Source: https://docs.onepay.la/client/plans/create
POST /customers
Crea un nuevo cliente en tu cuenta.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Tipo de usuario, valores permitidos: natural, company
Primer Nombre del cliente
Apellidos Nombre del cliente
Correo electrónico del cliente
Número de teléfono del cliente usa el prefijo de la región ejemplo: +57
Tipo de documento de identidad (CC, CE, NIT, PASSPORT)
Número de documento de identidad
### Response
Identificador único del cliente en formato UUID
Nombre del cliente
Correo electrónico del cliente
Número de teléfono del cliente
Número de documento de identidad del cliente
Tipo de documento de identidad del cliente (ej. DNI, RUC, CE)
Fecha y hora de creación del cliente
```json 200 theme={null}
{
"id":"9da58912-101d-46f8-86c9-20a52119c0bf",
"first_name":"John",
"last_name":"Doe",
"email":"john.doe@example.com",
"phone":"+573100001020",
"document_type":"CC",
"document_number":"1060500333",
"created_at":"2024-12-04T20:09:08.000000Z"
}
```
```json 422 theme={null}
{
"message":"El campo nombre es obligatorio. (y 6 errores m\u00e1s)",
"code":10001,
"code_name":"validation_error",
"errors":{
"first_name":[
"El campo nombre es obligatorio."
],
"last_name":[
"El campo apellido es obligatorio."
],
"phone":[
"El campo tel\u00e9fono es obligatorio."
],
"email":[
"El campo correo electr\u00f3nico es obligatorio."
],
"user_type":[
"El campo user type es obligatorio."
],
"document_type":[
"El campo document type es obligatorio."
],
"document_number":[
"El campo document number es obligatorio."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Eliminar plan
Source: https://docs.onepay.la/client/plans/delete
DELETE /plans/{plan_id}
Elimina un plan específico de tu cuenta.
### Parámetros de Ruta
ID del plan que deseas eliminar. [Ver cómo crear planes](/client/plans/create).
### Response
La petición retorna un código de estado HTTP 201 sin contenido en el cuerpo de la respuesta.
```json 201 theme={null}
no content
```
```json 422 theme={null}
{
"message": "Registro no encontrado, Plan no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Introducción
Source: https://docs.onepay.la/client/plans/index
Gestiona los planes de cobro recurrente para tus clientes.
## Introducción
Los planes definen las reglas de cobro recurrente que se aplican a las suscripciones de tus clientes. Un plan establece el monto, la frecuencia y las condiciones del cobro.
## ¿Cuándo usar Planes?
Usa planes cuando necesites configurar cobros recurrentes estandarizados. Por ejemplo:
* Membresías mensuales con precio fijo
* Planes de servicio con diferentes niveles (básico, premium)
* Cobros periódicos con frecuencia definida (semanal, mensual, anual)
## Relación con Suscripciones
Un plan es la **plantilla** y una suscripción es la **instancia** asociada a un cliente específico. Puedes crear múltiples suscripciones a partir de un mismo plan.
```
Plan "Premium $50.000/mes"
├── Suscripción de Cliente A (activa)
├── Suscripción de Cliente B (activa)
└── Suscripción de Cliente C (cancelada)
```
## Endpoints
* [Crear plan](create) - `POST /plans`
* [Listar planes](list) - `GET /plans`
* [Detalle del plan](detail) - `GET /plans/{id}`
* [Eliminar plan](delete) - `DELETE /plans/{id}`
# Listado de planes
Source: https://docs.onepay.la/client/plans/list
GET /plans
Obtiene el listado de planes disponibles.
Pagina que desea obtener.
```bash cURL theme={null}
curl https://api.onepay.la/v1/plans?page=1 \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/plans?page=1', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data.data); // Array de planes
console.log(data.total); // Total de planes
```
```python Python theme={null}
import requests
url = "https://api.onepay.la/v1/plans"
headers = {
"Authorization": "Bearer sk_test_xxx"
}
params = {
"page": 1
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(data["data"]) # Array de planes
print(data["total"]) # Total de planes
```
```php PHP theme={null}
1
]);
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data["data"]); // Array de planes
echo $data["total"]; // Total de planes
curl_close($ch);
?>
```
```json 200 theme={null}
{
"data": [
{
"id": "9d5f6a52-ff36-41e8-aea3-16d8e0c04f81",
"name": "SaaS - Plan Empresarial - $120.000",
"description": "SaaS - Plan Empresarial - $120.000
",
"internal_id": "120KSaaS",
"coupon_id": null,
"reference_price_in_cents": "12000000",
"currency": "COP",
"amount_in_cents": 12000000,
"cicle_frequency": "monthly",
"cicles": 0,
"allows": {
"cards": true,
"accounts": true,
"card_extra": true,
"realtime": false,
"pse": true,
"transfiya": true
},
"trial": {
"has_trial": false,
"trial_days": 0
},
"complex_payments": [],
"features": [],
"metadata": [],
"created_at": "2024-10-30T23:35:12.000000Z",
"updated_at": "2024-10-30T23:35:12.000000Z",
"link": "https://pagos.onepay.la/plan/9d5f6a52-ff36-41e8-aea3-16d8e0c04f81"
},
{
"id": "9d3316e7-3272-4f2e-9de1-80a10ecd5aa4",
"name": "Factcil - Plan Especial",
"description": "mes 1 al 3 = 25 USD = 100.000 COP
Mes 4 al 6 = 50 USD = 200.000 COP
Mes 7 en adelante = 100 USD = 400.000 COP
",
"internal_id": null,
"coupon_id": null,
"reference_price_in_cents": "400000",
"currency": "COP",
"amount_in_cents": 400000,
"cicle_frequency": "monthly",
"cicles": 0,
"allows": {
"cards": true,
"accounts": true,
"card_extra": true,
"realtime": false,
"pse": true,
"transfiya": true
},
"trial": {
"has_trial": false,
"trial_days": 0
},
"complex_payments": [
{
"amount_in_cents": 100000,
"apply_on_cicle": 1,
"for_cicles": 3,
"label": "Mes 1 al 3",
"target_price": "400000"
},
{
"amount_in_cents": 200000,
"apply_on_cicle": 4,
"for_cicles": 3,
"label": "Mes 4 al 6",
"target_price": "400000"
}
],
"features": [],
"metadata": null,
"created_at": "2024-10-08T22:45:31.000000Z",
"updated_at": "2024-10-08T22:45:31.000000Z",
"link": "https://pagos.onepay.la/plan/9d3316e7-3272-4f2e-9de1-80a10ecd5aa4"
},
{
"id": "9d5f5cf5-f2a8-4ee0-858a-cac827ec8591",
"name": "SaaS - Plan Empresarial - $200.000",
"description": "SaaS Plan Empresarial de $200.000
",
"internal_id": "200KSaaS",
"coupon_id": null,
"reference_price_in_cents": "20000000",
"currency": "COP",
"amount_in_cents": 20000000,
"cicle_frequency": "monthly",
"cicles": 0,
"allows": {
"cards": true,
"accounts": true,
"card_extra": true,
"realtime": false,
"pse": true,
"transfiya": true
},
"trial": {
"has_trial": false,
"trial_days": 0
},
"complex_payments": [],
"features": [],
"metadata": [],
"created_at": "2024-10-30T22:57:50.000000Z",
"updated_at": "2024-10-30T22:57:50.000000Z",
"link": "https://pagos.onepay.la/plan/9d5f5cf5-f2a8-4ee0-858a-cac827ec8591"
},
{
"id": "9d62ce3d-10ef-4fb2-adb0-81c8cc95a905",
"name": "SaaS Plan Empresarial",
"description": null,
"internal_id": "balaysubs",
"coupon_id": null,
"reference_price_in_cents": "19265100",
"currency": "COP",
"amount_in_cents": 19265100,
"cicle_frequency": "monthly",
"cicles": 0,
"allows": {
"cards": true,
"accounts": true,
"card_extra": true,
"realtime": false,
"pse": true,
"transfiya": true
},
"trial": {
"has_trial": false,
"trial_days": 0
},
"complex_payments": [],
"features": [],
"metadata": null,
"created_at": "2024-11-01T16:02:04.000000Z",
"updated_at": "2024-11-01T16:02:04.000000Z",
"link": "https://pagos.onepay.la/plan/9d62ce3d-10ef-4fb2-adb0-81c8cc95a905"
},
{
"id": "9d62cf0d-0c70-4a1c-9509-5cbbcd62a18b",
"name": "SaaS Plan empresarial",
"description": null,
"internal_id": "softcomputosaas",
"coupon_id": null,
"reference_price_in_cents": "4900000",
"currency": "COP",
"amount_in_cents": 4900000,
"cicle_frequency": "monthly",
"cicles": 6,
"allows": {
"cards": true,
"accounts": true,
"card_extra": true,
"realtime": false,
"pse": true,
"transfiya": true
},
"trial": {
"has_trial": false,
"trial_days": 0
},
"complex_payments": [],
"features": [],
"metadata": null,
"created_at": "2024-11-01T16:04:20.000000Z",
"updated_at": "2024-11-01T16:04:20.000000Z",
"link": "https://pagos.onepay.la/plan/9d62cf0d-0c70-4a1c-9509-5cbbcd62a18b"
},
{
"id": "9d62cd1d-071e-41e4-90c9-c73337cdffd2",
"name": "SaaS Plan Empresarial OnePay",
"description": null,
"internal_id": "balaysub",
"coupon_id": null,
"reference_price_in_cents": "192651",
"currency": "COP",
"amount_in_cents": 192651,
"cicle_frequency": "monthly",
"cicles": 0,
"allows": {
"cards": true,
"accounts": true,
"card_extra": true,
"realtime": false,
"pse": true,
"transfiya": true
},
"trial": {
"has_trial": false,
"trial_days": 0
},
"complex_payments": [],
"features": [],
"metadata": null,
"created_at": "2024-11-01T15:58:55.000000Z",
"updated_at": "2024-11-01T15:58:55.000000Z",
"link": "https://pagos.onepay.la/plan/9d62cd1d-071e-41e4-90c9-c73337cdffd2"
},
{
"id": "9d858f8e-099c-4c5f-a47c-33fae5c0bed5",
"name": "Plan Growth",
"description": "Growth\nTarjetas débito y/o crédito\n1,85% + $300 + IVA\n(Por transacción exitosa)\nPSE, Nequi, DaviPlata\n$1.200 + IVA\n(Por transacción exitosa)",
"internal_id": "PlanGrowth",
"coupon_id": null,
"reference_price_in_cents": "44900000",
"currency": "COP",
"amount_in_cents": 44900000,
"cicle_frequency": "monthly",
"cicles": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"trial": {
"has_trial": false,
"trial_days": 0
},
"complex_payments": [],
"features": [],
"metadata": [],
"created_at": "2024-11-18T22:40:46.000000Z",
"updated_at": "2024-11-18T22:40:46.000000Z",
"link": "https://pagos.onepay.la/plan/9d858f8e-099c-4c5f-a47c-33fae5c0bed5"
},
{
"id": "9ddfae35-61eb-4e7d-9a5c-d9c8644bde28",
"name": "Plan Empresarial Factcil",
"description": "1 25usd 2 50 usd 3 100 usd",
"internal_id": "Factcil-empresarial",
"coupon_id": null,
"reference_price_in_cents": "100",
"currency": "USD",
"amount_in_cents": 100,
"cicle_frequency": "monthly",
"cicles": null,
"allows": {
"cards": false,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": false,
"transfiya": false
},
"trial": {
"has_trial": false,
"trial_days": 0
},
"complex_payments": [],
"features": [],
"metadata": null,
"created_at": "2025-01-02T17:51:00.000000Z",
"updated_at": "2025-01-02T17:51:00.000000Z",
"link": "https://pagos.onepay.la/plan/9ddfae35-61eb-4e7d-9a5c-d9c8644bde28"
},
{
"id": "9ddfb145-d2d5-4806-a8f8-9626a42bcd0b",
"name": "Plan Empresarial Guama",
"description": "1 5 USD 2 50 USD 3 100 USD",
"internal_id": "SaaSGuama",
"coupon_id": null,
"reference_price_in_cents": "100",
"currency": "USD",
"amount_in_cents": 100,
"cicle_frequency": "monthly",
"cicles": null,
"allows": {
"cards": false,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": false,
"transfiya": false
},
"trial": {
"has_trial": false,
"trial_days": 0
},
"complex_payments": [],
"features": [],
"metadata": null,
"created_at": "2025-01-02T17:59:34.000000Z",
"updated_at": "2025-01-02T17:59:34.000000Z",
"link": "https://pagos.onepay.la/plan/9ddfb145-d2d5-4806-a8f8-9626a42bcd0b"
}
],
"current_page": 1,
"from": 1,
"last_page": 1,
"per_page": 20,
"to": 9,
"total": 9
}
```
```json 404 theme={null}
{
"message":"Registro no encontrado, Token de api no existe",
"code":10002,
"code_name":"record_not_found"
}
```
# Crear precio
Source: https://docs.onepay.la/client/prices/create
POST /prices
Crea un nuevo precio recurrente para uno de tus productos.
Crea un precio (`price`) asociado a un [producto](/client/products/index) existente. El precio define cuánto y cada cuánto se cobra.
Los precios son **inmutables**: una vez creados no puedes cambiar el monto, la moneda ni la recurrencia. Para cambiar de precio, crea uno nuevo y archiva el anterior con [Archivar precio](/client/prices/delete). Usa `lookup_key` junto con `transfer_lookup_key` para mover la clave estable al precio de reemplazo sin tocar tu código.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
ID de un producto tuyo al que pertenecerá el precio.
Moneda ISO del cobro. Máximo 3 caracteres.
Monto a cobrar, expresado en centavos. Respeta el mínimo por moneda.
Configuración de recurrencia del cobro.
Unidad del ciclo: `day` o `month`. Los valores `week` y `year` aún no están soportados y devuelven `422`.
Número de intervalos por ciclo. Rango permitido: 1 a 36.
Número total de ciclos a cobrar. `null` deja la recurrencia indefinida.
Días de prueba antes del primer cobro.
Etiqueta interna del precio. Máximo 100 caracteres.
Clave estable para re-apuntar el precio vigente sin cambiar tu código. Máximo 100 caracteres.
Si el `lookup_key` ya existe en otro precio, lo transfiere de forma atómica a este nuevo precio.
Marca este precio como el precio por defecto de su producto.
```bash cURL theme={null}
curl https://api.onepay.la/v1/prices \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "x-idempotency: idem_xxx" \
-H "Content-Type: application/json" \
-d '{
"product": "9f5d85a0-1111-7000-aaaa-000000000001",
"currency": "COP",
"unit_amount_in_cents": 7990000,
"nickname": "Mensual",
"lookup_key": "pro_monthly",
"recurring": {
"interval": "month",
"interval_count": 1,
"trial_period_days": 0
}
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/prices', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'x-idempotency': 'idem_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
product: '9f5d85a0-1111-7000-aaaa-000000000001',
currency: 'COP',
unit_amount_in_cents: 7990000,
nickname: 'Mensual',
lookup_key: 'pro_monthly',
recurring: {
interval: 'month',
interval_count: 1,
trial_period_days: 0
}
})
});
const data = await response.json();
```
```python Python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/prices',
headers={
'Authorization': 'Bearer sk_test_xxx',
'x-idempotency': 'idem_xxx'
},
json={
'product': '9f5d85a0-1111-7000-aaaa-000000000001',
'currency': 'COP',
'unit_amount_in_cents': 7990000,
'nickname': 'Mensual',
'lookup_key': 'pro_monthly',
'recurring': {
'interval': 'month',
'interval_count': 1,
'trial_period_days': 0
}
}
)
data = response.json()
```
```php PHP theme={null}
"https://api.onepay.la/v1/prices",
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"x-idempotency: idem_xxx",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"product" => "9f5d85a0-1111-7000-aaaa-000000000001",
"currency" => "COP",
"unit_amount_in_cents" => 7990000,
"nickname" => "Mensual",
"lookup_key" => "pro_monthly",
"recurring" => [
"interval" => "month",
"interval_count" => 1,
"trial_period_days" => 0
]
])
]);
$data = json_decode(curl_exec($curl), true);
?>
```
### Response
Identificador único del precio (UUID).
Tipo de objeto, siempre `price`.
ID del producto padre al que pertenece el precio.
Indica si el precio está vigente. Un precio archivado es `false`.
Etiqueta interna del precio. Puede ser `null`.
Clave estable para re-apuntar el precio vigente. Puede ser `null`.
Moneda ISO del cobro (por ejemplo `COP`).
Monto a cobrar, expresado en centavos.
Tipo de precio, siempre `recurring`.
Configuración de recurrencia del cobro.
Unidad del ciclo: `day` o `month`.
Número de intervalos por ciclo.
Número total de ciclos. `null` cuando es indefinido.
Días de prueba antes del primer cobro.
Fecha de creación en formato ISO 8601.
```json 201 theme={null}
{
"id": "9f5d85a0-2222-7000-aaaa-000000000002",
"object": "price",
"product": "9f5d85a0-1111-7000-aaaa-000000000001",
"active": true,
"nickname": "Mensual",
"lookup_key": "pro_monthly",
"currency": "COP",
"unit_amount_in_cents": 7990000,
"type": "recurring",
"recurring": {
"interval": "month",
"interval_count": 1,
"total_cycles": null,
"trial_period_days": 0
},
"created_at": "2026-07-13T12:00:00.000000Z"
}
```
```json 422 theme={null}
{
"message": "El campo product es obligatorio. (y 2 errores más)",
"code": 10001,
"code_name": "validation_error",
"errors": {
"product": [
"El campo product es obligatorio."
],
"unit_amount_in_cents": [
"El campo unit amount in cents es obligatorio."
],
"recurring.interval": [
"El intervalo seleccionado no es válido. Usa day o month."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Archivar precio
Source: https://docs.onepay.la/client/prices/delete
DELETE /prices/{id}
Archiva un precio sin afectar las suscripciones que lo usan.
Archiva un precio (`active` pasa a `false`). Las suscripciones que ya lo usan siguen cobrando con normalidad. Si el precio era el `default` de su producto, se reasigna automáticamente a otro precio activo.
Los precios son inmutables: no se editan, se archivan. Para reemplazar un precio, crea uno nuevo con [Crear precio](/client/prices/create) y archiva el anterior aquí.
### Path Parameters
ID del precio que deseas archivar. [Crear precio](/client/prices/create).
```bash cURL theme={null}
curl https://api.onepay.la/v1/prices/9f5d85a0-2222-7000-aaaa-000000000002 \
-X DELETE \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/prices/9f5d85a0-2222-7000-aaaa-000000000002', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
```
```python Python theme={null}
import requests
response = requests.delete(
'https://api.onepay.la/v1/prices/9f5d85a0-2222-7000-aaaa-000000000002',
headers={
'Authorization': 'Bearer sk_test_xxx'
}
)
data = response.json()
```
```php PHP theme={null}
"https://api.onepay.la/v1/prices/9f5d85a0-2222-7000-aaaa-000000000002",
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$data = json_decode(curl_exec($curl), true);
?>
```
```json 200 theme={null}
{
"message": "price archived"
}
```
```json 404 theme={null}
{
"message": "No encontrado",
"code": 10004,
"code_name": "not_found"
}
```
# Detalle del precio
Source: https://docs.onepay.la/client/prices/detail
GET /prices/{id}
Obtiene los datos de un precio específico de tu catálogo.
Obtiene los detalles de un precio específico. Devuelve `404` si el precio no pertenece a tu empresa o si no es un precio de catálogo (sin producto asociado).
### Path Parameters
ID del precio a consultar. [Crear precio](/client/prices/create).
```bash cURL theme={null}
curl https://api.onepay.la/v1/prices/9f5d85a0-2222-7000-aaaa-000000000002 \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/prices/9f5d85a0-2222-7000-aaaa-000000000002', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
```
```python Python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/prices/9f5d85a0-2222-7000-aaaa-000000000002',
headers={
'Authorization': 'Bearer sk_test_xxx'
}
)
data = response.json()
```
```php PHP theme={null}
"https://api.onepay.la/v1/prices/9f5d85a0-2222-7000-aaaa-000000000002",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$data = json_decode(curl_exec($curl), true);
?>
```
### Response
Identificador único del precio (UUID).
Tipo de objeto, siempre `price`.
ID del producto padre al que pertenece el precio.
Indica si el precio está vigente. Un precio archivado es `false`.
Etiqueta interna del precio. Puede ser `null`.
Clave estable para re-apuntar el precio vigente sin cambiar tu código. Puede ser `null`.
Moneda ISO del cobro (por ejemplo `COP`).
Monto a cobrar, expresado en centavos.
Tipo de precio, siempre `recurring`.
Configuración de recurrencia del cobro.
Unidad del ciclo: `day` o `month`.
Número de intervalos por ciclo.
Número total de ciclos. `null` cuando es indefinido.
Días de prueba antes del primer cobro.
Fecha de creación en formato ISO 8601.
```json 200 theme={null}
{
"id": "9f5d85a0-2222-7000-aaaa-000000000002",
"object": "price",
"product": "9f5d85a0-1111-7000-aaaa-000000000001",
"active": true,
"nickname": "Mensual",
"lookup_key": "pro_monthly",
"currency": "COP",
"unit_amount_in_cents": 7990000,
"type": "recurring",
"recurring": {
"interval": "month",
"interval_count": 1,
"total_cycles": null,
"trial_period_days": 0
},
"created_at": "2026-07-13T12:00:00.000000Z"
}
```
```json 404 theme={null}
{
"message": "No encontrado",
"code": 10004,
"code_name": "not_found"
}
```
# Introducción
Source: https://docs.onepay.la/client/prices/index
Define cuánto y cada cuánto cobras dentro de un producto.
## ¿Qué es un Precio?
Un precio (`price`) responde a la pregunta "cuánto y cada cuánto". Siempre pertenece a un [producto](/client/products/index) y describe el monto, la moneda y la frecuencia con la que se cobra a tus clientes.
Un producto (el "qué vendes") puede tener varios precios: por ejemplo, el mismo producto "Plan Pro" con un precio mensual y otro anual, o con distintas monedas.
```
Producto "Plan Pro"
├── Precio "Mensual" → COP 79.900 / mes
├── Precio "Anual" → COP 799.000 / año
└── Precio "USD" → USD 19,90 / mes
```
Los precios son **inmutables** una vez creados. No puedes cambiar el monto, la moneda ni la recurrencia de un precio existente. Para modificar un precio, crea uno nuevo y archiva el anterior con [Archivar precio](/client/prices/delete).
Usa `lookup_key` para no atarte al `id`: asígnale una clave estable (por ejemplo `pro_monthly`) y, cuando crees el precio de reemplazo, envía `transfer_lookup_key: true` para mover esa clave al nuevo precio de forma atómica. Tu código sigue apuntando al mismo `lookup_key` sin cambios.
## Objeto price
Cada precio expone los siguientes campos:
* `unit_amount_in_cents`: el monto a cobrar, expresado en centavos.
* `currency`: la moneda ISO del cobro (por ejemplo `COP`).
* `recurring`: la frecuencia (`interval`, `interval_count`, `total_cycles`, `trial_period_days`).
* `active`: indica si el precio está vigente. Un precio archivado tiene `active: false`.
## Endpoints
Consulta los precios del catálogo de tu empresa con filtros y paginación.
Crea un nuevo precio recurrente para uno de tus productos.
Obtiene los datos de un precio específico por su ID.
Archiva un precio (active=false) sin afectar las suscripciones vigentes.
# Listado de precios
Source: https://docs.onepay.la/client/prices/list
GET /prices
Obtiene los precios del catálogo de tu empresa con filtros y paginación.
Obtiene los precios registrados en tu cuenta de OnePay. Solo se devuelven los precios del catálogo (aquellos asociados a un producto), ordenados del más reciente al más antiguo, dentro de un envelope de paginación.
### Query Parameters
Filtra los precios por el ID de un producto tuyo. [Ver productos](/client/products/index).
Filtra por estado. `true` devuelve solo los precios vigentes.
Resuelve uno o varios precios por su `lookup_key`. Se envía como arreglo, por ejemplo `?lookup_keys[]=pro_monthly&lookup_keys[]=pro_yearly`.
Cantidad de registros por página.
Número de página a consultar.
```bash cURL theme={null}
curl "https://api.onepay.la/v1/prices?product=9f5d85a0-1111-7000-aaaa-000000000001&active=true&per_page=15&page=1" \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const params = new URLSearchParams({
product: '9f5d85a0-1111-7000-aaaa-000000000001',
active: 'true',
per_page: '15',
page: '1'
});
const response = await fetch(`https://api.onepay.la/v1/prices?${params}`, {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data.data); // Array de precios
console.log(data.current_page); // Página actual
```
```python Python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/prices',
params={
'product': '9f5d85a0-1111-7000-aaaa-000000000001',
'active': True,
'per_page': 15,
'page': 1
},
headers={
'Authorization': 'Bearer sk_test_xxx'
}
)
data = response.json()
print(data['data']) # Array de precios
print(data['current_page']) # Página actual
```
```php PHP theme={null}
"9f5d85a0-1111-7000-aaaa-000000000001",
"active" => "true",
"per_page" => 15,
"page" => 1
]);
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.onepay.la/v1/prices?" . $query,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$data = json_decode(curl_exec($curl), true);
print_r($data["data"]); // Array de precios
echo $data["current_page"]; // Página actual
?>
```
### Response
Colección de precios de la página actual.
Identificador único del precio (UUID).
Tipo de objeto, siempre `price`.
ID del producto padre al que pertenece el precio.
Indica si el precio está vigente. Un precio archivado es `false`.
Etiqueta interna del precio. Puede ser `null`.
Clave estable para re-apuntar el precio vigente sin cambiar tu código. Puede ser `null`.
Moneda ISO del cobro (por ejemplo `COP`).
Monto a cobrar, expresado en centavos.
Tipo de precio, siempre `recurring`.
Configuración de recurrencia del cobro.
Unidad del ciclo: `day` o `month`.
Número de intervalos por ciclo.
Número total de ciclos. `null` cuando es indefinido.
Días de prueba antes del primer cobro.
Fecha de creación en formato ISO 8601.
Página actual devuelta.
Índice del primer registro de la página.
Última página disponible.
Cantidad de registros por página.
Índice del último registro de la página.
Total de precios que coinciden con el filtro.
```json 200 theme={null}
{
"data": [
{
"id": "9f5d85a0-2222-7000-aaaa-000000000002",
"object": "price",
"product": "9f5d85a0-1111-7000-aaaa-000000000001",
"active": true,
"nickname": "Mensual",
"lookup_key": "pro_monthly",
"currency": "COP",
"unit_amount_in_cents": 7990000,
"type": "recurring",
"recurring": {
"interval": "month",
"interval_count": 1,
"total_cycles": null,
"trial_period_days": 0
},
"created_at": "2026-07-13T12:00:00.000000Z"
}
],
"current_page": 1,
"from": 1,
"last_page": 1,
"per_page": 15,
"to": 1,
"total": 1
}
```
# Crear producto
Source: https://docs.onepay.la/client/products/create
POST /products
Crea un nuevo producto en tu catálogo.
Registra un nuevo producto en tu catálogo. El monto no se define aquí: se configura en los [precios](/client/prices/index) asociados al producto.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Nombre del producto. Máximo 255 caracteres.
Descripción del producto. Máximo 1000 caracteres.
Tu identificador interno del producto. Máximo 255 caracteres.
Etiqueta de la unidad (ej. `asientos`). Máximo 50 caracteres.
Porcentaje de IVA. Valor entre 0 y 100.
Características de marketing (máximo 15). Cada elemento es un objeto `{ "name": string }`, donde `name` admite hasta 80 caracteres.
Datos adicionales de tu aplicación.
```bash cURL theme={null}
curl https://api.onepay.la/v1/products \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "x-idempotency: idem_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "OnePay Pro",
"description": "Para negocios en crecimiento.",
"internal_id": "pro",
"tax_rate": 19,
"marketing_features": [
{ "name": "Clientes ilimitados" },
{ "name": "Reintentos inteligentes" }
]
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/products', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'x-idempotency': 'idem_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'OnePay Pro',
description: 'Para negocios en crecimiento.',
internal_id: 'pro',
tax_rate: 19,
marketing_features: [
{ name: 'Clientes ilimitados' },
{ name: 'Reintentos inteligentes' }
]
})
});
const data = await response.json();
console.log(data);
```
```python Python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/products',
headers={
'Authorization': 'Bearer sk_test_xxx',
'x-idempotency': 'idem_xxx'
},
json={
'name': 'OnePay Pro',
'description': 'Para negocios en crecimiento.',
'internal_id': 'pro',
'tax_rate': 19,
'marketing_features': [
{'name': 'Clientes ilimitados'},
{'name': 'Reintentos inteligentes'}
]
}
)
data = response.json()
print(data)
```
```php PHP theme={null}
"https://api.onepay.la/v1/products",
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"x-idempotency: idem_xxx",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"name" => "OnePay Pro",
"description" => "Para negocios en crecimiento.",
"internal_id" => "pro",
"tax_rate" => 19,
"marketing_features" => [
["name" => "Clientes ilimitados"],
["name" => "Reintentos inteligentes"]
]
])
]);
$data = json_decode(curl_exec($curl), true);
curl_close($curl);
print_r($data);
?>
```
### Response
Identificador único (UUID) del producto.
Siempre `product`.
Nombre del producto.
Descripción del producto.
`false` cuando el producto está archivado.
Tu identificador interno del producto.
Etiqueta de la unidad (ej. `asientos`).
Porcentaje de IVA (0-100).
ID del precio por defecto del producto.
Características de marketing (hasta 15), cada una con la forma `{ "name": string }`.
Datos adicionales de tu aplicación.
Fecha de creación (ISO 8601).
Fecha de última actualización (ISO 8601).
```json 201 theme={null}
{
"id": "9f5d85a0-1111-7000-aaaa-000000000001",
"object": "product",
"name": "OnePay Pro",
"description": "Para negocios en crecimiento.",
"active": true,
"internal_id": "pro",
"unit_label": null,
"tax_rate": 19,
"default_price": null,
"marketing_features": [
{ "name": "Clientes ilimitados" },
{ "name": "Reintentos inteligentes" }
],
"metadata": null,
"created_at": "2026-07-13T12:00:00.000000Z",
"updated_at": "2026-07-13T12:00:00.000000Z"
}
```
```json 422 theme={null}
{
"message": "El campo name es obligatorio.",
"code": 10001,
"code_name": "validation_error",
"errors": {
"name": [
"El campo name es obligatorio."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Archivar producto
Source: https://docs.onepay.la/client/products/delete
DELETE /products/{id}
Archiva un producto y sus precios sin eliminarlos.
Este endpoint **no borra** el producto: lo archiva estableciendo `active` en `false`, junto con sus precios. Las suscripciones existentes que usan ese producto siguen cobrando con normalidad. Si el producto no pertenece a tu empresa, la petición retorna un 404.
### Path Parameters
ID del producto que deseas archivar. [Crear producto](/client/products/create).
```bash cURL theme={null}
curl https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001 \
-X DELETE \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data);
```
```python Python theme={null}
import requests
response = requests.delete(
'https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001',
headers={'Authorization': 'Bearer sk_test_xxx'}
)
data = response.json()
print(data)
```
```php PHP theme={null}
"https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001",
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$data = json_decode(curl_exec($curl), true);
curl_close($curl);
print_r($data);
?>
```
```json 200 theme={null}
{
"message": "product archived"
}
```
```json 404 theme={null}
{
"message": "No encontrado",
"code": 10004,
"code_name": "not_found"
}
```
# Detalle del producto
Source: https://docs.onepay.la/client/products/detail
GET /products/{id}
Obtiene un producto específico con sus precios activos.
Obtiene los detalles de un producto específico de tu empresa, incluyendo su arreglo `prices` con los precios activos. Si el producto no pertenece a tu empresa, la petición retorna un 404.
### Path Parameters
ID del producto a consultar. [Crear producto](/client/products/create).
```bash cURL theme={null}
curl https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001 \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data);
```
```python Python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001',
headers={'Authorization': 'Bearer sk_test_xxx'}
)
data = response.json()
print(data)
```
```php PHP theme={null}
"https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$data = json_decode(curl_exec($curl), true);
curl_close($curl);
print_r($data);
?>
```
### Response
Identificador único (UUID) del producto.
Siempre `product`.
Nombre del producto.
Descripción del producto.
`false` cuando el producto está archivado.
Tu identificador interno del producto.
Etiqueta de la unidad (ej. `asientos`).
Porcentaje de IVA (0-100).
ID del precio por defecto del producto.
Características de marketing (hasta 15), cada una con la forma `{ "name": string }`.
Datos adicionales de tu aplicación.
Precios activos asociados al producto. Consulta el [contrato de precio](/client/prices/index).
Fecha de creación (ISO 8601).
Fecha de última actualización (ISO 8601).
```json 200 theme={null}
{
"id": "9f5d85a0-1111-7000-aaaa-000000000001",
"object": "product",
"name": "OnePay Pro",
"description": "Para negocios en crecimiento.",
"active": true,
"internal_id": "pro",
"unit_label": null,
"tax_rate": 19,
"default_price": "9f5d85a0-2222-7000-aaaa-000000000002",
"marketing_features": [
{ "name": "Clientes ilimitados" },
{ "name": "Reintentos inteligentes" }
],
"metadata": null,
"prices": [
{
"id": "9f5d85a0-2222-7000-aaaa-000000000002",
"object": "price",
"active": true,
"currency": "COP",
"unit_amount": 5000000
}
],
"created_at": "2026-07-13T12:00:00.000000Z",
"updated_at": "2026-07-13T12:00:00.000000Z"
}
```
```json 404 theme={null}
{
"message": "No encontrado",
"code": 10004,
"code_name": "not_found"
}
```
# Introducción
Source: https://docs.onepay.la/client/products/index
Gestiona los productos que vendes, separados de sus precios.
## ¿Qué es un Producto?
Un producto representa **qué vendes**: un bien o servicio de tu catálogo (por ejemplo "OnePay Pro" o "Asientos adicionales"). El producto describe la oferta —su nombre, descripción y características de marketing— pero **no incluye el monto**.
El monto vive en los [precios](/client/prices/index) asociados al producto. Esta separación te permite tener un mismo producto con varios precios (mensual, anual, por moneda o por región) sin duplicar la oferta.
```
Producto "OnePay Pro"
├── Precio $50.000 COP / mes
├── Precio $500.000 COP / año
└── Precio $15 USD / mes
```
## ¿Cuándo usar Productos?
Usa productos cuando quieras organizar tu catálogo de cobros recurrentes de forma reutilizable. Por ejemplo:
* Catálogos con varios niveles (básico, pro, empresarial)
* Un mismo servicio cobrado en varias monedas o frecuencias
* Productos con características de marketing que muestras en el checkout
## Objeto producto
| Campo | Tipo | Descripción |
| -------------------- | -------------- | ----------------------------------------------------------- |
| `id` | string | Identificador único (UUID) del producto. |
| `object` | string | Siempre `product`. |
| `name` | string | Nombre del producto. |
| `description` | string \| null | Descripción del producto. |
| `active` | boolean | `false` cuando el producto está archivado. |
| `internal_id` | string \| null | Tu identificador interno. |
| `unit_label` | string \| null | Etiqueta de la unidad (ej. `asientos`). |
| `tax_rate` | number \| null | Porcentaje de IVA (0-100). |
| `default_price` | string \| null | ID del precio por defecto. |
| `marketing_features` | array | Características de marketing (hasta 15), cada una `{name}`. |
| `metadata` | object \| null | Datos adicionales de tu aplicación. |
| `prices` | array | Precios activos del producto (solo en el detalle). |
| `created_at` | string | Fecha de creación (ISO 8601). |
| `updated_at` | string | Fecha de última actualización (ISO 8601). |
## Endpoints
Obtén el listado paginado de tus productos activos.
Registra un nuevo producto en tu catálogo.
Consulta un producto con sus precios activos.
Modifica los datos de un producto existente.
Archiva un producto y sus precios sin borrarlos.
# Listado de productos
Source: https://docs.onepay.la/client/products/list
GET /products
Obtiene el listado paginado de tus productos activos.
Obtiene los productos activos de tu empresa, ordenados del más reciente al más antiguo, dentro del envelope de paginación estándar.
### Query Parameters
Cantidad de registros por página.
Página que deseas consultar.
```bash cURL theme={null}
curl "https://api.onepay.la/v1/products?per_page=15&page=1" \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/products?per_page=15&page=1', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data.data); // Array de productos
console.log(data.total); // Total de productos
```
```python Python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/products',
headers={'Authorization': 'Bearer sk_test_xxx'},
params={
'per_page': 15,
'page': 1
}
)
data = response.json()
print(data['data']) # Array de productos
print(data['total']) # Total de productos
```
```php PHP theme={null}
15,
"page" => 1
]);
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$data = json_decode(curl_exec($curl), true);
curl_close($curl);
print_r($data["data"]); // Array de productos
echo $data["total"]; // Total de productos
?>
```
### Response
Colección de productos.
Identificador único (UUID) del producto.
Siempre `product`.
Nombre del producto.
Descripción del producto.
`false` cuando el producto está archivado.
Tu identificador interno del producto.
Etiqueta de la unidad (ej. `asientos`).
Porcentaje de IVA (0-100).
ID del precio por defecto del producto.
Características de marketing (hasta 15), cada una con la forma `{ "name": string }`.
Datos adicionales de tu aplicación.
Fecha de creación (ISO 8601).
Fecha de última actualización (ISO 8601).
Página actual del listado.
Número del primer registro de la página.
Última página disponible.
Cantidad de registros por página.
Número del último registro de la página.
Total de productos disponibles.
```json 200 theme={null}
{
"data": [
{
"id": "9f5d85a0-1111-7000-aaaa-000000000001",
"object": "product",
"name": "OnePay Pro",
"description": "Para negocios en crecimiento.",
"active": true,
"internal_id": "pro",
"unit_label": null,
"tax_rate": 19,
"default_price": "9f5d85a0-2222-7000-aaaa-000000000002",
"marketing_features": [
{ "name": "Clientes ilimitados" },
{ "name": "Reintentos inteligentes" }
],
"metadata": null,
"created_at": "2026-07-13T12:00:00.000000Z",
"updated_at": "2026-07-13T12:00:00.000000Z"
}
],
"current_page": 1,
"from": 1,
"last_page": 1,
"per_page": 15,
"to": 1,
"total": 1
}
```
# Actualizar producto
Source: https://docs.onepay.la/client/products/update
PUT /products/{id}
Actualiza los datos de un producto existente.
Actualiza un producto existente de tu empresa. Acepta los mismos campos que la creación (con `name` obligatorio). Si el producto no pertenece a tu empresa, la petición retorna un 404.
### Headers
Token único para garantizar la idempotencia de la petición
### Path Parameters
ID del producto a actualizar. [Crear producto](/client/products/create).
### Body
Nombre del producto. Máximo 255 caracteres.
Descripción del producto. Máximo 1000 caracteres.
Tu identificador interno del producto. Máximo 255 caracteres.
Etiqueta de la unidad (ej. `asientos`). Máximo 50 caracteres.
Porcentaje de IVA. Valor entre 0 y 100.
Características de marketing (máximo 15). Cada elemento es un objeto `{ "name": string }`, donde `name` admite hasta 80 caracteres.
Datos adicionales de tu aplicación.
```bash cURL theme={null}
curl https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001 \
-X PUT \
-H "Authorization: Bearer sk_test_xxx" \
-H "x-idempotency: idem_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "OnePay Pro",
"description": "Para negocios en crecimiento acelerado.",
"internal_id": "pro",
"tax_rate": 19,
"marketing_features": [
{ "name": "Clientes ilimitados" }
]
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001', {
method: 'PUT',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'x-idempotency': 'idem_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'OnePay Pro',
description: 'Para negocios en crecimiento acelerado.',
internal_id: 'pro',
tax_rate: 19,
marketing_features: [
{ name: 'Clientes ilimitados' }
]
})
});
const data = await response.json();
console.log(data);
```
```python Python theme={null}
import requests
response = requests.put(
'https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001',
headers={
'Authorization': 'Bearer sk_test_xxx',
'x-idempotency': 'idem_xxx'
},
json={
'name': 'OnePay Pro',
'description': 'Para negocios en crecimiento acelerado.',
'internal_id': 'pro',
'tax_rate': 19,
'marketing_features': [
{'name': 'Clientes ilimitados'}
]
}
)
data = response.json()
print(data)
```
```php PHP theme={null}
"https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001",
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"x-idempotency: idem_xxx",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"name" => "OnePay Pro",
"description" => "Para negocios en crecimiento acelerado.",
"internal_id" => "pro",
"tax_rate" => 19,
"marketing_features" => [
["name" => "Clientes ilimitados"]
]
])
]);
$data = json_decode(curl_exec($curl), true);
curl_close($curl);
print_r($data);
?>
```
### Response
Identificador único (UUID) del producto.
Siempre `product`.
Nombre del producto.
Descripción del producto.
`false` cuando el producto está archivado.
Tu identificador interno del producto.
Etiqueta de la unidad (ej. `asientos`).
Porcentaje de IVA (0-100).
ID del precio por defecto del producto.
Características de marketing (hasta 15), cada una con la forma `{ "name": string }`.
Datos adicionales de tu aplicación.
Fecha de creación (ISO 8601).
Fecha de última actualización (ISO 8601).
```json 200 theme={null}
{
"id": "9f5d85a0-1111-7000-aaaa-000000000001",
"object": "product",
"name": "OnePay Pro",
"description": "Para negocios en crecimiento acelerado.",
"active": true,
"internal_id": "pro",
"unit_label": null,
"tax_rate": 19,
"default_price": "9f5d85a0-2222-7000-aaaa-000000000002",
"marketing_features": [
{ "name": "Clientes ilimitados" }
],
"metadata": null,
"created_at": "2026-07-13T12:00:00.000000Z",
"updated_at": "2026-07-13T12:30:00.000000Z"
}
```
```json 422 theme={null}
{
"message": "El campo name es obligatorio.",
"code": 10001,
"code_name": "validation_error",
"errors": {
"name": [
"El campo name es obligatorio."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
```json 404 theme={null}
{
"message": "No encontrado",
"code": 10004,
"code_name": "not_found"
}
```
# Daviplata
Source: https://docs.onepay.la/client/request-to-pay/daviplata
POST /request-to-pay/daviplata
Crea un Request to Pay para Daviplata.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Identificador que asocias a tu proveedor externo.
ID del cliente que recibirá la solicitud. [Crear cliente](/client/customers/create).
Monto a cobrar al usuario, en unidades mayores de la moneda (no en centavos). Enviar `10000`
cobra \$10.000 COP.
Documento del usuario al que se le envia la solicitud.
Tipo de documento del usuario al que se le envia la solicitud.
Campos soportados: `CC`, `CE`, `TI`.
Número de teléfono en formato [E.164](https://www.itu.int/rec/T-REC-E.164/en) a enviar la solicitud.
Título de la solicitud.
```bash cURL theme={null}
curl https://api.onepay.la/v1/request-to-pay/daviplata \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: daviplata-001" \
-d '{
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"amount": 10000,
"document": "12345678",
"document_type": "CC",
"phone": "+573167591030",
"title": "Cobro de servicio",
"external_id": "order-12345"
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/request-to-pay/daviplata', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'daviplata-001'
},
body: JSON.stringify({
customer_id: '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
amount: 10000,
document: '12345678',
document_type: 'CC',
phone: '+573167591030',
title: 'Cobro de servicio',
external_id: 'order-12345'
})
});
const requestToPay = await response.json();
console.log(requestToPay.id);
console.log(requestToPay.status); // pending
```
```python Python theme={null}
import requests
url = "https://api.onepay.la/v1/request-to-pay/daviplata"
headers = {
"Authorization": "Bearer sk_test_xxx",
"Content-Type": "application/json",
"x-idempotency": "daviplata-001"
}
data = {
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"amount": 10000,
"document": "12345678",
"document_type": "CC",
"phone": "+573167591030",
"title": "Cobro de servicio",
"external_id": "order-12345"
}
response = requests.post(url, headers=headers, json=data)
request_to_pay = response.json()
print(request_to_pay["id"])
print(request_to_pay["status"]) # pending
```
```php PHP theme={null}
"https://api.onepay.la/v1/request-to-pay/daviplata",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json",
"x-idempotency: daviplata-001"
],
CURLOPT_POSTFIELDS => json_encode([
"customer_id" => "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"amount" => 10000,
"document" => "12345678",
"document_type" => "CC",
"phone" => "+573167591030",
"title" => "Cobro de servicio",
"external_id" => "order-12345"
])
]);
$response = curl_exec($ch);
$requestToPay = json_decode($response, true);
echo $requestToPay["id"];
echo $requestToPay["status"]; // pending
curl_close($ch);
?>
```
```json 200 theme={null}
{
"id": "4ba8a568-b5c9-4446-a858-b6d00dab341e",
"description": "Charge description",
"amount": 10000,
"amount_label": "Charge amount",
"source": "daviplata",
"status": "pending",
"currency": "COP",
"payment_method_type": "daviplata",
"payment_method_id": "4ba8a568-b5c9-4446-a858-b6d00dab341e",
"created_at": "2022-01-01T00:00:00.000Z",
"paid_at": null,
"remarks": null,
"is_test": false,
"network_id": "4ba8a568-b5c9-4446-a858-b6d00dab341e",
"external_id": "4ba8a568-b5c9-4446-a858-b6d00dab341e"
}
```
# Daviplata Confirm
Source: https://docs.onepay.la/client/request-to-pay/daviplata-confirm
POST /request-to-pay/daviplata/{id}/confirm
Confirma un Request to Pay para Daviplata.
Token único para garantizar la idempotencia de la petición
Intent generado al crear el Request to Pay.
OTP que se envio al usuario.
```json theme={null}
{
"id": "4ba8a568-b5c9-4446-a858-b6d00dab341e",
"description": "Charge description",
"amount": 10000,
"amount_label": "Charge amount",
"source": "daviplata",
"status": "paid",
"currency": "COP",
"payment_method_type": "daviplata",
"payment_method_id": "4ba8a568-b5c9-4446-a858-b6d00dab341e",
"created_at": "2022-01-01T00:00:00.000Z",
"paid_at": null,
"remarks": null,
"is_test": false,
"network_id": "4ba8a568-b5c9-4446-a858-b6d00dab341e",
"external_id": "4ba8a568-b5c9-4446-a858-b6d00dab341e"
}
```
# Introducción
Source: https://docs.onepay.la/client/request-to-pay/index
Genera solicitudes de cobro directas a Nequi y DaviPlata.
## ¿Qué es Request to Pay?
Request to Pay es una solicitud de cobro que se envía directamente a la billetera digital del usuario (Nequi o DaviPlata). El usuario recibe una notificación en su app y solo debe **aceptar o rechazar** el monto.
A diferencia de un [Payment](/client/payments/index) (donde el cliente abre un link y elige cómo pagar), aquí la notificación llega directamente a la app del usuario.
## Ventajas
* El usuario no necesita ingresar montos manualmente
* Se elimina el error humano en transferencias
* La transacción queda registrada de forma inmediata
* Permite cobros automatizados desde WhatsApp o portales de pago
## Flujo DaviPlata
```mermaid theme={null}
sequenceDiagram
participant Tu App
participant OnePay API
participant DaviPlata
participant Usuario
Tu App->>OnePay API: POST /request-to-pay
OnePay API->>DaviPlata: Solicitud de cobro
DaviPlata->>Usuario: Notificación en la app
Usuario->>DaviPlata: Acepta el cobro
DaviPlata->>OnePay API: Confirmación
OnePay API->>Tu App: Webhook (aprobado)
```
1. OnePay genera la solicitud con el monto, referencia y número DaviPlata
2. DaviPlata envía la notificación al usuario
3. El usuario abre la app, ve el detalle y acepta o rechaza
4. Al aceptar, el dinero se transfiere automáticamente
## Flujo Nequi
```mermaid theme={null}
sequenceDiagram
participant Tu App
participant OnePay API
participant Nequi
participant Usuario
Tu App->>OnePay API: POST /request-to-pay
OnePay API->>Nequi: Solicitud de cobro
Nequi->>Usuario: Notificación en la app
Usuario->>Nequi: Acepta el cobro
Nequi->>OnePay API: Confirmación
OnePay API->>Tu App: Webhook (aprobado)
```
1. OnePay envía la solicitud al número asociado a Nequi
2. Nequi notifica al usuario dentro de la app
3. El usuario revisa el monto y acepta
4. Nequi ejecuta el débito y notifica a OnePay
## Ejemplo rápido
```bash theme={null}
curl https://api.onepay.la/v1/request-to-pay \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: rtp-001" \
-d '{
"amount": 50000,
"phone": "+573201112233",
"description": "Pago servicio mensual"
}'
```
## Endpoints
| Método | Endpoint | Descripción |
| ------ | -------------------------- | ------------------------ |
| `POST` | [/request-to-pay](create) | Crear solicitud de pago |
| `GET` | [/request-to-pay](list) | Listar solicitudes |
| `GET` | [/request-to-pay/](detail) | Detalle de una solicitud |
# Nequi
Source: https://docs.onepay.la/client/request-to-pay/nequi
POST /request-to-pay/nequi
Crea un Request to Pay para Nequi.
**Tiempo de confirmación:** Para transacciones con NEQUI, el usuario tiene hasta 45 minutos para confirmar el pago. Es importante que tu aplicación maneje este tiempo de espera o implemente un flujo que permita al usuario completar la confirmación dentro de este período.
Lastimosamente, la API de NEQUI no ofrece la posibilidad de cancelar este proceso.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Identificador que asocias a tu proveedor externo.
ID del cliente sobre el cual se hará la solicitud. [Crear cliente](/client/customers/create).
Monto a cobrar al usuario, en unidades mayores de la moneda (no en centavos). Enviar `10000`
cobra \$10.000 COP.
Número de teléfono en formato [E.164](https://www.itu.int/rec/T-REC-E.164/en) a enviar la solicitud.
Título de la solicitud.
```bash cURL theme={null}
curl https://api.onepay.la/v1/request-to-pay/nequi \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: nequi-001" \
-d '{
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"amount": 10000,
"phone": "+573167591030",
"title": "Cobro de servicio",
"external_id": "order-12345"
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/request-to-pay/nequi', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'nequi-001'
},
body: JSON.stringify({
customer_id: '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
amount: 10000,
phone: '+573167591030',
title: 'Cobro de servicio',
external_id: 'order-12345'
})
});
const requestToPay = await response.json();
console.log(requestToPay.id);
console.log(requestToPay.status); // pending - usuario tiene 45 min para confirmar
```
```python Python theme={null}
import requests
url = "https://api.onepay.la/v1/request-to-pay/nequi"
headers = {
"Authorization": "Bearer sk_test_xxx",
"Content-Type": "application/json",
"x-idempotency": "nequi-001"
}
data = {
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"amount": 10000,
"phone": "+573167591030",
"title": "Cobro de servicio",
"external_id": "order-12345"
}
response = requests.post(url, headers=headers, json=data)
request_to_pay = response.json()
print(request_to_pay["id"])
print(request_to_pay["status"]) # pending - usuario tiene 45 min para confirmar
```
```php PHP theme={null}
"https://api.onepay.la/v1/request-to-pay/nequi",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json",
"x-idempotency: nequi-001"
],
CURLOPT_POSTFIELDS => json_encode([
"customer_id" => "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"amount" => 10000,
"phone" => "+573167591030",
"title" => "Cobro de servicio",
"external_id" => "order-12345"
])
]);
$response = curl_exec($ch);
$requestToPay = json_decode($response, true);
echo $requestToPay["id"];
echo $requestToPay["status"]; // pending - usuario tiene 45 min para confirmar
curl_close($ch);
?>
```
```json 200 theme={null}
{
"id": "4ba8a568-b5c9-4446-a858-b6d00dab341e",
"description": "Charge description",
"amount": 10000,
"amount_label": "Charge amount",
"source": "nequi",
"status": "pending",
"currency": "COP",
"payment_method_type": "nequi",
"payment_method_id": "4ba8a568-b5c9-4446-a858-b6d00dab341e",
"created_at": "2022-01-01T00:00:00.000Z",
"paid_at": null,
"remarks": null,
"is_test": false,
"network_id": "4ba8a568-b5c9-4446-a858-b6d00dab341e",
"external_id": "4ba8a568-b5c9-4446-a858-b6d00dab341e"
}
```
# Nequi Confirm
Source: https://docs.onepay.la/client/request-to-pay/nequi-confirm
POST /request-to-pay/nequi/{id}/confirm
Confirma un Request to Pay para Nequi.
### Headers
Token único para garantizar la idempotencia de la petición
Intent generado al crear el Request to Pay.
```json theme={null}
{
"id": "4ba8a568-b5c9-4446-a858-b6d00dab341e",
"description": "Charge description",
"amount": 10000,
"amount_label": "Charge amount",
"source": "nequi",
"status": "pending",
"currency": "COP",
"payment_method_type": "nequi",
"payment_method_id": "4ba8a568-b5c9-4446-a858-b6d00dab341e",
"created_at": "2022-01-01T00:00:00.000Z",
"paid_at": null,
"remarks": null,
"is_test": false,
"network_id": "4ba8a568-b5c9-4446-a858-b6d00dab341e",
"external_id": "4ba8a568-b5c9-4446-a858-b6d00dab341e"
}
```
# Crear suscripción
Source: https://docs.onepay.la/client/subscriptions/create
POST /subscriptions
Crea una suscripción recurrente asociada a un cliente.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
**Esta página describe un cuerpo que el endpoint ya no acepta.** Hoy `POST /subscriptions` crea la
suscripción a partir de un plan existente y exige `plan_id` (o `price_id`), `customer_id`,
`payment_method_type` y `payment_method_id`. Los campos de importe y periodicidad —
`amount_in_cents`, `reference_price_in_cents`, `cicle_frequency`, `cicles`, `currency`, `name` —
se definen ahora al [crear el plan](/client/plans/create), no aquí; enviarlos a este endpoint
devuelve un 422 pidiendo `plan_id`.
Estamos reescribiendo esta página. Mientras tanto, toma como referencia
[crear planes](/client/plans/create) y confirma el cuerpo con soporte antes de integrar.
ID del cliente que asumirá los cobros. [Crea primero el cliente](/client/customers/create).
Nombre público de la suscripción.
Descripción rica que se mostrará en correos y facturas.
Moneda en formato ISO-4217. Actualmente soportamos `COP`.
Valor a cobrar en cada ciclo expresado en centavos.
Precio de referencia que se mostrará en UI. Puede diferir del `amount_in_cents` cuando usas pagos complejos.
Frecuencia: `daily`, `weekly`, `monthly`, `annual`.
Número máximo de ciclos. Usa `null` para renovaciones indefinidas.
Fecha en la que deseas iniciar los cobros. Si se omite se usa la fecha actual.
Identificador que usas en tus sistemas.
ID del plan preconfigurado que deseas usar. [Ver cómo crear planes](/client/plans/create).
Define si se cobrará automáticamente (`auto_debit`) o vía solicitudes (`request`).
Si es `true`, el checkout sugerirá activar débito automático.
Días de anticipación para recordatorios de pago.
Número de ciclos consecutivos fallidos antes de cancelar la suscripción.
Pares clave/valor para enriquecer la suscripción.
Configuración del periodo de prueba.
Activa o desactiva el trial.
Número de días del periodo de prueba.
Fecha desde la que se debe contar el trial.
Pagos con valores especiales por ciclo (ej. matrículas o cargos iniciales).
Valor que se cobrará en el ciclo indicado.
Ciclo en el que aplica este pago.
Cantidad de ciclos que usarán este monto.
Texto descriptivo.
Precio base esperado para el ciclo posterior.
**Métodos de pago permitidos**
El método de pago disponible depende de la configuración de tu cuenta. Comunícate con el equipo de soporte para habilitar métodos adicionales.
| Método | Campo requerido | Descripción |
| ------------------------- | --------------- | ----------------------------------------------- |
| Cuenta bancaria (ACH) | `account_id` | Débito directo desde cuenta bancaria registrada |
| Tarjeta de crédito/débito | `card_id` | Cargo a tarjeta tokenizada |
Solo uno de los dos (`account_id` o `card_id`) debe estar presente en la petición.
```bash cURL theme={null}
curl https://api.onepay.la/v1/subscriptions \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: subscription-001" \
-d '{
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"name": "Plan Premium Mensual",
"description": "Acceso completo a todas las funcionalidades
",
"currency": "COP",
"amount_in_cents": 44900000,
"reference_price_in_cents": "44900000",
"cicle_frequency": "monthly",
"cicles": null,
"start_date": "2025-03-01T00:00:00Z",
"payment_mode": "request",
"suggest_auto_debit": true,
"remember_to_pay_before": 3,
"cancel_after_no_payment_before": 2,
"trial": {
"has_trial": true,
"trial_days": 14,
"start_trial_date": "2025-02-15T00:00:00Z"
},
"metadata": {
"salesforce_id": "OP-554",
"plan_type": "premium"
}
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/subscriptions', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'subscription-001'
},
body: JSON.stringify({
customer_id: '9dd4158b-0e45-42bc-b56f-a4c1f856814d',
name: 'Plan Premium Mensual',
description: 'Acceso completo a todas las funcionalidades
',
currency: 'COP',
amount_in_cents: 44900000,
reference_price_in_cents: '44900000',
cicle_frequency: 'monthly',
cicles: null,
start_date: '2025-03-01T00:00:00Z',
payment_mode: 'request',
suggest_auto_debit: true,
remember_to_pay_before: 3,
cancel_after_no_payment_before: 2,
trial: {
has_trial: true,
trial_days: 14,
start_trial_date: '2025-02-15T00:00:00Z'
},
metadata: {
salesforce_id: 'OP-554',
plan_type: 'premium'
}
})
});
const subscription = await response.json();
console.log(subscription.id);
```
```python Python theme={null}
import requests
from datetime import datetime
url = "https://api.onepay.la/v1/subscriptions"
headers = {
"Authorization": "Bearer sk_test_xxx",
"Content-Type": "application/json",
"x-idempotency": "subscription-001"
}
data = {
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"name": "Plan Premium Mensual",
"description": "Acceso completo a todas las funcionalidades
",
"currency": "COP",
"amount_in_cents": 44900000,
"reference_price_in_cents": "44900000",
"cicle_frequency": "monthly",
"cicles": None,
"start_date": "2025-03-01T00:00:00Z",
"payment_mode": "request",
"suggest_auto_debit": True,
"remember_to_pay_before": 3,
"cancel_after_no_payment_before": 2,
"trial": {
"has_trial": True,
"trial_days": 14,
"start_trial_date": "2025-02-15T00:00:00Z"
},
"metadata": {
"salesforce_id": "OP-554",
"plan_type": "premium"
}
}
response = requests.post(url, headers=headers, json=data)
subscription = response.json()
print(subscription["id"])
```
```php PHP theme={null}
"https://api.onepay.la/v1/subscriptions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json",
"x-idempotency: subscription-001"
],
CURLOPT_POSTFIELDS => json_encode([
"customer_id" => "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"name" => "Plan Premium Mensual",
"description" => "Acceso completo a todas las funcionalidades
",
"currency" => "COP",
"amount_in_cents" => 44900000,
"reference_price_in_cents" => "44900000",
"cicle_frequency" => "monthly",
"cicles" => null,
"start_date" => "2025-03-01T00:00:00Z",
"payment_mode" => "request",
"suggest_auto_debit" => true,
"remember_to_pay_before" => 3,
"cancel_after_no_payment_before" => 2,
"trial" => [
"has_trial" => true,
"trial_days" => 14,
"start_trial_date" => "2025-02-15T00:00:00Z"
],
"metadata" => [
"salesforce_id" => "OP-554",
"plan_type" => "premium"
]
])
]);
$response = curl_exec($ch);
$subscription = json_decode($response, true);
echo $subscription["id"];
curl_close($ch);
?>
```
### Response
Identificador único de la suscripción (UUID).
Nombre comercial de la suscripción.
Estado actual (`active`, `unpaid`, `pass_due`, `canceled`, `finished`, `frozen`).
Descripción enriquecida (puede contener HTML).
Identificador interno que usas en tu sistema.
ID del plan asociado, si aplica.
ID del cupón aplicado.
Precio de referencia en centavos como string.
Moneda en formato ISO-4217 (ej. `COP`).
Valor base cobrado en cada ciclo.
Frecuencia de cobro: `weekly`, `monthly`, `annual`, etc.
Cantidad máxima de ciclos; `null` para indefinido.
Ciclo actual procesado.
Configuración de métodos de pago permitidos para la suscripción.
Indica si se sugiere activar débito automático durante el onboarding del cliente.
Fecha programada de inicio.
Fecha de finalización si aplica.
Información de periodo de prueba (`has_trial`, `trial_days`, `start_trial_date`).
Modo de cobro (`request`, `auto_debit`, etc.).
Días de anticipación para recordatorios de pago.
Número de ciclos fallidos antes de cancelar automáticamente.
Pagos con valores diferenciados por ciclo.
Atributos personalizados que acompañan la suscripción.
Resumen del cliente asociado.
Información del plan enlazado, cuando existe.
Fecha de creación de la suscripción.
Fecha de última actualización.
```json 201 theme={null}
{
"id": "9f01f541-7d9c-4f62-88c1-0b0f2c2d4c31",
"name": "OnePay Pro",
"status": "created",
"description": "Plan mensual con onboarding asistido
",
"internal_id": "SaaSSpectre",
"plan_id": null,
"coupon_id": null,
"reference_price_in_cents": "44900000",
"currency": "COP",
"amount_in_cents": 44900000,
"cicle_frequency": "monthly",
"cicles": null,
"current_cicle": 0,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"suggest_auto_debit": true,
"start_date": "2025-01-05T00:00:00.000000Z",
"end_date": null,
"payment_mode": "request",
"trial": {
"has_trial": false,
"start_trial_date": null,
"trial_days": 0
},
"remember_to_pay_before": 3,
"cancel_after_no_payment_before": 2,
"complex_payments": [],
"features": [],
"metadata": {
"salesforce_id": "OP-554"
},
"created_at": "2025-01-02T19:24:48.000000Z",
"updated_at": "2025-01-02T19:24:48.000000Z",
"customer": {
"id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"first_name": "Empresa",
"last_name": "SAS",
"email": "empresa@empresa.com",
"phone": "+573221234567",
"document": "1234567890",
"document_type": "RUT"
}
}
```
```json 422 theme={null}
{
"message": "Hay errores de validación. (y 2 errores más)",
"code": 10001,
"code_name": "validation_error",
"errors": {
"customer_id": [
"El campo customer id es obligatorio."
],
"amount_in_cents": [
"El campo amount in cents es obligatorio."
],
"cicle_frequency": [
"Debes especificar una frecuencia válida."
]
}
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Eliminar suscripción
Source: https://docs.onepay.la/client/subscriptions/delete
DELETE /subscriptions/{subscription_id}
Elimina una suscripción específica de tu cuenta.
### Parámetros de Ruta
ID único de la suscripción que deseas eliminar
### Response
La petición retorna `204 No Content` si la suscripción se cancela correctamente.
```json 204 theme={null}
no content
```
```json 422 theme={null}
{
"message": "Registro no encontrado, Suscripción no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Introducción
Source: https://docs.onepay.la/client/subscriptions/index
Gestiona las suscripciones de tus clientes.
## ¿Qué es una Suscripción?
Una suscripción automatiza cobros recurrentes a un cliente. Se crea asociando un [cliente](/client/customers/index) a un [plan](/client/plans/index) con un método de pago autorizado (tarjeta o cuenta bancaria).
Antes de crear una suscripción, necesitas:
1. Un [cliente](/client/customers/index) registrado
2. Un [plan](/client/plans/index) configurado con monto y frecuencia
3. Una [tarjeta](/client/cards/index) o [cuenta bancaria](/client/accounts/index) autorizada
## Ejemplo Rápido
### Paso 1: Crear un plan
```bash theme={null}
curl https://api.onepay.la/v1/plans \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Plan Premium Mensual",
"amount": 50000,
"currency": "COP",
"cycle_frequency": 1,
"cycle_type": "monthly"
}'
```
**Respuesta:**
```json theme={null}
{
"id": "9e5a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
"name": "Plan Premium Mensual",
"amount": 50000,
"currency": "COP",
"cycle_frequency": 1,
"cycle_type": "monthly"
}
```
### Paso 2: Crear una suscripción
```bash theme={null}
curl https://api.onepay.la/v1/subscriptions \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: subscription-001" \
-d '{
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"plan_id": "9e5a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
"card_id": "9e01eeae-2868-4564-9d04-84d1d1d027d2"
}'
```
**Respuesta:**
```json theme={null}
{
"id": "9e5a2b3c-1234-5678-9abc-def012345678",
"status": "ACTIVE",
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"plan_id": "9e5a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
"card_id": "9e01eeae-2868-4564-9d04-84d1d1d027d2",
"next_billing_date": "2025-03-08T00:00:00.000000Z",
"created_at": "2025-02-08T15:45:00.000000Z"
}
```
OnePay cobrará automáticamente \$50.000 cada mes al método de pago autorizado.
## ¿Cuándo usar Suscripciones?
| Escenario | Solución |
| ----------------------------------- | ------------------------------------------------------------------------- |
| Cobro único o esporádico | Usa [Payments](/client/payments/index) o [Charges](/client/charges/index) |
| Cobro recurrente con monto fijo | Crea un plan + suscripción |
| Membresías mensuales/anuales | Crea un plan + suscripción |
| Cobro recurrente con monto variable | Usa [Charges](/client/charges/index) con tu propia lógica de recurrencia |
## Relación Plan - Suscripción
Un **plan** es la plantilla (monto, frecuencia) y una **suscripción** es la instancia asociada a un cliente específico.
```
Plan "Premium $50.000/mes"
├── Suscripción de Cliente A (activa)
├── Suscripción de Cliente B (activa)
└── Suscripción de Cliente C (cancelada)
```
## Estados de una suscripción
```mermaid theme={null}
stateDiagram-v2
[*] --> CREATED
CREATED --> ACTIVE: Pago aprobado
ACTIVE --> UNPAID: Pago fallido
UNPAID --> PASS_DUE: Intentos fallidos agotados
PASS_DUE --> CANCELED: Cancelación
ACTIVE --> CANCELED: Cancelada por la empresa
ACTIVE --> FROZEN: Congelada a petición del cliente
FROZEN --> ACTIVE: Reactivada
ACTIVE --> FINISHED: Finaliza por vigencia del contrato
CANCELED --> [*]
FINISHED --> [*]
```
| Estado | Descripción |
| ---------- | ------------------------------------------------------- |
| `CREATED` | Suscripción creada, pendiente del primer pago |
| `ACTIVE` | Pagos al día, cobros automáticos activos |
| `UNPAID` | Último pago fallido, se reintentará según configuración |
| `PASS_DUE` | Todos los reintentos fallaron |
| `FROZEN` | Pausada temporalmente a petición del cliente |
| `CANCELED` | Cancelada definitivamente |
| `FINISHED` | Completó su vigencia |
## Endpoints
| Método | Endpoint | Descripción |
| -------- | ------------------------- | -------------------------- |
| `POST` | [/subscriptions](create) | Crear suscripción |
| `GET` | [/subscriptions](list) | Listar suscripciones |
| `GET` | [/subscriptions/](detail) | Detalle de una suscripción |
| `DELETE` | [/subscriptions/](delete) | Cancelar suscripción |
# Listado de suscripciones
Source: https://docs.onepay.la/client/subscriptions/list
GET /subscriptions
Obtiene las suscripciones creadas en tu cuenta con filtros y paginación.
### Parámetros de consulta
Página que deseas consultar.
Cantidad de registros por página (máx. 100).
Filtra por estados (`created`, `active`, `unpaid`, `pass_due`, `frozen`, `canceled`, `finished`).
Filtra por el ID de un cliente existente. [Crear cliente](/client/customers/create).
Filtra por el ID de un plan existente. [Crear plan](/client/plans/create).
```bash cURL theme={null}
curl https://api.onepay.la/v1/subscriptions?page=1&per_page=20&status=active \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/subscriptions?page=1&per_page=20&status=active', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const data = await response.json();
console.log(data.data); // Array de suscripciones
console.log(data.current_page); // Página actual
```
```python Python theme={null}
import requests
url = "https://api.onepay.la/v1/subscriptions"
headers = {
"Authorization": "Bearer sk_test_xxx"
}
params = {
"page": 1,
"per_page": 20,
"status": "active"
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(data["data"]) # Array de suscripciones
print(data["current_page"]) # Página actual
```
```php PHP theme={null}
1,
"per_page" => 20,
"status" => "active"
]);
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data["data"]); // Array de suscripciones
echo $data["current_page"]; // Página actual
curl_close($ch);
?>
```
### Response
Colección de suscripciones.
Identificador único de la suscripción (UUID).
Nombre comercial de la suscripción.
Estado actual (`active`, `unpaid`, `pass_due`, `canceled`, `finished`, `frozen`).
Descripción enriquecida (puede contener HTML).
Identificador interno que usas en tu sistema.
ID del plan asociado, si aplica.
ID del cupón aplicado.
Precio de referencia en centavos como string.
Moneda en formato ISO-4217 (ej. `COP`).
Valor base cobrado en cada ciclo.
Frecuencia de cobro: `weekly`, `monthly`, `annual`, etc.
Cantidad máxima de ciclos; `null` para indefinido.
Ciclo actual procesado.
Configuración de métodos de pago permitidos para la suscripción.
Indica si se sugiere activar débito automático durante el onboarding del cliente.
Fecha programada de inicio.
Fecha de finalización si aplica.
Información de periodo de prueba (`has_trial`, `trial_days`, `start_trial_date`).
Modo de cobro (`request`, `auto_debit`, etc.).
Días de anticipación para recordatorios de pago.
Número de ciclos fallidos antes de cancelar automáticamente.
Pagos con valores diferenciados por ciclo.
Atributos personalizados que acompañan la suscripción.
Resumen del cliente asociado.
Información del plan enlazado, cuando existe.
Fecha de creación de la suscripción.
Fecha de última actualización.
Número de la página actual
URL para acceder a la primera página de resultados
Índice inicial del primer elemento en la página actual
URL para acceder a la siguiente página de resultados. Será `null` si es la última página
URL base de la API sin los parámetros de paginación
Cantidad de elementos por página
URL para acceder a la página anterior. Será `null` si es la primera página
Índice final del último elemento en la página actual
```json 200 theme={null}
{
"data": [
{
"id": "9ddfcfc1-7b5e-490c-9731-4aabd986908e",
"name": "SpectreSaaS",
"status": "active",
"description": "1 Free
2 COP 449.000
",
"internal_id": "SaaSSpectre",
"plan_id": null,
"coupon_id": null,
"reference_price_in_cents": "44900000",
"currency": "COP",
"amount_in_cents": 44900000,
"cicle_frequency": "monthly",
"cicles": null,
"current_cicle": 2,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"start_date": "2025-01-05T00:00:00.000000Z",
"end_date": null,
"trial": {
"has_trial": false,
"start_trial_date": null,
"trial_days": 0
},
"complex_payments": [
{
"amount_in_cents": 134700000,
"apply_on_cicle": 1,
"for_cicles": 1,
"label": "Noviembre - Diciembre - Enero",
"target_price": "44900000"
}
],
"features": [],
"metadata": null,
"created_at": "2025-01-02T19:24:48.000000Z",
"updated_at": "2025-02-05T16:01:24.000000Z",
"customer": {
"id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"first_name": "Empresa",
"last_name": "SAS",
"email": "empresa@empresa.com",
"phone": "+573221234567",
"document": "1234567890",
"document_type": "RUT"
}
}
],
"current_page": 1,
"first_page_url": "https://api.onepay.la/v1/subscriptions?page=1",
"from": 1,
"next_page_url": null,
"path": "https://api.onepay.la/v1/subscriptions",
"per_page": 20,
"prev_page_url": null,
"to": 1
}
```
# Plantillas de WhatsApp
Source: https://docs.onepay.la/client/templates/index
Las plantillas definen el mensaje con el que tu cobro llega al cliente por WhatsApp.
Cuando creas un cobro con teléfono, OnePay lo envía por WhatsApp usando una **plantilla** aprobada previamente por Meta. Por defecto elegimos la plantilla adecuada según la configuración de tu canal, pero puedes fijar una explícitamente con el campo `template_id` al crear el cobro.
## Estados
Meta debe aprobar cada plantilla antes de que pueda enviarse.
| Estado | Descripción |
| ---------- | --------------------------------------------------------- |
| `DRAFT` | Creada en OnePay, todavía no enviada a Meta. |
| `PENDING` | Enviada a Meta, esperando revisión. |
| `APPROVED` | Aprobada y lista para usarse. |
| `REJECTED` | Rechazada por Meta. Revisa el motivo y vuelve a enviarla. |
## Categorías
El campo `type` indica para qué sirve la plantilla.
| Categoría | Descripción |
| ------------------ | ----------------------------------------------------------------------- |
| `PAYMENT` | Solicita un pago. Son las únicas que puedes fijar en un cobro. |
| `PAYMENT_APPROVED` | Confirma un pago ya realizado. |
| `UTILITY` | Notificaciones operativas (cuenta conectada, tarjeta verificada, etc.). |
| `MARKETING` | Mensajes promocionales. |
| `AUTHENTICATION` | Códigos de verificación. |
## El campo `selectable`
Cada plantilla del listado trae un booleano `selectable`. Solo los `id` con `selectable: true` son válidos en el `template_id` de un cobro. Una plantilla es seleccionable cuando cumple **todo** lo siguiente:
* Pertenece a tu empresa, o es una de las plantillas genéricas compartidas contigo.
* Su estado es `APPROVED`.
* Su categoría es `PAYMENT`.
* Está registrada en un proveedor de WhatsApp donde tienes canal.
Si una plantilla tuya aparece con `selectable: false`, el resto de sus campos te dicen por qué: normalmente su `status` todavía no es `APPROVED`, su `type` no es `PAYMENT`, o su `provider` no corresponde a ninguno de tus canales.
Las variantes que OnePay genera automáticamente (Bre-B y sin documento) no aparecen en el listado. Se aplican solas sobre la plantilla que elijas cuando el cobro lo requiere.
## Etapas de cobranza
Las plantillas con `stage` pertenecen al motor de cobranzas y su texto está escrito para ese momento del ciclo: `reminder`, `due_soon`, `due_today`, `overdue`, `pre_cut`, `cut`, `winback` y `custom`. Las plantillas de cobro directo tienen `stage: null`.
Consulta las plantillas disponibles para tu empresa y cuáles puedes fijar en un cobro.
# Listar plantillas
Source: https://docs.onepay.la/client/templates/list
GET /templates
Endpoint para obtener las plantillas de WhatsApp disponibles para tu empresa.
Devuelve las plantillas visibles para tu empresa, incluidas las genéricas compartidas. Usa el campo `selectable` para saber cuáles puedes fijar en el `template_id` de un cobro.
### Query Parameters
`1` devuelve únicamente las plantillas que puedes usar como `template_id` al crear un cobro; `0` devuelve las que no.
Filtra por estado. Valores válidos:
* `DRAFT` - Creada, sin enviar a Meta
* `PENDING` - En revisión por Meta
* `APPROVED` - Aprobada
* `REJECTED` - Rechazada por Meta
Filtra por etapa de cobranza. Valores válidos:
* `reminder` - Recordatorio
* `due_soon` - Próximo a vencer
* `due_today` - Vence hoy
* `overdue` - Vencido
* `pre_cut` - Antes del corte
* `cut` - Corte
* `winback` - Recuperación
* `custom` - Personalizada
Filtra por proveedor de WhatsApp, por ejemplo `META`, `DIALOG_360` o `INFOBIP`.
`1` para las plantillas predefinidas de OnePay, `0` para las que creaste tú.
Ordenamiento. Valores permitidos: `name`, `created_at` y `updated_at`. Antepón `-` para orden descendente.
Cantidad de resultados por página. Mínimo 1, máximo 100.
Número de página para paginación.
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/templates \
-X GET \
-H "Authorization: Bearer sk_test_xxx"
```
Solo las que puedes fijar en un cobro:
```bash theme={null}
curl "https://api.onepay.la/v1/templates?filter[selectable]=1" \
-X GET \
-H "Authorization: Bearer sk_test_xxx"
```
```ts theme={null}
const response = await fetch('https://api.onepay.la/v1/templates?filter[selectable]=1', {
method: 'GET',
headers: {
'Authorization': 'Bearer sk_test_xxx',
},
});
const data = await response.json();
```
```python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/templates',
params={'filter[selectable]': 1},
headers={'Authorization': 'Bearer sk_test_xxx'},
)
data = response.json()
```
```php theme={null}
"https://api.onepay.la/v1/templates?filter[selectable]=1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer sk_test_xxx"]
]);
$data = json_decode(curl_exec($curl), true);
?>
```
### Response
Lista de plantillas.
Identificador de la plantilla. Es el valor que envías en `template_id` al crear un cobro.
Nombre legible de la plantilla.
Nombre técnico registrado ante el proveedor, en snake\_case.
Estado de aprobación: `DRAFT`, `PENDING`, `APPROVED` o `REJECTED`.
Categoría: `PAYMENT`, `PAYMENT_APPROVED`, `UTILITY`, `MARKETING` o `AUTHENTICATION`.
Etapa de cobranza, o `null` en las plantillas de cobro directo.
Idioma de la plantilla, por ejemplo `es`.
Proveedor de WhatsApp donde está registrada.
`true` si es una plantilla predefinida de OnePay.
`true` si puedes usar este `id` como `template_id` al crear un cobro.
Tipo de encabezado: `DOCUMENT`, `IMAGE`, `TEXT` o `None`.
Texto del mensaje. Los `{{1}}`, `{{2}}`... se reemplazan con los datos del cobro.
Texto del pie del mensaje.
Variables que reemplazan los marcadores del cuerpo, en orden.
Botones del mensaje, cada uno con `type` y `text`.
Fecha de creación en formato ISO 8601.
Fecha de última actualización en formato ISO 8601.
Página actual.
Índice del primer registro en la página actual.
Última página disponible.
Cantidad de registros por página.
Índice del último registro en la página actual.
Total de plantillas.
### Ejemplo de respuesta
```json 200 theme={null}
{
"data": [
{
"id": 1421,
"name": "Payment Customer File Flow Pro V5",
"key": "payment_customer_file_flow_pro_v5",
"status": "APPROVED",
"type": "PAYMENT",
"stage": null,
"language": "es",
"provider": "META",
"is_predefined": true,
"selectable": true,
"header_type": "DOCUMENT",
"body": "¡Hola {{1}}! 👋🏻 *{{2}}* ha solicitado {{3}} para el pago de tu *{{4}}*.\n\nRealiza tu pago de forma fácil y segura.",
"footer": "Pagos seguros con OnePay",
"variables": ["customer_name", "company_name", "amount_label", "minified_title"],
"buttons": [
{ "type": "REPLY", "text": "Pagar con Bre-B" },
{ "type": "FLOW", "text": "Iniciar pago" },
{ "type": "URL", "text": "Pagar en la web" }
],
"created_at": "2026-03-11T14:02:51+00:00",
"updated_at": "2026-07-02T09:18:04+00:00"
},
{
"id": 1508,
"name": "Onepay Payment Overdue Es V2",
"key": "onepay_payment_overdue_es_v2",
"status": "PENDING",
"type": "PAYMENT",
"stage": "overdue",
"language": "es",
"provider": "META",
"is_predefined": true,
"selectable": false,
"header_type": "None",
"body": "Hola {{1}}, tu pago con {{2}} está vencido.\n\n📋 Concepto: {{3}}\n💰 Monto: {{4}}",
"footer": "Pagos seguros con OnePay",
"variables": ["customer_name", "company_name", "title", "amount"],
"buttons": [
{ "type": "REPLY", "text": "Pagar con Bre-B" },
{ "type": "FLOW", "text": "Iniciar pago" },
{ "type": "URL", "text": "Pagar en la web" }
],
"created_at": "2026-05-20T11:41:09+00:00",
"updated_at": "2026-06-28T16:30:22+00:00"
}
],
"current_page": 1,
"from": 1,
"last_page": 2,
"per_page": 20,
"to": 20,
"total": 27
}
```
# Casos de uso de débitos automáticos
Source: https://docs.onepay.la/client/use-cases/charges
Debita tarjetas, cuentas bancarias o billeteras digitales. Cada método tiene su propio flujo de captura y tiempos de procesamiento.
## Un endpoint, múltiples métodos de pago
Todos los débitos automáticos se ejecutan con `POST /charges`. Lo que cambia es **cómo capturas y autorizas** el método de pago antes de cobrar.
| Método | Captura | Procesamiento | Interacción del cliente |
| ----------------------------- | ---------------------------------------- | ------------------- | ----------------------------------------- |
| **Tarjeta de crédito/débito** | SDK Elements (recomendado) o API directa | Inmediato | Solo al registrar la tarjeta |
| **Cuenta bancaria (ACH)** | API con número de cuenta | Siguiente día hábil | Solo al autorizar la cuenta |
| **Nequi** | API + autorización en app | Inmediato | Autoriza en la app Nequi cada vinculación |
| **Daviplata** | API + código OTP por SMS | Inmediato | Ingresa OTP recibido por SMS |
Todos los métodos requieren `authorization: true` al momento de registrar el medio de pago. Sin esto, no podrás crear cargos.
***
## Débito con tarjeta de crédito/débito
Hay dos formas de capturar los datos de la tarjeta:
### Opción A: SDK Elements (recomendado)
El [SDK Elements](/docs/elements/introduction) captura los datos sensibles en un iframe seguro y te devuelve un `card_token`. Tu servidor nunca toca los datos de la tarjeta, lo que simplifica el cumplimiento PCI DSS.
```mermaid theme={null}
sequenceDiagram
participant Cliente
participant Tu Frontend
participant SDK Elements
participant Tu Backend
participant OnePay API
Cliente->>Tu Frontend: Ingresa datos de tarjeta
Tu Frontend->>SDK Elements: Captura en iframe seguro
SDK Elements-->>Tu Frontend: card_token
Tu Frontend->>Tu Backend: Envía card_token
Tu Backend->>OnePay API: POST /cards/tokenized (card_token)
OnePay API-->>Tu Backend: card_id
Tu Backend->>OnePay API: POST /charges (card_id)
OnePay API-->>Tu Backend: charge (succeeded/declined)
```
**Paso 1: Tokenizar en el frontend**
Integra el SDK Elements en tu página de captura. Consulta la [guía de integración](/docs/elements/introduction) para el setup completo.
**Paso 2: Registrar la tarjeta tokenizada**
```bash theme={null}
curl https://api.onepay.la/v1/cards/tokenized \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: card-token-001" \
-d '{
"card_token": "TOKEN_DEL_SDK",
"customer_id": "CUSTOMER_ID",
"authorization": true
}'
```
**Paso 3: Crear el cargo**
```bash theme={null}
curl https://api.onepay.la/v1/charges \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cargo-tarjeta-001" \
-d '{
"title": "Mensualidad Enero",
"customer_id": "CUSTOMER_ID",
"amount": 85000,
"card_id": "CARD_ID"
}'
```
### Opción B: API directa (requiere PCI DSS)
Si tu empresa cumple con PCI DSS, puedes enviar los datos de tarjeta directamente a la API.
Este endpoint usa un dominio diferente: `https://cards.onepay.la/v1/cards`. Esto se implementa mediante un proxy para garantizar el cumplimiento PCI DSS.
```bash theme={null}
curl https://cards.onepay.la/v1/cards \
-X POST \
-H "Authorization: Bearer pk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: card-directa-001" \
-d '{
"card_number": "4111111111111111",
"expiration_year": "29",
"expiration_month": "12",
"ccv": "123",
"holder_name": "MARIA LOPEZ",
"customer_id": "CUSTOMER_ID",
"authorization": true
}'
```
Luego crea el cargo con `POST /charges` igual que en la Opción A.
### Respuesta de la tarjeta
```json theme={null}
{
"id": "9e01eeae-2868-4564-9d04-84d1d1d027d2",
"brand": "Mastercard",
"last_four": "8099",
"card_name": "MARIA LOPEZ",
"type": "credit_card",
"cvc_check": true,
"verified": true,
"action": {
"action": "NULL",
"next": null
}
}
```
Si `action.action` no es `"NULL"`, la tarjeta requiere autenticación 3D Secure. Redirige al cliente a la URL en `action.next` para completar la verificación.
***
## Débito con cuenta bancaria (ACH)
Los débitos a cuentas bancarias se procesan mediante ACH (Cámara de Compensación Automatizada). El procesamiento **no es inmediato**: los fondos se acreditan el **siguiente día hábil**.
### Tiempos de procesamiento
| Tipo de cuenta | Procesamiento | Horario de corte |
| ------------------------- | ------------------- | -------------------- |
| Ahorros / Corriente (ACH) | Siguiente día hábil | Antes de las 4:00 PM |
| Nequi | Inmediato | 24/7 |
| Daviplata | Inmediato | 24/7 |
Los cargos ACH enviados después del horario de corte se procesan al **segundo día hábil siguiente**. Los fines de semana y festivos no cuentan como días hábiles.
### Flujo completo
```mermaid theme={null}
sequenceDiagram
participant Tu App
participant OnePay API
participant ACH
participant Banco
Tu App->>OnePay API: POST /accounts (authorization: true)
OnePay API-->>Tu App: account_id (status: PENDING)
Note over OnePay API,Banco: El banco valida la cuenta
OnePay API-->>Tu App: Webhook account.active
Tu App->>OnePay API: POST /charges (account_id)
OnePay API->>ACH: Envía instrucción de débito
Note over ACH,Banco: Procesamiento siguiente día hábil
ACH->>Banco: Débito
Banco-->>OnePay API: Confirmación
OnePay API->>Tu App: Webhook charge.paid
```
**Paso 1: Consultar bancos disponibles**
```bash theme={null}
curl https://api.onepay.la/v1/accounts/banks \
-H "Authorization: Bearer sk_test_xxx"
```
**Paso 2: Registrar la cuenta bancaria**
```bash theme={null}
curl https://api.onepay.la/v1/accounts \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cuenta-ach-001" \
-d '{
"customer_id": "CUSTOMER_ID",
"bank_id": "BANK_ID",
"subtype": "SAVINGS",
"account_number": "123456789",
"authorization": true
}'
```
Tipos de cuenta (`subtype`):
| Valor | Descripción |
| -------------------- | --------------------------------------- |
| `SAVINGS` | Cuenta de ahorros |
| `CHECKING` | Cuenta corriente |
| `ELECTRONIC_DEPOSIT` | Depósito electrónico (Nequi, Daviplata) |
**Paso 3: Crear el cargo**
```bash theme={null}
curl https://api.onepay.la/v1/charges \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cargo-ach-001" \
-d '{
"title": "Cuota mensual",
"customer_id": "CUSTOMER_ID",
"amount": 200000,
"account_id": "ACCOUNT_ID"
}'
```
**Paso 4: Esperar confirmación**
El cargo queda en estado `pending` hasta que ACH procese el débito. Recibirás un [webhook](/client/webhooks/charges) con el resultado:
```json theme={null}
{
"charge": {
"id": "9e02966f-2ddf-4ee7-a391-5b5b7653e232",
"status": "succeeded",
"amount": 200000
},
"event": {
"type": "charge.paid",
"timestamp": 1689262934,
"environment": "production"
}
}
```
***
## Débito con billeteras digitales (Nequi / Daviplata)
Las billeteras digitales requieren que el **cliente autorice la vinculación** desde su app bancaria antes de poder debitar. A diferencia de ACH, el procesamiento es **inmediato**.
El cliente debe tener la app de Nequi o Daviplata instalada y activa. Si no completa la autorización, la cuenta quedará en estado `PENDING` y no podrás crear cargos.
### Nequi: Autorización en la app
El cliente debe aprobar la vinculación directamente en la app de Nequi. No se requiere OTP.
```mermaid theme={null}
sequenceDiagram
participant Tu App
participant OnePay API
participant Nequi App
participant Cliente
Tu App->>OnePay API: POST /accounts (bank_id Nequi)
OnePay API-->>Tu App: account_id (PENDING)
OnePay API->>Nequi App: Solicitud de vinculación
Nequi App->>Cliente: Notificación push
Cliente->>Nequi App: Autoriza débito automático
Nequi App-->>OnePay API: Vinculación aprobada
Tu App->>OnePay API: POST /accounts/{id}/validate
OnePay API-->>Tu App: status: ACTIVE
Tu App->>OnePay API: POST /charges (account_id)
OnePay API-->>Tu App: charge (succeeded)
```
```bash theme={null}
curl https://api.onepay.la/v1/accounts \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: nequi-001" \
-d '{
"customer_id": "CUSTOMER_ID",
"bank_id": "9957817d-239b-4032-8dca-bc508a76579c",
"subtype": "ELECTRONIC_DEPOSIT",
"account_number": "3201112233",
"authorization": true
}'
```
El `account_number` es el número de celular registrado en Nequi (sin prefijo +57).
Muestra instrucciones al cliente:
1. Abre la app de **Nequi**
2. Busca la notificación de autorización de débito automático
3. Aprueba la vinculación
El cliente recibirá una notificación push en la app de Nequi.
Una vez que el cliente autoriza en Nequi, valida la cuenta. Para Nequi **no se requiere OTP**.
```bash theme={null}
curl https://api.onepay.la/v1/accounts/ACCOUNT_ID/validate \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: validar-nequi-001"
```
Con la cuenta en estado `ACTIVE`, puedes debitar:
```bash theme={null}
curl https://api.onepay.la/v1/charges \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cargo-nequi-001" \
-d '{
"title": "Suscripción mensual",
"customer_id": "CUSTOMER_ID",
"amount": 45000,
"account_id": "ACCOUNT_ID"
}'
```
### Daviplata: Validación con OTP
Daviplata requiere que el cliente ingrese un código OTP recibido por SMS para completar la vinculación.
```mermaid theme={null}
sequenceDiagram
participant Tu App
participant OnePay API
participant Daviplata
participant Cliente
Tu App->>OnePay API: POST /accounts (bank_id Daviplata)
OnePay API-->>Tu App: account_id (PENDING)
OnePay API->>Daviplata: Solicitud de vinculación
Daviplata->>Cliente: SMS con código OTP
Cliente->>Tu App: Ingresa código OTP
Tu App->>OnePay API: POST /accounts/{id}/validate (otp)
OnePay API-->>Tu App: status: ACTIVE
Tu App->>OnePay API: POST /charges (account_id)
OnePay API-->>Tu App: charge (succeeded)
```
```bash theme={null}
curl https://api.onepay.la/v1/accounts \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: daviplata-001" \
-d '{
"customer_id": "CUSTOMER_ID",
"bank_id": "9957817d-26b5-456d-bc49-4a8ba1bc021b",
"subtype": "ELECTRONIC_DEPOSIT",
"account_number": "3109998877",
"authorization": true
}'
```
El `account_number` es el número de celular registrado en Daviplata (sin prefijo +57).
Daviplata envía un SMS con un código de 6 dígitos al número del cliente. Muestra un campo en tu interfaz para que el cliente ingrese el código.
```bash theme={null}
curl https://api.onepay.la/v1/accounts/ACCOUNT_ID/validate \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: validar-daviplata-001" \
-d '{
"otp": "123456"
}'
```
Con la cuenta validada, puedes debitar:
```bash theme={null}
curl https://api.onepay.la/v1/charges \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cargo-daviplata-001" \
-d '{
"title": "Pago de servicio",
"customer_id": "CUSTOMER_ID",
"amount": 30000,
"account_id": "ACCOUNT_ID"
}'
```
***
## Estados de la cuenta
Después de crear una cuenta, pasa por estos estados antes de poder debitar:
| Estado | Descripción |
| ------------ | ------------------------------------------------- |
| `PENDING` | Cuenta creada, esperando autorización del cliente |
| `VALIDATING` | Validación en progreso (Daviplata con OTP) |
| `ACTIVE` | Lista para débitos |
| `REJECTED` | Autorización rechazada por el cliente o el banco |
| `INACTIVE` | Cuenta desactivada |
## Comparación rápida
| | Tarjeta | Cuenta ACH | Nequi | Daviplata |
| --------------------- | -------------------------- | ------------------------ | ------------------------------ | -------------------------------------- |
| **Captura** | SDK Elements o API directa | Número de cuenta + banco | Celular | Celular |
| **Autorización** | Al registrar la tarjeta | Al crear la cuenta | App Nequi (push) | OTP por SMS |
| **Validación extra** | 3DS (si aplica) | No | `POST /accounts/{id}/validate` | `POST /accounts/{id}/validate` con OTP |
| **Procesamiento** | Inmediato | Siguiente día hábil | Inmediato | Inmediato |
| **Webhook resultado** | `charge.paid` | `charge.paid` | `charge.paid` | `charge.paid` |
## Errores comunes
| Error | Causa | Solución |
| --------------------------- | ---------------------------------------- | -------------------------------------------- |
| `ACCOUNT_IS_NOT_AUTHORIZED` | La cuenta no tiene `authorization: true` | Crea la cuenta con `authorization: true` |
| `INSUFFICIENT_FUNDS` | Fondos insuficientes | Notifica al cliente y reintenta |
| `CARD_EXPIRED` | Tarjeta expirada | Solicita al cliente que actualice la tarjeta |
| `invalid_otp` | OTP incorrecto o expirado (Daviplata) | Solicita un nuevo OTP al cliente |
| `validation_error` | Falta `customer_id` o método de pago | Verifica que envías `card_id` o `account_id` |
## Webhooks relevantes
* [Webhook de cuentas](/client/webhooks/accounts): Cambios de estado de cuentas (vinculación aprobada/rechazada)
* [Webhook de cargos](/client/webhooks/charges): Resultado de los débitos (aprobado/rechazado)
* [Webhook de tarjetas](/client/webhooks/cards): Cambios de estado de tarjetas
# Cobro de facturas desde tu sistema de gestión
Source: https://docs.onepay.la/client/use-cases/invoices
Conecta tu sistema de facturación con OnePay y automatiza el cobro. Tú generas la factura, OnePay se encarga de cobrarla.
## El problema
Generas facturas en tu sistema de gestión — SAEplus, Wispro, Siigo, Wisphub, Mikrowisp u otro — pero cobrarlas es un proceso manual: enviar links, hacer seguimiento, verificar pagos y actualizar estados. Cada factura pendiente es tiempo que tu equipo dedica a perseguir pagos en lugar de enfocarse en tu negocio.
## La solución
Conecta tu sistema de gestión con OnePay y delega todo el proceso de cobro. Tu sistema crea la factura vía API y OnePay hace el resto:
* **Envía el cobro** al cliente por WhatsApp, email o SMS
* **Hace seguimiento** con recordatorios automáticos
* **Recibe el pago** por cualquier método (PSE, tarjeta, Nequi, Efecty, etc.)
* **Te notifica** cuando el pago se completa
* **Concilia** automáticamente con tu sistema de gestión
***
## ¿Cómo funciona?
Tres actores participan en el flujo:
| | Descripción |
| ------------------------- | ----------------------------------------------------------------------------------------- |
| **Tu sistema de gestión** | El software donde generas tus facturas (SAEplus, Wispro, Siigo, Wisphub, Mikrowisp, etc.) |
| **OnePay** | Recibe la factura, crea el cobro y gestiona todo el proceso de pago |
| **Tu cliente** | Recibe el cobro y paga a través de OnePay |
```mermaid theme={null}
sequenceDiagram
participant SG as Sistema de Gestion
participant OP as OnePay
participant CF as Cliente Final
Note over SG,CF: Flujo principal de facturacion
SG->>OP: 1. POST /invoices (Crear factura)
Note right of OP: OnePay crea internamente un cobro asociado a la factura creada.
OP->>CF: 2. Envia link/cobro al cliente final (WhatsApp, email, etc.)
CF->>OP: 3. Paga la factura (via OnePay)
OP->>OP: 4. Actualiza estado de factura = Pagada
OP-->>SG: 5. Webhook notificacion de pago exitoso
alt El sistema necesita modificar el valor o datos de la factura
SG->>OP: 6. PUT /invoices/{invoice} (Actualizar factura)
Note right of OP: OnePay crea un nuevo cobro con el valor actualizado.
OP->>CF: 7. Envia nuevo cobro al cliente final
end
alt El pago se hizo por otro proveedor externo
SG->>OP: 8. DELETE /invoices/{invoice} (Eliminar factura)
Note right of OP: OnePay elimina el cobro asociado y detiene el seguimiento de pago.
end
```
***
## El flujo paso a paso
### 1. Tu sistema envía la factura a OnePay
Cuando se genera una factura en tu sistema, se envía a OnePay con los datos básicos: monto, referencia, datos del cliente y el proveedor de origen. OnePay crea automáticamente un cobro asociado y queda listo para enviarlo.
### 2. OnePay cobra al cliente
OnePay envía el link de pago al cliente por los canales que tengas configurados — WhatsApp, email, SMS — y se encarga del seguimiento con recordatorios automáticos según las reglas de cobranza de tu comercio.
### 3. El cliente paga
Tu cliente abre el link y paga con el método que prefiera: PSE, tarjeta de crédito, Nequi, Daviplata, Efecty, entre otros.
### 4. OnePay te notifica y concilia
Cuando el pago se completa, OnePay te notifica vía webhook y, según tu sistema de gestión, puede conciliar automáticamente — por ejemplo, creando un recibo de caja en Siigo.
### 5. ¿Cambió algo en la factura?
Si necesitas modificar el monto o los datos de una factura que aún no se ha pagado, actualízala vía API. OnePay cancela el cobro anterior y envía uno nuevo al cliente con los datos corregidos.
Si la factura se pagó por otro medio o ya no aplica, elimínala vía API. OnePay detiene el seguimiento y cancela el cobro pendiente.
***
## ¿Listo para integrar?
Consulta la [introducción técnica de facturas](/client/invoices/index) para entender los detalles de implementación, estados, webhooks y las funcionalidades avanzadas como pagos parciales y splits.
# Casos de uso de cobros
Source: https://docs.onepay.la/client/use-cases/payments
Un solo endpoint, múltiples canales. Aprende qué campos enviar según cómo quieras cobrar.
## Un endpoint, múltiples canales
Todos los cobros se crean con el mismo endpoint `POST /payments`. Lo que cambia es **qué campos envías**, y eso determina cómo le llega el cobro a tu cliente.
| Quiero... | Campo clave | ¿Qué sucede? |
| ----------------------------------------- | --------------------- | ----------------------------------------------------------------------------------------- |
| Cobrar por **WhatsApp** | `phone` | El cliente recibe el link de pago por WhatsApp automáticamente |
| Cobrar por **Email** | `email` | El cliente recibe el link de pago por correo electrónico |
| Crear un **link de pago** (monto fijo) | `amount` | Se genera un `payment_link` con monto predefinido |
| Crear un **link de pago** (monto abierto) | Sin `amount` | Se genera un `payment_link` donde el cliente ingresa el monto |
| Crear una **referencia para el portal** | `reference` | El cliente busca su cobro en el [portal de pagos](/docs/config/portal) con esa referencia |
| Cobrar con **QR Bre-B** | `POST /charges/bre-b` | Se genera un código QR que el cliente escanea desde su app bancaria |
| **WhatsApp + Email + Referencia** | Todos | Se envía por ambos canales y queda disponible en el portal |
Puedes combinar varios campos en una misma solicitud. Por ejemplo, enviar `phone` + `email` + `reference` para que el cobro llegue por todos los canales simultáneamente.
***
## Cobrar por WhatsApp
Envía el campo `phone` con el número en formato E.164. OnePay envía automáticamente un mensaje de WhatsApp con el link de pago.
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: whatsapp-001" \
-d '{
"amount": 150000,
"title": "Factura #1234",
"phone": "+573201112233",
"currency": "COP"
}'
```
**Resultado:** El cliente recibe un mensaje de WhatsApp con el link de pago y los detalles del cobro. Al hacer clic, se abre la página de pago.
***
## Cobrar por Email
Envía el campo `email`. OnePay envía automáticamente un correo electrónico con el link de pago.
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: email-001" \
-d '{
"amount": 150000,
"title": "Factura #1234",
"email": "cliente@ejemplo.com",
"currency": "COP"
}'
```
**Resultado:** El cliente recibe un correo electrónico con el link de pago y puede completar el pago desde ahí.
***
## Link de pago con monto fijo
Si no necesitas enviar el cobro por WhatsApp ni email, simplemente crea el cobro con `amount` y `title`. Recibirás un `payment_link` que puedes compartir por el canal que prefieras (chat, redes sociales, SMS, etc.).
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: link-fijo-001" \
-d '{
"amount": 150000,
"title": "Factura #1234",
"currency": "COP"
}'
```
**Respuesta:**
```json theme={null}
{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"amount": 150000,
"status": "pending",
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
...
}
```
**Resultado:** El cliente abre el link y ve el monto predefinido. Solo debe elegir el método de pago y completar la transacción.
***
## Link de pago con monto abierto
Si necesitas que el cliente **decida cuánto pagar** (donaciones, aportes voluntarios, pagos parciales), omite el campo `amount`.
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: link-abierto-001" \
-d '{
"title": "Donación Fundación ABC",
"currency": "COP"
}'
```
**Resultado:** El cliente abre el link y puede ingresar el monto que desee antes de completar el pago.
***
## Referencia para el portal de pagos
Si usas el [portal de pagos](/docs/config/portal), envía el campo `reference` para que el cliente pueda buscar su cobro por referencia en el portal.
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: portal-001" \
-d '{
"amount": 250000,
"title": "Cuota mensual - Apartamento 401",
"reference": "APTO-401-ENE-2025",
"currency": "COP"
}'
```
**Resultado:** El cliente ingresa al portal de pagos, busca la referencia `APTO-401-ENE-2025` y puede pagar directamente desde ahí.
El portal de pagos se configura desde el [administrador de OnePay](/docs/config/portal). Puedes personalizar la imagen, textos y branding.
***
## Combinar canales
Puedes enviar múltiples campos para que el cobro llegue por varios canales a la vez:
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: multi-canal-001" \
-d '{
"amount": 350000,
"title": "Mensualidad Febrero",
"phone": "+573201112233",
"email": "cliente@ejemplo.com",
"reference": "MEM-2025-FEB",
"currency": "COP",
"redirect_url": "https://tuapp.com/pago-exitoso"
}'
```
**Resultado:**
* El cliente recibe el cobro por WhatsApp
* También recibe el cobro por email
* Puede buscar la referencia en el portal de pagos
* Al pagar, es redirigido a `redirect_url`
***
## Resumen: ¿Qué campo uso?
| Campo | Tipo | Efecto |
| ----------------- | -------- | -------------------------------------------------------------- |
| `amount` | `number` | Define el monto fijo. Si se omite, el link es de monto abierto |
| `title` | `string` | Mensaje que ve el cliente en la página de pago (requerido) |
| `phone` | `string` | Envía el cobro por WhatsApp (formato E.164: `+573201112233`) |
| `email` | `string` | Envía el cobro por email |
| `reference` | `string` | Crea una referencia para el portal de pagos |
| `redirect_url` | `string` | URL de redirección después del pago |
| `expiration_date` | `date` | Fecha límite para pagar (`YYYY-MM-DD HH:MM:SS`) |
| `allows` | `object` | Controla qué métodos de pago están disponibles |
## Configurar métodos de pago disponibles
Usa el campo `allows` para controlar qué métodos de pago verá el cliente en el link:
```json theme={null}
{
"allows": {
"cards": true,
"pse": true,
"accounts": false,
"wallets": true,
"breb": true
}
}
```
## Escuchar el resultado
Independientemente del canal que uses, el resultado del pago se notifica por [webhook](/client/webhooks/payments):
```json theme={null}
{
"payment": {
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"status": "succeeded",
"amount": 150000
},
"event": {
"type": "payment.approved",
"timestamp": 1689262934,
"environment": "test"
}
}
```
## Cobrar con QR Bre-B
[Bre-B](/client/breb/index) es el sistema de pagos inmediatos del Banco de la República. Con `POST /charges/bre-b` generas un código QR que el cliente escanea desde su aplicación bancaria para aprobar el pago al instante.
Este caso de uso usa un endpoint diferente (`POST /charges/bre-b`) en lugar de `POST /payments`.
```bash theme={null}
curl https://api.onepay.la/v1/charges/bre-b \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: breb-qr-001" \
-d '{
"amount": 50000,
"title": "Pago en tienda",
"expires_in": 15
}'
```
**Respuesta:**
```json theme={null}
{
"id": "9e184fda-62bb-477b-9020-fa59f44f2b99",
"amount": 50000,
"status": "pending",
"qr": {
"image": "data:image/png;base64,iVBORw0KGgoAAAANS...",
"string": "00020101021226ABC123...",
"id": "ABC123DEF456789"
},
"key": {
"alias": "@A1B2C3D4",
"id": "9e184fda-1234-5678-9020-fa59f44f2b99"
},
"expires_at": "2026-01-30T15:45:00.000000Z",
"expires_in_seconds": 900
}
```
### Mostrar el QR al cliente
El campo `qr.image` contiene la imagen en base64. Muéstrala directamente en tu frontend:
```html theme={null}
```
### Flujo
```mermaid theme={null}
sequenceDiagram
participant Tu App
participant OnePay API
participant App Bancaria
participant Usuario
Tu App->>OnePay API: POST /charges/bre-b
OnePay API-->>Tu App: QR (imagen base64)
Tu App->>Usuario: Muestra el QR en pantalla
Usuario->>App Bancaria: Escanea el QR
App Bancaria->>OnePay API: Procesa el pago
OnePay API->>Tu App: Webhook (aprobado/rechazado)
```
1. Tu sistema llama a `POST /charges/bre-b` para generar el QR
2. Muestras el QR al cliente (en pantalla, impreso, etc.)
3. El cliente escanea el QR desde su app bancaria
4. El banco procesa el pago en segundos
5. OnePay te notifica el resultado por [webhook](/client/webhooks/charges)
### Expiración del QR
| Parámetro | Valor |
| ----------- | ----------------------- |
| Mínimo | 5 minutos |
| Máximo | 45 días (64800 minutos) |
| Por defecto | 15 minutos |
Una vez expirado, el QR ya no puede usarse y el cargo se marca como `failed`.
Para más detalles del endpoint, consulta la [referencia de QR Bre-B](/client/charges/bre-b).
***
## ¿Necesitas debitar directamente?
Si ya tienes la tarjeta o cuenta bancaria autorizada del cliente y quieres cobrar sin que el cliente interactúe con un link, consulta los [casos de uso de débitos automáticos](/client/use-cases/charges) para ver el flujo completo con tarjetas, cuentas bancarias, Nequi y Daviplata.
# Dispersión
Source: https://docs.onepay.la/client/use-cases/payouts
Dispersa dinero a múltiples destinatarios de forma rápida y segura.
La dispersión de dinero te permite enviar pagos a múltiples destinatarios de forma simultánea. A continuación te explicamos paso a paso cómo implementar esta funcionalidad en tu aplicación.
El primer paso es registrar al destinatario como cliente en nuestra plataforma. Esto te permitirá asociar sus datos bancarios y realizar operaciones a su nombre. Utiliza el endpoint [Crear un cliente](../customers/create) proporcionando la información necesaria.
Obtén el listado actualizado de instituciones financieras disponibles para realizar transferencias. Esto te ayudará a validar que el banco del destinatario está soportado. Consulta el endpoint [Listar bancos](../accounts/list-banks).
Registra la cuenta bancaria del cliente donde se depositarán los fondos. Ten en cuenta que los campos de autorización solo son necesarios si planeas realizar débitos automáticos desde esta cuenta. Para más detalles, visita [Crear una cuenta bancaria](../accounts/create).
Inicia la dispersión de fondos creando un payout que especifique el monto y destinatario. Utiliza el endpoint [Crear una dispersión](../cashouts/create) con los parámetros requeridos.
Mantente informado del estado de la transferencia implementando el [Webhook de dispersión](../webhooks/cashouts). Este te notificará cuando el pago se haya completado exitosamente o si ocurre algún error.
Importante: Asegúrate de almacenar de forma segura los identificadores (IDs) del cliente, cuenta bancaria y payout generados. Estos te permitirán realizar futuras operaciones y dar seguimiento a las transacciones de manera eficiente.
Asegúrate de entender los tipos de dispersión que existen y qué tipo de dispersión necesitas hacer.
* INSTANT: Transferencia inmediata solo a personas naturales, estas deben tener una cuenta bancaria registrada en transfiya.
* TURBO: Transferencia inmediatas (menos de 2 horas\*) a personas naturales y jurídicas.
* ACH: Transferencia con velocidades de 1 a 3 dias habiles.
\*Dependiendo del banco del destinatario y la hora de la transacción, el tiempo de la transferencia puede variar.
# Tokenizar cuentas Nequi y Daviplata
Source: https://docs.onepay.la/client/use-cases/tokenizar-cuentas
Vincula cuentas de Nequi y Daviplata para habilitar débitos automáticos.
## Tokenizar Nequi y Daviplata
Este caso de uso te permite capturar y tokenizar cuentas bancarias de Nequi y Daviplata de tus clientes para posteriormente realizar débitos automáticos. Cada proveedor tiene un flujo de validación diferente.
El parámetro `authorization` debe ser `true`. Sin esto, la cuenta se crea pero el usuario nunca recibe la solicitud de enrolamiento en su billetera y no podrás realizar cargos.
### Flujo con Nequi
Registra al cliente en nuestra plataforma. Utiliza el endpoint [Crear un cliente](../customers/create) con los datos personales del titular de la cuenta Nequi.
Registra la cuenta bancaria del cliente seleccionando el banco `Nequi`. Utiliza el endpoint [Crear una cuenta](../accounts/create) con:
* `bank_id`: `9957817d-239b-4032-8dca-bc508a76579c`
* `subtype`: `ELECTRONIC_DEPOSIT`
* `authorization`: `true`
* `account_number`: Número de celular registrado en Nequi
Nequi requiere que el cliente complete el proceso de vinculación desde la aplicación del banco. Redirige al cliente a la aplicación de Nequi para que autorice el débito automático.
Valida la cuenta usando el endpoint [Validar cuenta](../accounts/validate). Para Nequi no se requiere OTP, para Daviplata envía el código OTP recibido por SMS.
Con la cuenta tokenizada y activa, puedes usarla para débitos automáticos usando el endpoint [Crear cargo](../charges/create) con:
* `customer_id`: ID del cliente
* `account_id`: ID de la cuenta validada
* `amount`: Monto a debitar
### Flujo con Daviplata
Registra al cliente en nuestra plataforma. Utiliza el endpoint [Crear un cliente](../customers/create) con los datos personales del titular de la cuenta Daviplata.
Registra la cuenta bancaria del cliente seleccionando el banco `Daviplata`. Utiliza el endpoint [Crear una cuenta](../accounts/create) con:
* `bank_id`: `9957817d-26b5-456d-bc49-4a8ba1bc021b`
* `subtype`: `ELECTRONIC_DEPOSIT`
* `authorization`: `true`
* `account_number`: Número de celular registrado en Daviplata
Daviplata requiere validación mediante código OTP. Solicita al cliente que ingrese el código OTP recibido por SMS.
Valida la cuenta usando el endpoint [Validar cuenta](../accounts/validate) enviando el código OTP recibido por SMS.
Con la cuenta tokenizada y activa, puedes usarla para débitos automáticos usando el endpoint [Crear cargo](../charges/create) con:
* `customer_id`: ID del cliente
* `account_id`: ID de la cuenta validada
* `amount`: Monto a debitar
## Estados de la cuenta
| Estado | Descripción |
| ------------ | ---------------------------------------------------------- |
| `PENDING` | Cuenta creada, pendiente de validación |
| `VALIDATING` | Proceso de validación en progreso (para Daviplata con OTP) |
| `ACTIVE` | Cuenta validada y lista para débitos |
| `REJECTED` | La validación fue rechazada |
| `INACTIVE` | Cuenta desactivada |
## Webhooks relevantes
* [Webhook de cuentas](../webhooks/accounts): Notifica cambios en el estado de la cuenta
* [Webhook de cargos](../webhooks/charges): Notifica débitos realizados
# Eliminar debito por id
Source: https://docs.onepay.la/client/utilities/auto-debit-delete
DELETE utilities/direct-debits/{bill_id}
Elimina un debito automatico suscrito de tus clientes.
```json 204 theme={null}
no content
```
# Eliminar debito por referencia
Source: https://docs.onepay.la/client/utilities/auto-debit-delete-ref
DELETE utilities/direct-debits
Elimina un debito automatico suscrito de tus clientes.
La referencia del debito automatico a eliminar.
El numero de telefono del cliente en formato E.164.
```json 204 theme={null}
no content
```
# Generar link de domiciliación
Source: https://docs.onepay.la/client/utilities/auto-debit-link
POST utilities/direct-debits/link
Genera un link firmado para que un cliente suscriba su método de pago al débito automático de facturas.
Genera una URL firmada con tiempo de expiración que redirige al checkout de domiciliación. El cliente podrá registrar su método de pago (tarjeta o cuenta) para el cobro automático de sus facturas.
La compañía debe tener al menos un servicio de facturación (`BillService`) habilitado para poder generar el link.
***
### Body
Referencia de la factura o servicio a domiciliar. Mínimo 1 carácter, máximo 60.
Número de teléfono del cliente en formato E.164. Si se envía, el checkout lo pre-llenará.
Monto aproximado del cobro (en pesos). Se muestra al cliente como referencia. Mínimo `0`.
Minutos de validez del link. Mínimo `60`, máximo `43200` (30 días). Por defecto `4320` (3 días).
### Ejemplos de uso
```bash theme={null}
curl https://api.onepay.la/v1/utilities/direct-debits/link \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"reference": "3167591038",
"phone": "+573001234567",
"approx_amount": 45000,
"expiration_minutes": 4320
}'
```
```ts theme={null}
const response = await fetch('https://api.onepay.la/v1/utilities/direct-debits/link', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
reference: '3167591038',
phone: '+573001234567',
approx_amount: 45000,
expiration_minutes: 4320,
}),
});
const data = await response.json();
console.log(data.url);
```
```python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/utilities/direct-debits/link',
headers={
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
},
json={
'reference': '3167591038',
'phone': '+573001234567',
'approx_amount': 45000,
'expiration_minutes': 4320,
},
)
data = response.json()
print(data['url'])
```
### Response
URL corta que redirige al checkout de domiciliación. Este link es público y puede compartirse con el cliente.
La referencia enviada en el request.
Fecha y hora de expiración del link en formato ISO 8601.
```json 200 theme={null}
{
"url": "https://onepay.la/s/abc123",
"reference": "3167591038",
"expires_at": "2026-02-16T15:55:00.000000-05:00"
}
```
***
## Notas importantes
* El link generado es una **URL firmada** con expiración. Una vez vencido, el cliente verá un error 403.
* Se genera automáticamente una **URL corta** para facilitar el envío por WhatsApp o SMS.
* El cliente podrá registrar una **tarjeta** o **cuenta bancaria** como método de pago automático.
# Listado de débitos suscritos a facturas
Source: https://docs.onepay.la/client/utilities/auto-debit-list
GET utilities/direct-debits
Obtenga el listado de débitos automáticos suscritos de tus clientes.
**También disponible vía `QUERY`.** Para que el documento del cliente no quede en la URL, este endpoint acepta el método `QUERY`: los mismos parámetros van en el cuerpo JSON en vez de la query string. Ver la [guía del método QUERY](/guides/metodo-query) para ejemplos. El `GET` sigue funcionando igual.
Filtra por número de documento del cliente.
**Nota:** Este parámetro debe usarse como `filter[document_number]=...`
Filtra por estado de domiciliación.
Ver los estados posibles en la sección “Estados posibles de domiciliación”.
Filtra por tipo de método de pago.
Ver los valores disponibles en la sección “Tipos de método de pago”.
Filtra por referencia.
**Nota:** Este parámetro debe usarse como `filter[document_number]=...`
Ordena los resultados por un campo.
Ejemplo: `sort=created_at` o `sort=-updated_at` (el guion `-` invierte el orden descendente).
Campos soportados: `payment_method_type`, `created_at`, `updated_at`, `reference`, `phone`, `email`, `status`.
```json 200 theme={null}
{
"data": [
{
"bill_id": "019686ca-7ed1-7197-9ffc-58e8e7197829",
"status": "Inactive",
"created_at": "2025-04-30T13:02:19.000000Z",
"updated_at": "2025-04-30T13:02:19.000000Z",
"document_type": "CC",
"document_number": "625620",
"first_name": "Emmanuelle",
"last_name": "Denesik",
"phone": "+17183530893",
"email": "",
"remarks": null,
"remarks_updated_at": "2025-04-30T13:02:19.000000Z",
"bill_reference": "11120074",
"payment_method_type": "Other",
"payment_method_description": null
},
{
"bill_id": "019686ca-7ed2-727b-8006-55119db176de",
"status": "Inactive",
"created_at": "2025-04-30T13:02:19.000000Z",
"updated_at": "2025-04-30T13:02:19.000000Z",
"document_type": "CC",
"document_number": "625620",
"first_name": "Emmanuelle",
"last_name": "Denesik",
"phone": "+17183530893",
"email": "",
"remarks": null,
"remarks_updated_at": "2025-04-30T13:02:19.000000Z",
"bill_reference": "29396943",
"payment_method_type": "Other",
"payment_method_description": null
},
{
"bill_id": "019686ca-7ed3-7235-94ed-8e698538b0d1",
"status": "Inactive",
"created_at": "2025-04-30T13:02:19.000000Z",
"updated_at": "2025-04-30T13:02:19.000000Z",
"document_type": "CC",
"document_number": "625620",
"first_name": "Emmanuelle",
"last_name": "Denesik",
"phone": "+17183530893",
"email": "",
"remarks": null,
"remarks_updated_at": "2025-04-30T13:02:19.000000Z",
"bill_reference": "87671993",
"payment_method_type": "Other",
"payment_method_description": null
},
{
"bill_id": "019686ca-7ed4-71bc-acba-89b7fc3bcc76",
"status": "Inactive",
"created_at": "2025-04-30T13:02:19.000000Z",
"updated_at": "2025-04-30T13:02:19.000000Z",
"document_type": "CC",
"document_number": "625620",
"first_name": "Emmanuelle",
"last_name": "Denesik",
"phone": "+17183530893",
"email": "",
"remarks": null,
"remarks_updated_at": "2025-04-30T13:02:19.000000Z",
"bill_reference": "61673413",
"payment_method_type": "Other",
"payment_method_description": null
},
{
"bill_id": "019686ca-7ed4-71bc-acba-89b7fc8f39d8",
"status": "Inactive",
"created_at": "2025-04-30T13:02:19.000000Z",
"updated_at": "2025-04-30T13:02:19.000000Z",
"document_type": "CC",
"document_number": "625620",
"first_name": "Emmanuelle",
"last_name": "Denesik",
"phone": "+17183530893",
"email": "",
"remarks": null,
"remarks_updated_at": "2025-04-30T13:02:19.000000Z",
"bill_reference": "75251333",
"payment_method_type": "Other",
"payment_method_description": null
}
],
"current_page": 1,
"from": 1,
"last_page": 1,
"per_page": 50,
"to": 5,
"total": 5
}
```
***
## 🔄 Estados posibles de domiciliación (`status`)
* `Active`
* `Inactive`
***
## 💳 Tipos de método de pago (`payment_method_type`)
* `Card`
* `Account`
# Listado de cobros suscritos a débitos de facturas
Source: https://docs.onepay.la/client/utilities/direct-debit-payments
GET utilities/direct-debits/payments
Obtenga el listado de débitos automáticos suscritos de tus clientes.
Consulta los pagos asociados a un débito automático específico utilizando su `bill_id`.
**También disponible vía `QUERY`.** Los mismos filtros van en el cuerpo JSON en lugar de la URL, usando el método `QUERY`. Ver la [guía del método QUERY](/guides/metodo-query) para ejemplos. El `GET` sigue funcionando igual.
***
Filtra por el ID de la domiciliación.
Debe usarse como `filter[bill_id]=...`
Filtra por referencia del pago.
Filtra por estado del pago.
Ver los estados posibles en la sección “Estados posibles del pago”.
Devuelve los pagos cuyo monto sea **mayor o igual** al valor indicado, en centavos. No es una
coincidencia exacta: es un mínimo.
(ISO 8601) | Filtra por fecha de pago.
Ordena los resultados por un campo.
Ejemplo: `sort=paid_at` o `sort=-amount_in_cents`.
Campos soportados: `amount_in_cents`, `status`, `created_at`, `paid_at`.
```json theme={null}
{
"data": [
{
"bill_id": "0196cf6b-71df-739f-a2c6-53c7f3757c63",
"amount_in_cents": 100000,
"status": "Aprobada",
"created_at": "2025-05-14T15:30:47.000000Z",
"updated_at": "2025-05-14T15:30:47.000000Z",
"paid_at": "2025-05-14T15:40:47.000000Z",
"reference": "REF123",
"remarks": null,
"payment_method_type": "Card",
"payment_method_description": null,
"paid_data": {
"success": "00",
"status": "paid",
"message": "Pago aplicado con éxito.",
"approval": "123ABC"
}
}
],
"current_page": 1,
"from": 1,
"last_page": 1,
"per_page": 50,
"to": 1,
"total": 1
}
```
## 📘 Campos importantes
| Campo | Tipo | Descripción |
| ---------------------------- | ---------------- | ---------------------------------------------------------- |
| `bill_id` | `string` | ID de la factura. |
| `amount_in_cents` | `number` | Monto en centavos. |
| `status` | `string` | Estado actual del pago. |
| `created_at` | `string` | Fecha de creación del registro. |
| `updated_at` | `string` | Última fecha de actualización del registro. |
| `paid_at` | `string` | Fecha efectiva del pago. |
| `reference` | `string` | Referencia del pago. |
| `remarks` | `string` | razón de fallo. |
| `payment_method_type` | `string` | Tipo de método de pago (`Card` o `Account`). |
| `payment_method_description` | `string \| null` | Descripción del método, si aplica. |
| `paid_data.success` | `string` | Código de éxito de la conciliación. |
| `paid_data.status` | `string` | Estado devuelto por la conciliación. |
| `paid_data.message` | `string` | Mensaje informativo del estado de la conciliación. |
| `paid_data.approval` | `string` | Código de aprobación de la transacción en la conciliación. |
***
## 🔄 Estados posibles del pago (`status`)
* `Creada`
* `Pendiente`
* `Pagada`
* `Aprobada`
* `Confirmada`
* `Fallida`
* `Consulta fallida`
***
## 💳 Tipos de método de pago (`payment_method_type`)
* `Card`
* `Account`
***
## 🔽 Ordenamiento posible (`sort`)
* `amount_in_cents`
* `status`
* `created_at`
* `paid_at`
# Realizar pago
Source: https://docs.onepay.la/client/utilities/payment
POST utilities
Realiza un pago a un convenio.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
UUID del convenio listado previamente que se desea pagar.
Referencia de pago para el convenio. de ejemplo puedes usar 111100005555
Tu propio identificador para el pago (máximo 255 caracteres). Se devuelve en la respuesta y al
[consultar el pago](/client/utilities/view), para que puedas conciliarlo con tu sistema.
```json 200 theme={null}
{
"id": "9d1cd37a-a6bc-472d-b4e6-c913769d005a",
"group_id": "Kirlin Group, 2381762387",
"provider_id": "9d1cd37a-94e5-4cf1-aa7c-daac8ebf4ed9",
"provider_name": "Kirlin Group",
"amount": 250000,
"reference": "2381762387",
"external_id": "FACT-2026-00123",
"status": "pending",
"remarks": null
}
```
# Consultar convenios
Source: https://docs.onepay.la/client/utilities/providers
GET utilities/providers
Obtenga los detalles de un convenio por referencia.
Página a mostrar
Nombre del proveedor de servicios que deseas buscar
```json 200 theme={null}
{
"data": [
{
"id": "9d16af28-e289-4a24-bcc4-697febf17141",
"name": "Gulgowski and Sons",
"help_text": null
},
{
"id": "9d16af28-e319-44d3-8939-8f5286362f5d",
"name": "Pfeffer-Turner",
"help_text": null
},
{
"id": "9d16af28-e339-49d9-87d0-19e91bea48d3",
"name": "Flatley, Schmitt and McDermott",
"help_text": null
},
{
"id": "9d16af28-e36c-4d70-9dca-839b8d806ef8",
"name": "Heathcote and Sons",
"help_text": null
}
],
"current_page": 1,
"first_page_url": "https://api.onepay.test/v1/utilities/providers?page=1",
"from": 1,
"next_page_url": null,
"path": "https://api.onepay.test/v1/utilities/providers",
"per_page": 50,
"prev_page_url": null,
"to": 4
}
```
# Consultar convenio por referencia
Source: https://docs.onepay.la/client/utilities/query
GET utilities/providers/{provider}/{reference}
Obtenga los detalles de un convenio por referencia.
UUID del convenio listado previamente que se desea pagar.
Referencia de pago para el convenio. de ejemplo puedes usar 111100005555
```json 200 theme={null}
{
"provider_id": "9d16ae79-0cbb-4689-b021-09e7128f95ac",
"provider_name": "Watsica-Mohr",
"reference": "2381762387",
"amount": 250000,
"expiration_date": null,
"reference2": null
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Pago no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Generar link de pago
Source: https://docs.onepay.la/client/utilities/session-link
POST utilities/links
Genera un link de pago para un convenio.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Referencia de pago para el convenio. de ejemplo puedes usar 111100005555
Monto de pago para el convenio, es opcional si no se envia se consultaran los servicios disponibles para obtener el monto.
URL a la que se redirigira el usuario luego de pagar.
Objeto con los datos del cliente.
Nombre del cliente.
Apellido del cliente.
Email del cliente \[opcional].
Telefono del cliente en formato E.164.
Tipo de documento del cliente \[CC, CE, TI, NIT, PPT]
Número de documento del cliente.
```json 200 theme={null}
{
"id": "d7e214b7-75c1-427f-a810-4e4a4fb01cd4",
"redirect_url": "https://pagos.onepay.la/payment/d7e214b7-75c1-427f-a810-4e4a4fb01cd4"
}
```
# Ver pago
Source: https://docs.onepay.la/client/utilities/view
GET utilities/{payment_id}
Obtenga los detalles de un pago específico.
ID único del pago que deseas consultar
```json 200 theme={null}
{
"id": "9d1cd37a-a6bc-472d-b4e6-c913769d005a",
"group_id": "Kirlin Group, 2381762387",
"provider_id": "9d1cd37a-94e5-4cf1-aa7c-daac8ebf4ed9",
"provider_name": "Kirlin Group",
"amount": 250000,
"reference": "2381762387",
"external_id": "FACT-2026-00123",
"status": "paid",
"paid_at": "2026-07-27T14:32:11.000000Z"
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Pago no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Balance
Source: https://docs.onepay.la/client/wallets/balance
GET /customers/{customer_id}/balance
Obtener balance de una billetera.
ID del cliente cuyo balance quieres consultar. [Crear cliente](/client/customers/create).
```json 200 theme={null}
{
"id": "268efd35-772c-41ef-bcf5-0028d9db7092",
"balance": 100000,
"label": "$100.000"
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Cliente no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Cuentas relacionadas
Source: https://docs.onepay.la/client/wallets/delete-related-account
DELETE /customers/{customer_id}/accounts/related/{account_id}
Obtener cuentas relacionadas de un cliente
ID del cliente. [Crear cliente](/client/customers/create).
ID de la cuenta relacionada que quieres eliminar.
```json 204 theme={null}
null
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Cliente no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Cuentas relacionadas
Source: https://docs.onepay.la/client/wallets/related-accounts
GET /customers/{customer_id}/accounts/related
Obtener cuentas relacionadas de un cliente
ID del cliente cuyas cuentas relacionadas quieres consultar. [Crear cliente](/client/customers/create).
```json 200 theme={null}
[
{
"id":"84cc072e-90e8-33cf-9305-098095fed32f",
"title":"Ms.",
"subtype":"CHECKING",
"status":"PENDING",
"authorization":true,
"customer_id":"9e01d019-b438-40d2-89e1-52430c69dfb7",
"re_enroll":false,
"external_id":null,
"bank_id":"9e01d019-b731-48bc-b111-2baa3ea56ef6",
"bank":{
"id":"9e01d019-b731-48bc-b111-2baa3ea56ef6",
"name":"Maggio-Hills",
"logo":null,
"base64_logo":""
},
"customer":{
"id":"9e01d019-b438-40d2-89e1-52430c69dfb7",
"first_name":"Izaiah",
"last_name":"Rogahn",
"email":"",
"phone":"+17478695836",
"document_type":"CC",
"document_number":"156762",
"created_at":"2025-01-19T17:03:55.000000Z",
"is_test":true
}
}
]
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Cliente no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Extracto mensual
Source: https://docs.onepay.la/client/wallets/statement
POST /customers/{customer_id}/statements/{month}
Solicita el extracto mensual de movimientos de la wallet de un cliente. Se envía por correo electrónico.
Solicita la generación del extracto mensual de movimientos de wallet para un cliente. El extracto se genera en formato PDF y se envía al correo electrónico del cliente.
El extracto no se retorna en la respuesta. Se genera de forma asíncrona y se envía al correo electrónico registrado del cliente. Incluye saldo inicial, créditos, débitos, saldo final y movimientos pendientes por acreditar.
### Headers
Token único para garantizar la idempotencia de la petición
### Path Parameters
ID del cliente dueño de la billetera. [Crear cliente](/client/customers/create).
Mes del extracto en formato `YYYY-MM`. No puede ser un mes futuro.
### Response
Mensaje de confirmación indicando que el extracto será enviado por correo.
```bash cURL theme={null}
curl https://api.onepay.la/v1/customers/9dd4158b-0e45-42bc-b56f-a4c1f856814d/statements/2026-02 \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch(
'https://api.onepay.la/v1/customers/9dd4158b-0e45-42bc-b56f-a4c1f856814d/statements/2026-02',
{
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
}
);
const data = await response.json();
console.log(data.message); // "Tu extracto será enviado a tu correo electrónico."
```
```python Python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/customers/9dd4158b-0e45-42bc-b56f-a4c1f856814d/statements/2026-02',
headers={
'Authorization': 'Bearer sk_test_xxx'
}
)
data = response.json()
print(data["message"]) # "Tu extracto será enviado a tu correo electrónico."
```
```php PHP theme={null}
"https://api.onepay.la/v1/customers/9dd4158b-0e45-42bc-b56f-a4c1f856814d/statements/2026-02",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
echo $data["message"]; // "Tu extracto será enviado a tu correo electrónico."
curl_close($ch);
?>
```
```json 200 - Extracto solicitado theme={null}
{
"message": "Tu extracto será enviado a tu correo electrónico."
}
```
```json 422 - Mes inválido theme={null}
{
"message": "Formato de mes inválido: 'invalid'. Use el formato YYYY-MM (ejemplo: 2026-02)."
}
```
```json 422 - Mes futuro theme={null}
{
"message": "No es posible solicitar extractos de meses futuros."
}
```
```json 404 - Cliente no encontrado theme={null}
{
"message": "Registro no encontrado, Cliente no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Cargar billetera
Source: https://docs.onepay.la/client/wallets/toupwallet
POST /customers/{customer_id}/transactions
Cargar billetera con balance de tu compañia.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
ID del cliente cuya billetera cargarás. [Crear cliente](/client/customers/create).
Monto a cargar
Descripción de la transacción
```json 200 theme={null}
{
"id": "0194b9a9-45e4-73c5-8139-44d3813d8f29",
"type": "deposit",
"amount": 1000,
"label": "$1.000",
"concept": "Prueba",
"subtype": null,
"confirmed": true,
"node_type": null,
"created_at": "2025-01-31",
"node": null
}
```
```json 401 theme={null}
{
"message": "No tienes fondos suficientes para hacer está operación, necesitas depositar fondos para continuar.",
"code": 10501,
"code_name": "insufficient_funds"
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Cliente no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Detalle de una transaccion
Source: https://docs.onepay.la/client/wallets/transaction
GET /customers/{customer_id}/transactions/{transaction_id}
Obtener detalle de una transacción.
ID del cliente dueño de la transacción. [Crear cliente](/client/customers/create).
ID de la transacción obtenida desde el listado. [Consulta todas las transacciones](/client/wallets/transactions).
```json 200 theme={null}
{
"id":"0194b42f-5515-7245-b9f4-193c92f37b8c",
"type":"deposit",
"amount":1000,
"label":"$1.000",
"concept":"Transferencia de fondos",
"subtype":"PAYOUT",
"confirmed":true,
"node_type":"CashoutLine",
"created_at":"2025-01-29T22:29:48.000000Z",
"node":{
"id":"9e16627d-1eb9-46c4-ba19-b229ea77d68e",
"customer_id":"9957858a-c2f1-4f18-a5c2-216b4127e278",
"account_id":"9d005522-fad4-44c2-9012-1dbb871322b5",
"is_test":false,
"amount":1000,
"status":"processed",
"scheduled_at":null,
"created_at":"2025-01-29T22:29:48.000000Z",
"external_id":null,
"method":"TURBO",
"discount_to_destination":false
}
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Cliente no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Transacciones
Source: https://docs.onepay.la/client/wallets/transactions
GET /customers/{customer_id}/transactions
Obtener transacciones de una billetera.
ID del cliente dueño de la billetera. [Crear cliente](/client/customers/create).
```json 200 theme={null}
{
"data":[
{
"id":"0194b42f-5515-7245-b9f4-193c92f37b8c",
"type":"deposit",
"amount":1000,
"label":"$1.000",
"concept":"Transferencia de fondos a Andres Silva G\u00f3mez, enviado por Andres Silva Gomez",
"subtype":"WITHDRAW",
"confirmed":true,
"node_type":"CashoutLine",
"created_at":"2025-01-29T22:29:48.000000Z",
"node":{
"id":"9e16627d-1eb9-46c4-ba19-b229ea77d68e",
"customer_id":"9957858a-c2f1-4f18-a5c2-216b4127e278",
"account_id":"9d005522-fad4-44c2-9012-1dbb871322b5",
"is_test":false,
"amount":1000,
"status":"processed",
"scheduled_at":null,
"created_at":"2025-01-29T22:29:48.000000Z",
"external_id":null,
"method":"TURBO"
}
},
{
"id":"0194ad6d-2464-7215-a9a6-8e88d9a5a09d",
"type":"deposit",
"amount":1000,
"label":"$1.000",
"concept":"Transferencia de fondos",
"subtype":"WITHDRAW",
"confirmed":true,
"node_type":"CashoutLine",
"created_at":"2025-01-28T14:59:58.000000Z",
"node":{
"id":"9e13bea1-e7fd-40be-b2e7-35098504268f",
"customer_id":"9957858a-c2f1-4f18-a5c2-216b4127e278",
"account_id":"9d005522-fad4-44c2-9012-1dbb871322b5",
"is_test":false,
"amount":1000,
"status":"processed",
"scheduled_at":null,
"created_at":"2025-01-28T14:59:58.000000Z",
"external_id":null,
"method":"ACH"
}
},
],
"current_page":1,
"from":1,
"last_page":65,
"per_page":20,
"to":20,
"total":1291
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Cliente no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
# Billetera a billetera
Source: https://docs.onepay.la/client/wallets/transfer
POST /customers/transfer
Enviar dinero a otra billetera.
### Headers
Token único para garantizar la idempotencia de la petición
### Body
Wallet ID de la billetera que enviará el dinero
Wallet ID de la billetera que recibirá el dinero
Monto a enviar
Descripción de la transacción
Identificador externo opcional (máx. 255 caracteres). Si lo envías, se guarda en la transacción y se devuelve tal cual en el webhook `wallet.transaction.created`, lo que te permite correlacionar la transferencia con tus registros internos.
```json 200 theme={null}
{
"id": "0194b9a9-45e4-73c5-8139-44d3813d8f29",
"type": "withdraw",
"amount": -1000,
"label": "$1.000",
"concept": "Prueba",
"subtype": "WALLET_TRANSFER",
"confirmed": true,
"node_type": null,
"created_at": "2025-01-31",
"external_id": "ref-001",
"node": null
}
```
```json 401 theme={null}
{
"message": "No tienes fondos suficientes para hacer está operación, necesitas depositar fondos para continuar.",
"code": 10501,
"code_name": "insufficient_funds"
}
```
```json 404 theme={null}
{
"message": "Registro no encontrado, Cliente no existe",
"code": 10002,
"code_name": "record_not_found"
}
```
```json 409 theme={null}
{
"message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
"code": 10003,
"code_name": "idempotency_error"
}
```
# Conciliación Asobancaria
Source: https://docs.onepay.la/client/webhooks/asobancaria
Descarga y procesa archivos de conciliación en formato Asobancaria para reconciliar pagos.
El **archivo Asobancaria** es un reporte estandarizado de transacciones financieras utilizado en Colombia para la conciliación de pagos. OnePay genera este archivo periódicamente con el detalle de todos los movimientos procesados.
## ¿Cómo obtener el archivo?
El archivo de conciliación está disponible a través de un servidor **SFTP** al que puedes conectarte con las credenciales que te provee el equipo de soporte.
Para activar el acceso al servidor SFTP y recibir tus credenciales, comunícate con el equipo de soporte de OnePay.
### Pasos para acceder
Escribe a soporte indicando tu nombre de empresa y el entorno (producción o sandbox).
El equipo te enviará: host SFTP, usuario, contraseña y ruta del directorio.
Usa cualquier cliente SFTP (FileZilla, WinSCP, o línea de comandos) con las credenciales recibidas.
Los archivos se generan con frecuencia diaria y se nombran con la fecha de corte.
Ejemplo: `ONEPAY_20250120.txt`
Importa el archivo en tu sistema de conciliación o ERP usando el formato descrito abajo.
## Formato del archivo
El archivo sigue el estándar **Asobancaria** con campos de ancho fijo separados por pipes (`|`).
| Columna | Campo | Descripción |
| ------- | -------------------- | -------------------------------------------------- |
| 1 | `fecha` | Fecha de la transacción (`YYYYMMDD`) |
| 2 | `hora` | Hora de la transacción (`HHMMSS`) |
| 3 | `referencia` | ID interno de la transacción en OnePay |
| 4 | `referencia_externa` | Tu identificador externo (`external_id`) |
| 5 | `tipo` | Tipo de movimiento (`DEBITO`, `CREDITO`) |
| 6 | `monto` | Monto en centavos |
| 7 | `moneda` | Código de moneda (`COP`) |
| 8 | `estado` | Estado de la transacción (`APROBADO`, `RECHAZADO`) |
| 9 | `descripcion` | Descripción del movimiento |
### Ejemplo de línea
```txt theme={null}
20250120|143022|9e02966f-2ddf-4ee7-a391-5b5b7653e232|REF-001|CREDITO|1000000|COP|APROBADO|Pago mensualidad
```
## Estados posibles
| Estado | Descripción |
| ----------- | ---------------------------------- |
| `APROBADO` | Transacción procesada exitosamente |
| `RECHAZADO` | Transacción rechazada por el banco |
| `PENDIENTE` | En proceso de liquidación |
| `DEVUELTO` | Reversión o devolución aplicada |
## Preguntas frecuentes
El archivo se actualiza una vez al día, con corte a las 11:59 PM hora Colombia.
El servidor SFTP conserva los últimos 90 días de archivos.
Sí. Puedes programar un script con un cliente SFTP (p. ej. `sftp` o `lftp`) para descargar automáticamente el archivo cada día.
Las credenciales SFTP son confidenciales. No las compartas ni las incluyas en tu código fuente. Usa variables de entorno.
# Crear webhook
Source: https://docs.onepay.la/client/webhooks/create
POST /webhooks
Registra una nueva URL para recibir notificaciones de eventos de tu cuenta.
Al crear un webhook recibirás un `secret` único. Úsalo para [verificar la firma](/client/webhooks/index#verificación-de-firma) de cada notificación entrante.
El `secret` solo se muestra al momento de creación. Guárdalo de forma segura porque no podrás recuperarlo después.
### Body
Nombre descriptivo del webhook (máx. 255 caracteres).
Descripción opcional del webhook (máx. 500 caracteres).
URL HTTPS donde OnePay enviará las notificaciones. Debe ser una URL válida y accesible.
Lista de eventos a escuchar. Debe contener al menos un evento.
[Ver todos los eventos disponibles](/client/webhooks/index#eventos-disponibles).
Ejemplos de valores válidos: `payment.approved`, `charge.paid`, `cashout.completed`.
```bash cURL theme={null}
curl https://api.onepay.la/v1/webhooks \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Webhook de producción",
"description": "Notificaciones de pagos y dispersiones",
"url": "https://mi-servidor.com/webhooks/onepay",
"events": [
"payment.approved",
"payment.rejected",
"charge.paid",
"charge.failed",
"cashout.completed"
]
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/webhooks', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Webhook de producción',
description: 'Notificaciones de pagos y dispersiones',
url: 'https://mi-servidor.com/webhooks/onepay',
events: [
'payment.approved',
'payment.rejected',
'charge.paid',
'charge.failed',
'cashout.completed'
]
})
});
const webhook = await response.json();
// Guarda webhook.data.secret de forma segura
```
```python Python theme={null}
import requests
response = requests.post(
'https://api.onepay.la/v1/webhooks',
headers={
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
json={
'name': 'Webhook de producción',
'description': 'Notificaciones de pagos y dispersiones',
'url': 'https://mi-servidor.com/webhooks/onepay',
'events': [
'payment.approved',
'payment.rejected',
'charge.paid',
'charge.failed',
'cashout.completed'
]
}
)
webhook = response.json()
# Guarda webhook['data']['secret'] de forma segura
```
```php PHP theme={null}
"https://api.onepay.la/v1/webhooks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"name" => "Webhook de producción",
"description" => "Notificaciones de pagos y dispersiones",
"url" => "https://mi-servidor.com/webhooks/onepay",
"events" => [
"payment.approved",
"payment.rejected",
"charge.paid",
"charge.failed",
"cashout.completed"
]
])
]);
$response = curl_exec($curl);
$webhook = json_decode($response, true);
// Guarda $webhook['data']['secret'] de forma segura
?>
```
```json 201 theme={null}
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Webhook de producción",
"description": "Notificaciones de pagos y dispersiones",
"url": "https://mi-servidor.com/webhooks/onepay",
"events": [
"payment.approved",
"payment.rejected",
"charge.paid",
"charge.failed",
"cashout.completed"
],
"secret": "whsec_abcdef1234567890abcdef1234567890",
"header": null,
"is_test": false,
"created_at": "2025-01-20T14:30:00+00:00",
"updated_at": "2025-01-20T14:30:00+00:00"
}
}
```
```json 422 theme={null}
{
"message": "El campo nombre es obligatorio. (y 2 errores más)",
"code": 10001,
"code_name": "validation_error",
"errors": {
"name": ["El campo nombre es obligatorio."],
"url": ["El campo url es obligatorio."],
"events": ["El campo events es obligatorio."]
}
}
```
# Eliminar webhook
Source: https://docs.onepay.la/client/webhooks/delete
DELETE /webhooks/{id}
Elimina un webhook de tu cuenta. Esta acción es irreversible.
Al eliminar un webhook dejarás de recibir notificaciones para esa URL. La acción no puede deshacerse.
### Path Parameters
ID del webhook a eliminar.
```bash cURL theme={null}
curl https://api.onepay.la/v1/webhooks/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-X DELETE \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const id = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890';
await fetch(`https://api.onepay.la/v1/webhooks/${id}`, {
method: 'DELETE',
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
```
```python Python theme={null}
import requests
webhook_id = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
requests.delete(
f'https://api.onepay.la/v1/webhooks/{webhook_id}',
headers={'Authorization': 'Bearer sk_test_xxx'}
)
```
```php PHP theme={null}
"https://api.onepay.la/v1/webhooks/{$id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
curl_exec($curl);
?>
```
```json 200 theme={null}
{
"message": "Webhook eliminado correctamente."
}
```
```json 404 theme={null}
{
"message": "Webhook no encontrado.",
"code": 10004,
"code_name": "not_found"
}
```
# Ver webhook
Source: https://docs.onepay.la/client/webhooks/detail
GET /webhooks/{id}
Retorna el detalle de un webhook específico.
### Path Parameters
ID del webhook a consultar.
```bash cURL theme={null}
curl https://api.onepay.la/v1/webhooks/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const id = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890';
const response = await fetch(`https://api.onepay.la/v1/webhooks/${id}`, {
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const webhook = await response.json();
```
```python Python theme={null}
import requests
webhook_id = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
response = requests.get(
f'https://api.onepay.la/v1/webhooks/{webhook_id}',
headers={'Authorization': 'Bearer sk_test_xxx'}
)
webhook = response.json()
```
```php PHP theme={null}
"https://api.onepay.la/v1/webhooks/{$id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($curl);
$webhook = json_decode($response, true);
?>
```
```json 200 theme={null}
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Webhook de producción",
"description": "Notificaciones de pagos aprobados",
"url": "https://mi-servidor.com/webhooks/onepay",
"events": [
"payment.approved",
"payment.rejected",
"charge.paid",
"charge.failed"
],
"header": null,
"is_test": false,
"created_at": "2025-01-20T14:30:00+00:00",
"updated_at": "2025-01-20T14:30:00+00:00"
}
}
```
```json 404 theme={null}
{
"message": "Webhook no encontrado.",
"code": 10004,
"code_name": "not_found"
}
```
# Ejemplos de payloads
Source: https://docs.onepay.la/client/webhooks/ejemplos
Estructura de los payloads que recibirás en tu URL al dispararse cada evento de webhook.
Cada notificación llega como un `POST` con `Content-Type: application/json` al URL de tu webhook. El body siempre incluye los campos `event` (nombre del evento) y `data` (objeto del recurso relacionado).
## Estructura general
```json theme={null}
{
"event": "nombre.del.evento",
"data": {
// Objeto del recurso según el tipo de evento
}
}
```
***
## Pagos
```json theme={null}
{
"event": "payment.approved",
"data": {
"id": "9e02966f-2ddf-4ee7-a391-5b5b7653e232",
"amount": 150000,
"amount_label": "$1.500",
"currency": "COP",
"status": "approved",
"reference": "PAY-001",
"customer": {
"id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"first_name": "Carlos",
"last_name": "García",
"email": "carlos@ejemplo.com"
},
"paid_at": "2025-01-20T14:30:00+00:00",
"created_at": "2025-01-20T14:00:00+00:00",
"commission": {
"type": "COMMISSION",
"amount": 4850,
"currency": "COP",
"accredited_amount": 142900,
"details": [
{
"type": "COMMISSION",
"name": "Procesamiento de datos OnePay 2,9% + $500",
"amount": 4850
},
{
"type": "TAX_RETE_FUENTE",
"name": "Retención en la fuente",
"amount": 2250
}
]
}
}
}
```
```json theme={null}
{
"event": "payment.rejected",
"data": {
"id": "9e02966f-2ddf-4ee7-a391-5b5b7653e233",
"amount": 150000,
"currency": "COP",
"status": "rejected",
"reference": "PAY-002",
"customer": {
"id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"first_name": "Carlos",
"last_name": "García",
"email": "carlos@ejemplo.com"
},
"created_at": "2025-01-20T14:00:00+00:00"
}
}
```
```json theme={null}
{
"event": "payment.expired",
"data": {
"id": "9e02966f-2ddf-4ee7-a391-5b5b7653e234",
"amount": 150000,
"currency": "COP",
"status": "expired",
"reference": "PAY-003",
"created_at": "2025-01-20T14:00:00+00:00"
}
}
```
```json theme={null}
{
"event": "payment.partially_paid",
"data": {
"id": "9e02966f-2ddf-4ee7-a391-5b5b7653e236",
"amount": 500000,
"amount_label": "$5.000",
"currency": "COP",
"status": "partially_paid",
"reference": "PAY-004",
"customer": {
"id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"first_name": "Carlos",
"last_name": "García",
"email": "carlos@ejemplo.com"
},
"partial_payment": {
"total_paid_in_cents": 200000,
"total_paid_label": "$2.000",
"remaining_amount_in_cents": 300000,
"remaining_label": "$3.000",
"progress_percentage": 40,
"is_fully_paid": false,
"min_amount_in_cents": 100000,
"max_amount_in_cents": null,
"max_payment_methods": 3,
"timeout_hours": 24,
"partial_expires_at": "2025-01-21T14:00:00+00:00",
"charges": [
{
"id": "4dc959d0-d96a-377a-823e-5e05cfde896f",
"amount": 200000,
"status": "paid",
"paid_at": "2025-01-20T14:30:00+00:00"
}
]
},
"created_at": "2025-01-20T14:00:00+00:00"
}
}
```
```json theme={null}
{
"event": "payment.partial_expired",
"data": {
"id": "9e02966f-2ddf-4ee7-a391-5b5b7653e237",
"amount": 500000,
"amount_label": "$5.000",
"currency": "COP",
"status": "partial_expired",
"reference": "PAY-005",
"customer": {
"id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"first_name": "Carlos",
"last_name": "García",
"email": "carlos@ejemplo.com"
},
"partial_payment": {
"total_paid_in_cents": 200000,
"total_paid_label": "$2.000",
"remaining_amount_in_cents": 300000,
"remaining_label": "$3.000",
"progress_percentage": 40,
"is_fully_paid": false,
"min_amount_in_cents": 100000,
"max_amount_in_cents": null,
"max_payment_methods": 3,
"timeout_hours": 24,
"partial_expires_at": "2025-01-21T14:00:00+00:00",
"charges": [
{
"id": "4dc959d0-d96a-377a-823e-5e05cfde896f",
"amount": 200000,
"status": "paid",
"paid_at": "2025-01-20T14:30:00+00:00"
}
]
},
"created_at": "2025-01-20T14:00:00+00:00"
}
}
```
***
## Cargos
```json theme={null}
{
"event": "charge.paid",
"data": {
"id": "9e02966f-2ddf-4ee7-a391-5b5b7653e232",
"title": "Mensualidad Enero 2025",
"amount": 85000,
"amount_label": "$850",
"currency": "COP",
"status": "paid",
"payment_method_type": "Card",
"payment_method_id": "4dc959d0-d96a-377a-823e-5e05cfde896f",
"customer_id": "9e02966e-8beb-4e02-ba0c-bea875a07b22",
"is_test": false,
"paid_at": "2025-01-20T14:30:00+00:00",
"created_at": "2025-01-20T14:00:00+00:00"
}
}
```
```json theme={null}
{
"event": "charge.failed",
"data": {
"id": "9e02966f-2ddf-4ee7-a391-5b5b7653e235",
"title": "Mensualidad Febrero 2025",
"amount": 85000,
"currency": "COP",
"status": "declined",
"remarks": {
"code": "INSUFFICIENT_FUNDS",
"description": "Fondos insuficientes en la cuenta."
},
"customer_id": "9e02966e-8beb-4e02-ba0c-bea875a07b22",
"is_test": false,
"created_at": "2025-01-20T14:00:00+00:00"
}
}
```
***
## Dispersiones
```json theme={null}
{
"event": "cashout.completed",
"data": {
"id": "9d44ce43-a227-4566-b107-5a6bc01cbcdf",
"customer_id": "9b7c5f38-b2b5-4b0d-8e4c-458192e88eae",
"account_id": "9d0ac58c-2226-4f1c-b305-15e6dc3b47f6",
"amount": 1000000,
"currency": "COP",
"status": "processed",
"method": "ACH",
"external_id": "PAYROLL-2391",
"is_test": false,
"created_at": "2025-01-20T18:07:18+00:00"
}
}
```
```json theme={null}
{
"event": "cashout.rejected",
"data": {
"id": "9d44ce43-a227-4566-b107-5a6bc01cbcde",
"customer_id": "9b7c5f38-b2b5-4b0d-8e4c-458192e88eae",
"account_id": "9d0ac58c-2226-4f1c-b305-15e6dc3b47f6",
"amount": 1000000,
"currency": "COP",
"status": "failed",
"method": "ACH",
"external_id": "PAYROLL-2392",
"is_test": false,
"created_at": "2025-01-20T18:07:18+00:00"
}
}
```
***
## Suscripciones
```json theme={null}
{
"event": "subscription.paid",
"data": {
"id": "8c33bd52-f118-3455-a280-4a5ac90bcace",
"status": "active",
"amount": 50000,
"currency": "COP",
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"next_billing_at": "2025-02-20T00:00:00+00:00",
"created_at": "2025-01-20T14:00:00+00:00"
}
}
```
```json theme={null}
{
"event": "subscription.canceled",
"data": {
"id": "8c33bd52-f118-3455-a280-4a5ac90bcace",
"status": "canceled",
"amount": 50000,
"currency": "COP",
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"canceled_at": "2025-01-20T14:00:00+00:00",
"created_at": "2025-01-01T14:00:00+00:00"
}
}
```
***
## Cuentas bancarias
```json theme={null}
{
"event": "account.connected",
"data": {
"id": "9d0ac58c-2226-4f1c-b305-15e6dc3b47f6",
"customer_id": "9dd4158b-0e45-42bc-b56f-a4c1f856814d",
"subtype": "SAVINGS",
"status": "ACTIVE",
"bank": {
"id": "9e02966e-8d60-49b0-ad66-372bf73c4a54",
"name": "Bancolombia"
},
"created_at": "2025-01-20T14:00:00+00:00"
}
}
```
***
## Facturas
```json theme={null}
{
"invoice": {
"id": "9e8f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
"name": "Factura #1234 - Servicio Internet Marzo 2026",
"amount": 75000,
"provider": "wisphub",
"provider_id": "INV-2026-1234",
"reference": "CLI-5678",
"status": "CREATED",
"remarks": null,
"metadata": {},
"due_date": "2026-04-30T23:59:59.000000Z",
"timely_payment_date": "2026-04-25T23:59:59.000000Z",
"created_at": "2026-04-01T10:30:00.000000Z",
"updated_at": "2026-04-01T10:30:00.000000Z",
"payment_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"is_test": false
},
"event": {
"type": "invoice.created",
"timestamp": 1743508200,
"environment": "live",
"company_id": "f1e2d3c4-b5a6-9788-7654-321fedcba098"
}
}
```
```json theme={null}
{
"invoice": {
"id": "9e8f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
"name": "Factura #1234 - Servicio Internet Marzo 2026",
"amount": 75000,
"provider": "wisphub",
"provider_id": "INV-2026-1234",
"reference": "CLI-5678",
"status": "PAID",
"remarks": null,
"metadata": {
"plan": "50MB",
"client_code": "CLI-5678"
},
"due_date": "2026-04-30T23:59:59.000000Z",
"timely_payment_date": "2026-04-25T23:59:59.000000Z",
"created_at": "2026-04-01T10:30:00.000000Z",
"updated_at": "2026-04-15T14:22:10.000000Z",
"payment_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"is_test": false,
"payment": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"source": "Factura #1234",
"currency": "COP",
"amount": 75000,
"amount_label": "$75,000",
"title": "Factura #1234",
"description": "Servicio Internet Marzo 2026",
"phone": "+573001234567",
"expiration_at": "2026-04-30T23:59:59.000000Z",
"due_date": "2026-04-30T23:59:59.000000Z",
"timely_payment_date": "2026-04-25T23:59:59.000000Z",
"document_link": null,
"external_id": "INV-2026-1234",
"allows": [],
"status": "APPROVED",
"is_test": false,
"created_at": "2026-04-01T10:30:00.000000Z",
"paid_at": "2026-04-15T14:22:10.000000Z",
"payment_link": "https://pay.onepay.la/p/a1b2c3d4",
"redirect_url": "https://miempresa.com/gracias",
"provider_id": "TXN-987654",
"metadata": null,
"commission": {
"type": "COMMISSION",
"amount": 2675,
"currency": "COP",
"accredited_amount": 71200,
"details": [
{
"type": "COMMISSION",
"name": "Procesamiento de datos OnePay 2,9% + $500",
"amount": 2675
},
{
"type": "TAX_RETE_FUENTE",
"name": "Retención en la fuente",
"amount": 1125
}
]
}
}
},
"event": {
"type": "invoice.paid",
"timestamp": 1744727530,
"environment": "live",
"company_id": "f1e2d3c4-b5a6-9788-7654-321fedcba098"
}
}
```
```json theme={null}
{
"invoice": {
"id": "9e8f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
"name": "Factura #1234 - Servicio Internet Marzo 2026",
"amount": 75000,
"provider": "wisphub",
"provider_id": "INV-2026-1234",
"reference": "CLI-5678",
"status": "PAID_FROM_PROVIDER",
"remarks": null,
"metadata": {
"plan": "50MB",
"client_code": "CLI-5678"
},
"due_date": "2026-04-30T23:59:59.000000Z",
"timely_payment_date": "2026-04-25T23:59:59.000000Z",
"created_at": "2026-04-01T10:30:00.000000Z",
"updated_at": "2026-04-10T08:15:00.000000Z",
"payment_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"is_test": false,
"payment": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"source": "Factura #1234",
"currency": "COP",
"amount": 75000,
"amount_label": "$75,000",
"title": "Factura #1234",
"description": "Servicio Internet Marzo 2026",
"phone": "+573001234567",
"expiration_at": "2026-04-30T23:59:59.000000Z",
"due_date": "2026-04-30T23:59:59.000000Z",
"timely_payment_date": "2026-04-25T23:59:59.000000Z",
"document_link": null,
"external_id": "INV-2026-1234",
"allows": [],
"status": "APPROVED",
"is_test": false,
"created_at": "2026-04-01T10:30:00.000000Z",
"paid_at": null,
"payment_link": "https://pay.onepay.la/p/a1b2c3d4",
"redirect_url": null,
"provider_id": null,
"metadata": null,
"commission": []
}
},
"event": {
"type": "invoice.canceled",
"timestamp": 1744272900,
"environment": "live",
"company_id": "f1e2d3c4-b5a6-9788-7654-321fedcba098"
}
}
```
```json theme={null}
{
"invoice_id": "9e8f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
"stamping": {
"id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"type": "invoice",
"status": "accepted",
"number": "FE1",
"cufe": "a3f5c8e2b1d4f7a9c3e6b8d1f4a7c2e5b8d1f4a7c2e5b8d1f4a7c2e5b8d1f4a7c2e5b8d1f4a7c2e5b8d1f4a7c2e5b8d1",
"xml_url": "https://cdn.onepay.la/fiscal/FE1.xml",
"pdf_url": "https://cdn.onepay.la/fiscal/FE1.pdf",
"replaces_id": null,
"total": 28548100,
"currency": "COP",
"stamped_at": "2026-08-02T09:03:44+00:00",
"sent_at": null,
"created_at": "2026-08-02T09:03:40+00:00"
},
"event": {
"type": "invoice.stamped",
"timestamp": 1785661424,
"environment": "live",
"company_id": "f1e2d3c4-b5a6-9788-7654-321fedcba098"
}
}
```
```json theme={null}
{
"invoice_id": "9e8f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
"stamping": {
"id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"type": "invoice",
"status": "rejected",
"number": "FE1",
"cufe": null,
"xml_url": null,
"pdf_url": null,
"rejection_reason": "Regla FAJ01: el receptor no tiene responsabilidades fiscales",
"total": 28548100,
"currency": "COP",
"stamped_at": null
},
"event": {
"type": "invoice.stamp_rejected",
"timestamp": 1785661424,
"environment": "live",
"company_id": "f1e2d3c4-b5a6-9788-7654-321fedcba098"
}
}
```
```json theme={null}
{
"invoice_id": "9e8f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
"stamping": {
"id": "2b3c4d5e-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"type": "credit_note",
"status": "accepted",
"number": "NC900",
"cufe": "d7b2f4a9c1e3b5d7f9a2c4e6b8d1f3a5c7e9b2d4f6a8c1e3b5d7f9a2c4e6b8d1f3a5c7e9b2d4f6a8c1e3b5d7f9a2c4e6",
"xml_url": "https://cdn.onepay.la/fiscal/NC900.xml",
"pdf_url": "https://cdn.onepay.la/fiscal/NC900.pdf",
"replaces_id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"total": 15000000,
"currency": "COP",
"stamped_at": "2026-08-05T10:14:02+00:00"
},
"event": {
"type": "invoice.credit_note_issued",
"timestamp": 1785924842,
"environment": "live",
"company_id": "f1e2d3c4-b5a6-9788-7654-321fedcba098"
}
}
```
***
¿Necesitas un evento que no está en esta lista? Revisa la [lista completa de eventos](/client/webhooks/index#eventos-disponibles) y configura tu webhook para recibirlos.
# Webhooks
Source: https://docs.onepay.la/client/webhooks/index
Recibe notificaciones en tiempo real cuando ocurren eventos en tu cuenta de OnePay.
Los **webhooks** te permiten recibir notificaciones HTTP automáticas cuando ocurren eventos en tu cuenta (pagos aprobados, dispersiones procesadas, cargos fallidos, etc.), sin necesidad de consultar la API constantemente.
## ¿Cómo funcionan?
Crea un webhook con la URL de tu servidor y los eventos que quieres escuchar.
Cada vez que ocurra un evento seleccionado, OnePay enviará un `POST` a tu URL con el payload del evento en formato JSON.
Tu servidor debe responder con un código HTTP `2xx` o `3xx` en menos de 10 segundos. Si no, OnePay reintenta la entrega hasta completar 6 intentos (ver [Entrega y reintentos](#entrega-y-reintentos)).
Valida siempre el token estático de `x-webhook-token`. Si configuraste un `secret`, valida además el header `Signature` con ese secreto para asegurarte de que la petición proviene de OnePay.
## Autenticación de los eventos
Cada entrega llega con estos headers:
El token estático que definiste al crear el webhook (campo `header`). Se envía siempre.
El tipo de evento, por ejemplo `charge.paid`. Se envía siempre.
HMAC-SHA256 en hexadecimal del cuerpo JSON, calculado con tu `secret`. **Solo se envía si el
webhook tiene un `secret` configurado**; si lo creaste sin `secret`, las entregas no van firmadas.
Versiones anteriores de esta página decían que la firma viajaba en `x-onepay-signature`. Ese
header **no existe**: la firma va en `Signature` y el token estático en `x-webhook-token`. Si
implementaste la verificación contra `x-onepay-signature`, nunca encontró el header y es probable
que tu endpoint esté procesando eventos sin autenticar.
Valida **siempre** con comparación en tiempo constante, y rechaza la petición si no coincide.
```javascript JavaScript theme={null}
const crypto = require('crypto');
// `rawBody` debe ser el cuerpo sin parsear: si lo reserializas, la firma no coincide.
function verifyWebhook(req, rawBody, { token, secret }) {
const sentToken = req.headers['x-webhook-token'] ?? '';
const tokenOk = crypto.timingSafeEqual(Buffer.from(sentToken), Buffer.from(token));
if (!tokenOk) return false;
if (!secret) return true; // webhook sin secret: solo hay token
const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const sent = req.headers['signature'] ?? '';
return sent.length === expected.length
&& crypto.timingSafeEqual(Buffer.from(sent), Buffer.from(expected));
}
```
```python Python theme={null}
import hmac, hashlib
def verify_webhook(headers, raw_body: bytes, token: str, secret: str | None) -> bool:
if not hmac.compare_digest(headers.get('x-webhook-token', ''), token):
return False
if not secret:
return True # webhook sin secret: solo hay token
expected = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(headers.get('Signature', ''), expected)
```
```php PHP theme={null}
Guarda tu `secret` de forma segura. Solo se muestra una vez al crear el webhook. Si lo pierdes, deberás eliminarlo y crear uno nuevo.
## Eventos disponibles
### Pagos
| Evento | Descripción |
| --------------------------- | ----------------------------- |
| `payment.created` | Pago creado |
| `payment.approved` | Pago aprobado |
| `payment.rejected` | Pago rechazado |
| `payment.refunded` | Pago devuelto |
| `payment.expired` | Pago expirado |
| `payment.partially_paid` | Pago parcialmente completado |
| `payment.partial_expired` | Pago parcial expirado |
| `payment.issue` | Incidencia en el pago |
| `payment.disputed` | Pago disputado |
| `payment.message.delivered` | Mensaje de pago entregado |
| `payment.message.failed` | Mensaje de pago fallido |
| `payment.message.replied` | Mensaje de pago con respuesta |
| `payment.deleted` | Pago eliminado |
### Cargos
| Evento | Descripción |
| ------------------- | ------------------------- |
| `charge.created` | Cargo creado |
| `charge.processing` | Cargo en procesamiento |
| `charge.paid` | Cargo pagado exitosamente |
| `charge.failed` | Cargo fallido |
| `charge.refunded` | Cargo devuelto |
| `charge.disputed` | Cargo disputado |
### Dispersiones
| Evento | Descripción |
| -------------------------- | ------------------------------ |
| `cashout.created` | Dispersión creada |
| `cashout.processing` | Dispersión en procesamiento |
| `cashout.completed` | Dispersión completada |
| `cashout.rejected` | Dispersión rechazada |
| `cashout.cancelled` | Dispersión cancelada |
| `cashout.require_approval` | Dispersión requiere aprobación |
| `cashout.turbo_onboarding` | Onboarding de dispersión turbo |
### Suscripciones
| Evento | Descripción |
| ----------------------- | --------------------------- |
| `subscription.created` | Suscripción creada |
| `subscription.active` | Suscripción activada |
| `subscription.paid` | Cuota de suscripción pagada |
| `subscription.pass_due` | Suscripción vencida |
| `subscription.unpaid` | Suscripción sin pagar |
| `subscription.canceled` | Suscripción cancelada |
| `subscription.finished` | Suscripción finalizada |
| `subscription.frozen` | Suscripción congelada |
### Cuentas bancarias
| Evento | Descripción |
| ---------------------- | ------------------------------ |
| `account.pending` | Cuenta pendiente de validación |
| `account.connected` | Cuenta conectada exitosamente |
| `account.disconnected` | Cuenta desconectada |
| `account.validated` | Cuenta validada |
| `account.uncompleted` | Cuenta incompleta |
### Facturas
| Evento | Descripción |
| ------------------ | ----------------- |
| `invoice.created` | Factura creada |
| `invoice.paid` | Factura pagada |
| `invoice.canceled` | Factura cancelada |
### Facturación electrónica (DIAN)
El timbrado es asíncrono: estos eventos son la forma de enterarte del resultado. Ver [Facturas electrónicas](/client/electronic-invoices/index).
| Evento | Descripción |
| ---------------------------- | ------------------------------------------------------------------------------ |
| `invoice.stamped` | La DIAN aceptó la factura. Trae el número, el CUFE y las URLs del XML y el PDF |
| `invoice.stamp_rejected` | La DIAN rechazó el documento. Trae el motivo |
| `invoice.credit_note_issued` | Se emitió una nota crédito sobre una factura |
### Empresas
Resultado de la verificación de empresas [creadas por API](/client/companies/create). Se entregan a la empresa que hizo el alta.
| Evento | Descripción |
| ------------------ | ---------------------------------------------------------------- |
| `company.verified` | La empresa fue verificada y quedó activa |
| `company.rejected` | La verificación fue rechazada. Trae el motivo en `status_reason` |
### Otros
| Evento | Descripción |
| ---------------------------- | ---------------------------------- |
| `utility.paid` | Pago de servicio público aprobado |
| `utility.rejected` | Pago de servicio público rechazado |
| `connect_link.completed` | Link de conexión completado |
| `balance.updated` | Saldo actualizado |
| `wallet.transaction.created` | Transacción de wallet creada |
## Entrega y reintentos
Una entrega se considera **exitosa** si tu servidor responde con un código `2xx` o `3xx` dentro de
los **10 segundos** de timeout. Cualquier otra cosa —`4xx`, `5xx`, timeout, error de conexión o
certificado TLS inválido— cuenta como fallida y dispara un reintento.
### Calendario de reintentos
Cada evento se entrega en **6 intentos como máximo** —la entrega inicial y 5 reintentos— con esperas fijas entre ellos:
| Intento | Espera desde el intento anterior | Tiempo aproximado desde el evento |
| ------: | -------------------------------- | --------------------------------- |
| 1 | — | inmediato |
| 2 | 10 segundos | 10 s |
| 3 | 30 segundos | 40 s |
| 4 | 1 minuto | 1 min 40 s |
| 5 | 2 minutos | 3 min 40 s |
| 6 | 5 minutos | 8 min 40 s |
Tras el sexto intento fallido el evento deja de reintentarse por esta vía. Todos los intentos —con
su código de respuesta y el cuerpo devuelto por tu servidor— quedan registrados en
[Desarrolladores > Eventos](https://admin.onepay.la/developers/events) del panel de OnePay.
El payload y la firma son **idénticos en todos los intentos**: el cuerpo se congela al generar el
evento. Si tu verificación de firma falla en el primer intento, fallará en los seis. Un `4xx`
tuyo no cancela los reintentos.
### Reenvío automático
Además de los seis intentos inmediatos, dos procesos recuperan lo que quedó sin entregar:
* **Reconciliación (cada 10 minutos):** re-emite eventos terminales de cobros y pagos que nunca
llegaron a entregarse, incluidos los que se perdieron antes del primer intento. Acá una respuesta
`4xx` cuenta como rechazo definitivo de tu parte y **no** se re-emite: solo se recuperan los
fallos transitorios (`5xx`, timeout, error de conexión).
* **Reenvío masivo (cada 6 horas):** reenvía los eventos cuyos intentos fallaron todos dentro de las
últimas 7 horas, en ambiente `live`. Un evento que se entregó en alguno de sus intentos queda
excluido. A diferencia de la reconciliación, este barrido **no** distingue el motivo del fallo:
un evento que solo recibió `4xx` también se reenvía.
También puedes reenviar un evento puntual desde el detalle del evento en el panel. El reenvío
arranca un ciclo nuevo de hasta 6 intentos.
Estos reenvíos hacen que tu endpoint pueda recibir el **mismo evento más de una vez**. Procesa los
eventos de forma idempotente usando `event.type` + el `id` del recurso.
La excepción es `connect_link.completed`: un link con `single_use: false` se completa muchas veces
y todas las capturas comparten el mismo `connect_link.id`, así que ahí la clave lleva además
`connect_link.completed` (ver [Link de captura](/client/webhooks/connections)).
### Desactivación automática del endpoint
Si un webhook acumula **300 eventos consecutivos** que agotaron sus 6 intentos sin una sola entrega
exitosa, OnePay lo desactiva para dejar de enviarle tráfico y te notifica por correo. Una sola
entrega exitosa reinicia el contador.
Un webhook desactivado **no recibe eventos nuevos**, y los eventos ocurridos mientras estuvo apagado
no se acumulan para entregarlos después. Para reactivarlo, actualiza su URL desde el panel o con
[Actualizar webhook](/client/webhooks/update) — guardar la URL limpia el contador y lo vuelve a
habilitar.
## Endpoints
Consulta todos los webhooks registrados en tu cuenta.
Obtén el detalle de un webhook específico.
Registra una nueva URL y selecciona los eventos a escuchar.
Modifica la URL, nombre o eventos de un webhook existente.
Elimina un webhook de tu cuenta.
Revisa la estructura de cada evento que recibirás.
# Listar webhooks
Source: https://docs.onepay.la/client/webhooks/list
GET /webhooks
Retorna todos los webhooks registrados en tu cuenta, ordenados por fecha de creación descendente.
```bash cURL theme={null}
curl https://api.onepay.la/v1/webhooks \
-H "Authorization: Bearer sk_test_xxx"
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/webhooks', {
headers: {
'Authorization': 'Bearer sk_test_xxx'
}
});
const webhooks = await response.json();
```
```python Python theme={null}
import requests
response = requests.get(
'https://api.onepay.la/v1/webhooks',
headers={'Authorization': 'Bearer sk_test_xxx'}
)
webhooks = response.json()
```
```php PHP theme={null}
"https://api.onepay.la/v1/webhooks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx"
]
]);
$response = curl_exec($curl);
$webhooks = json_decode($response, true);
?>
```
```json 200 theme={null}
{
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Webhook de producción",
"description": "Notificaciones de pagos aprobados",
"url": "https://mi-servidor.com/webhooks/onepay",
"events": [
"payment.approved",
"payment.rejected",
"charge.paid",
"charge.failed"
],
"header": null,
"is_test": false,
"created_at": "2025-01-20T14:30:00+00:00",
"updated_at": "2025-01-20T14:30:00+00:00"
}
]
}
```
# Actualizar webhook
Source: https://docs.onepay.la/client/webhooks/update
PUT /webhooks/{id}
Modifica el nombre, URL o eventos de un webhook existente. Todos los campos son opcionales.
Puedes enviar solo los campos que quieres actualizar; los demás se mantienen sin cambios.
### Path Parameters
ID del webhook a actualizar.
### Body
Nuevo nombre descriptivo del webhook (máx. 255 caracteres).
Nueva descripción del webhook (máx. 500 caracteres). Envía `null` para borrarla.
Nueva URL HTTPS de destino. Debe ser una URL válida.
Nueva lista completa de eventos. Reemplaza los eventos existentes. Debe contener al menos un evento si se envía.
```bash cURL theme={null}
curl https://api.onepay.la/v1/webhooks/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-X PUT \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Webhook actualizado",
"events": [
"payment.approved",
"charge.paid",
"cashout.completed",
"cashout.rejected"
]
}'
```
```javascript JavaScript theme={null}
const id = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890';
const response = await fetch(`https://api.onepay.la/v1/webhooks/${id}`, {
method: 'PUT',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Webhook actualizado',
events: [
'payment.approved',
'charge.paid',
'cashout.completed',
'cashout.rejected'
]
})
});
const webhook = await response.json();
```
```python Python theme={null}
import requests
webhook_id = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
response = requests.put(
f'https://api.onepay.la/v1/webhooks/{webhook_id}',
headers={
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
json={
'name': 'Webhook actualizado',
'events': [
'payment.approved',
'charge.paid',
'cashout.completed',
'cashout.rejected'
]
}
)
webhook = response.json()
```
```php PHP theme={null}
"https://api.onepay.la/v1/webhooks/{$id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"name" => "Webhook actualizado",
"events" => [
"payment.approved",
"charge.paid",
"cashout.completed",
"cashout.rejected"
]
])
]);
$response = curl_exec($curl);
$webhook = json_decode($response, true);
?>
```
```json 200 theme={null}
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Webhook actualizado",
"description": "Notificaciones de pagos y dispersiones",
"url": "https://mi-servidor.com/webhooks/onepay",
"events": [
"payment.approved",
"charge.paid",
"cashout.completed",
"cashout.rejected"
],
"header": null,
"is_test": false,
"created_at": "2025-01-20T14:30:00+00:00",
"updated_at": "2025-01-20T16:45:00+00:00"
}
}
```
```json 422 theme={null}
{
"message": "El campo events debe ser un arreglo.",
"code": 10001,
"code_name": "validation_error",
"errors": {
"events": ["El campo events debe ser un arreglo."]
}
}
```
```json 404 theme={null}
{
"message": "Webhook no encontrado.",
"code": 10004,
"code_name": "not_found"
}
```
# Crear link de pago
Source: https://docs.onepay.la/docs/cobros/create-payment-link
Aprende a crear un link de pago en menos de 30 segundos.
## Cómo crear un link de pago
Aprende a crear un link de pago en menos de 30 segundos
Para crear un link de pago por WhatsApp en OnePay, sigue estos pasos en el módulo de Recibir pagos:
### Dirígete a la sección de Enlace de cobro
En tu plataforma, ve a la sección "Recibir pagos" y selecciona "Enlace de cobro" o haz clic en el siguiente botón para ser redirigido automáticamente.
### Configura los detalles del cobro:
Valor de tu venta IVA incluido: agrega el valor que vas a cobrar con el impuesto del IVA incluido.
Título de tu producto o servicio: agrega un título breve y claro sobre el concepto del cobro.
Descripción del pago: Esta sección es opcional y te permite añadir información de referencia que te ayudará a identificar el pago con mayor detalle en el futuro.
### Crear el link: Para finalizar con la creación del link presiona el botón Crear que se encuentra en la parte inferior izquierda.
Tendrás disponible para copiarlo el link a la derecha en el botón que dice Copiar link
# Importar archivos y realizar cobros masivos en OnePay
Source: https://docs.onepay.la/docs/cobros/import-file
Aprende a importar archivos y realizar cobros masivos en OnePay.
La funcionalidad de importar pagos en OnePay permite a los usuarios crear y gestionar cobros de manera masiva, simplificando el proceso de facturación y recaudación.
### Resumen introductorio
La funcionalidad de importar pagos en OnePay permite a los usuarios crear y gestionar cobros de manera masiva, simplificando el proceso de facturación y recaudación. Este artículo explica los pasos necesarios para importar pagos masivamente, ya sea subiendo un archivo desde tu dispositivo o ingresando los datos directamente en la plataforma.
### Pasos para importar archivos de cobros en OnePay
1. Accede al módulo de "Recibir Pagos"
Inicia sesión en OnePay y selecciona la opción "Recibir Pagos" en el menú principal.
2. Ubica la opción "Importar Pagos"
En la esquina superior derecha de la pantalla, haz clic en el botón "Más" y selecciona "Importar Pagos".
Selecciona el método de carga
Una nueva pantalla te dará dos opciones:
Subir un archivo Excel
Si ya tienes los datos preparados en un archivo Excel, selecciona esta opción.
Ingresar datos directamente
Utiliza el editor integrado para introducir los datos manualmente.
Descarga y completa la plantilla de ejemplo (si subes un archivo Excel)
Haz clic en "Descargar Ejemplo" para obtener la plantilla de Excel.
Llena los campos siguiendo estas indicaciones:
| Columna | Descripción |
| ------------------------ | ------------------------------------------------------------------------------------------ |
| **AMOUNT (A)** | Ingresa el monto exacto del cobro, sin formatos especiales. Ejemplo: `60000`. |
| **TITLE (B)** | Escribe un título breve que describa el cobro. Ejemplo: `Factura Servicios`. |
| **DESCRIPTION (C)** | Detalla el propósito del cobro. Ejemplo: `Mes de diciembre`. |
| **PHONE (D)** | Incluye el número telefónico del cliente con el código de país. Ejemplo: `+57 3001234567`. |
| **REFERENCE (E)** | Proporciona una referencia interna como un número de factura o documento. |
| **EMAIL (F)** | Correo electrónico del cliente para notificaciones. |
| **DOCUMENT URL (G)** | URL donde el cliente puede acceder a documentos relacionados en formato PDF. |
| **EXPIRATION (H)** | Fecha límite para que el cobro sea válido en formato `DD-MM-AAAA`. Ejemplo: `15-12-2024`. |
| **SCHEDULED DATE (I)** | Fecha programada para el envío del cobro en formato `DD-MM-AAAA`. Ejemplo: `10-12-2024`. |
| **ALLOW CARD (J)** | Indica si se permite el pago con tarjeta de crédito o débito (`Sí` o `No`). |
| **ALLOW PSI (K)** | Especifica si se permite el pago por transferencia bancaria (`Sí` o `No`). |
| **ALLOW CARD EXTRA (L)** | Configura si habrá un cargo adicional por pagos con tarjeta. |
| | |
1. Carga el archivo en la plataforma
* Regresa a la pantalla de importación.
* Haz clic en "Seleccionar archivo" y sube el Excel previamente completado.
* Revisa los datos en el resumen que muestra la plataforma.
1. Corrige errores en línea (si aplica).
* Si el sistema detecta errores, podrás corregirlos directamente en la interfaz sin necesidad de recargar el archivo completo.
1. **Confirma y crea los cobros**
* Una vez verificados los datos, confirma la operación. Los cobros se generarán y se notificarán a los clientes a través de los canales seleccionados (correo electrónico, WhatsApp, etc.).
## Preguntas Frecuentes
**¿Qué pasa si hay errores en el archivo Excel?**
Si el archivo contiene errores (datos faltantes, formatos incorrectos, referencias duplicadas), el sistema te mostrará una lista detallada de los problemas encontrados. Podrás:
* Corregir los errores directamente en la interfaz web sin necesidad de volver a cargar el archivo
* Descargar un reporte de errores para corregir el archivo Excel y volverlo a importar
* Excluir las filas con error y proceder solo con los cobros válidos
Los errores más comunes son: montos en formato incorrecto, referencias duplicadas, correos electrónicos inválidos, y números de teléfono sin el formato internacional (+57).
**¿Puedo programar un cobro para una fecha futura?**
Sí, puedes programar cobros para una fecha futura usando la columna `expiration_date` en el formato `YYYY-MM-DD HH:MM:SS`. Los cobros se crearán inmediatamente pero los links de pago expirarán en la fecha especificada. Esto es útil para:
* Enviar facturas mensuales con vencimiento específico
* Crear campañas de cobro con fecha límite
* Generar cobros para eventos futuros
Si omites la columna `expiration_date`, los cobros no tendrán fecha de expiración y permanecerán activos hasta que sean pagados o cancelados manualmente.
## Siguiente paso
Automatiza la creación de cobros con la API de OnePay.
Recibe notificaciones en tiempo real cuando se paguen los cobros.
Aprende todos los canales para enviar cobros (WhatsApp, Email, Portal, QR).
# Cobrar
Source: https://docs.onepay.la/docs/cobros/index
Empieza a cobrar con OnePay por WhatsApp, Link de Pago, QR, etc.
Importa archivos y realiza cobros masivos en OnePay.
Automatiza tus procesos con nuestras integraciones con Siigo, Alegra, etc.
# Marca blanca
Source: https://docs.onepay.la/docs/config/brand
Personalia la identidad de tus links de pago.
Optimiza la experiencia de pago de tus clientes con nuestra funcionalidad de marca blanca, que te permite personalizar los links de pago con la identidad visual de tu empresa.
#### ¿Qué puedes personalizar?
Muestra tu marca en cada transacción para generar confianza y reconocimiento.
Adapta la apariencia del portal de pagos con los colores de tu empresa para una experiencia más alineada con tu identidad visual.
Manten la identidad de tu marca personalizando los colores de los textos principales y secundarios
Con esta opción de marca blanca, tus clientes verán un entorno de pago completamente alineado con tu marca, mejorando la confianza y aumentando la conversión.
¡Haz que cada transacción refleje la identidad de tu empresa!
# Compañía
Source: https://docs.onepay.la/docs/config/company-info
Configura la información de tu empresa para redirigir a tus clientes a tus canales.
Completa la información de tu empresa para que los clientes puedan contactarte y conocer más sobre tus servicios. Estos datos se mostrarán en el footer del portal de pagos.
Estos datos se mostrarán en el **Footer** del portal de pagos.
Ingresa un correo de contacto donde los clientes puedan recibir asistencia.
Proporciona un número de WhatsApp para que los clientes puedan comunicarse contigo de manera rápida y efectiva.
Agrega un enlace a tu página de soporte o centro de ayuda para facilitar la resolución de dudas.
Comparte la URL de tu página web para que los clientes conozcan más sobre tu negocio.
Incluye el enlace a la política de privacidad de tu empresa para cumplir con las regulaciones de datos y privacidad.
Proporciona el enlace a los términos y condiciones de tu plataforma para que los usuarios conozcan las reglas y políticas de uso.
Asegúrate de que toda la información ingresada sea correcta y esté actualizada para garantizar una comunicación efectiva con tus clientes.
# Link personalizable
Source: https://docs.onepay.la/docs/config/custom-link
Permite a tus clientes la libertad de pagar el valor que escojan
Facilita los pagos de tus clientes con nuestro portal de pagos con monto abierto, donde ellos pueden seleccionar el valor a pagar dentro de un rango definido por tu empresa.
#### ¿Cómo funciona?
* Establece un monto mínimo y máximo para los pagos.
* Los clientes ingresan el valor que desean pagar dentro de ese rango.
* El proceso de pago es ágil y flexible, adaptándose a diferentes necesidades.
# Métodos de pago
Source: https://docs.onepay.la/docs/config/payment-method
Configuración de métodos de pago disponibles por default
Configura los métodos de pago que estarán habilitados de forma predeterminada en cada cobro, evitando la necesidad de activarlos o desactivarlos manualmente en cada transacción.
#### ¿Cómo personalizar los métodos de pago?
* Habilita o deshabilita las opciones disponibles según las necesidades de tu negocio.
* Puedes activar métodos como PSE, tarjetas de crédito o débito, débito ACH, Transfiya, entre otros.
* Aplica cargos adicionales si es necesario, por ejemplo, puedes configurar que el usuario pagador sea quien paga la comisión de la tarjeta.
Define qué opciones estarán activas por defecto en todos los cobros, asegurando que los clientes solo vean los métodos de pago que prefieres aceptar.
Esta configuración te permite optimizar la experiencia de pago de tus clientes y gestionar de manera eficiente los métodos disponibles en cada transacción.
# Portal web
Source: https://docs.onepay.la/docs/config/portal
Permite a tus clientes consultar su saldo pendiente y pagar en segundos.
Ofrece a tus clientes una manera rápida y sencilla de consultar sus deudas a través de un portal web totalmente personalizable.
#### ¿Cómo funciona?
* Título y textos: Adapta la comunicación con mensajes alineados a tu marca y a la experiencia de usuario que deseas brindar.
* Imagen de fondo: Personaliza el portal con tu identidad visual para mantener coherencia con la imagen de tu empresa.
Este portal permite a los usuarios ingresar su información y consultar el estado de sus deudas de forma segura y transparente, mejorando la confianza y facilitando la gestión de pagos.
# Subdomain
Source: https://docs.onepay.la/docs/config/subdomain
Empieza a utilizar OnePay en minutos
Configura un subdominio personalizado para tu portal de pagos y links de pago, brindando a tus clientes una experiencia más alineada con tu marca.
#### ¿Cómo funciona?
* Ingresa el nombre del subdominio que deseas utilizar.
* Se generará una URL personalizada con el formato: [https://pagos.onepay.la/tusubdominio](#)
* Esta URL será el enlace que tus clientes verán al realizar pagos, reforzando la identidad de tu negocio.
Personalizar el subdominio te permite ofrecer una imagen más profesional y confiable, asegurando que los clientes reconozcan tu marca en cada transacción.
# Gestion de contracargos
Source: https://docs.onepay.la/docs/dispute/introduction
Guía de Motivos de Contracargo
# Guía de Motivos de Contracargo – OnePay
En OnePay sabemos que los contracargos pueden ser un reto para los comercios.\
Esta guía explica de manera clara los principales **motivos de disputa** y
cómo responder con evidencias adecuadas.
La decisión final siempre la toma el banco emisor del cliente,
pero una buena respuesta puede aumentar las posibilidades de éxito.
***
## Cómo usar esta guía
* **Identifique el grupo** al que pertenece el contracargo.
* **Revise la descripción** para entender el motivo por el que se genera.
* **Prepare las evidencias** listadas en cada sección para aumentar las posibilidades de éxito en el proceso.
En caso de dudas, contacte al equipo de soporte de OnePay para recibir orientación personalizada.
***
## Crédito no procesado
**Descripción:**\
El cliente indica que debía recibir un reembolso o crédito (por cancelación, devolución o corrección de un error) y no lo vio reflejado en su extracto.\
Esto incluye reembolsos prometidos pero no procesados, devoluciones no acreditadas o cargos cancelados que no fueron devueltos.
**Ejemplos de evidencias útiles:**
* Registros de reembolso generados en OnePay (con fecha, monto y número de referencia).
* Políticas de devolución/cancelación aceptadas por el cliente.
* Conversaciones donde se confirma que el reembolso fue informado o acordado.
* Guías o comprobantes de devolución procesada.
***
## Duplicados
**Descripción:**\
El cliente asegura que fue cobrado más de una vez por la misma compra o que ya había pagado con otro método.\
Esto puede ocurrir por errores técnicos, confusión con preautorizaciones, o cobros procesados en paralelo.
**Ejemplos de evidencias útiles:**
* Historial de pagos en OnePay mostrando un solo cargo válido.
* Registros de conciliación bancaria que confirman la liquidación correcta.
* Recibos o facturas que diferencien compras distintas.
* Evidencia de reverso o devolución de un cargo duplicado.
* Comunicaciones con el cliente aclarando la naturaleza del cargo.
***
## Fraudulentos
**Descripción:**\
El cliente niega haber realizado la compra. Puede tratarse de un caso de tarjeta robada, clonada, desconocimiento de un cargo recurrente o fraude en transacciones no presenciales (en línea, por teléfono, etc.).
**Ejemplos de evidencias útiles:**
* Validaciones de seguridad: 3D Secure, CVV, coincidencia de dirección (AVS).
* Dirección IP y dispositivo desde el cual se realizó la compra.
* Historial de compras previas legítimas del cliente en el mismo comercio.
* Evidencia de autenticación en punto físico (firma, PIN, chip EMV).
* Logs de acceso y uso del servicio digital posterior a la compra.
***
## Generales
**Descripción:**\
Casos que no encajan en otra categoría pero están relacionados con errores en la operación.\
Pueden ser montos cobrados incorrectamente, uso de moneda distinta, problemas de autorización o falta de respuesta a tiempo en el proceso de disputa.
**Ejemplos de evidencias útiles:**
* Facturas detalladas con desglose de precios, impuestos, descuentos y propinas.
* Logs del sistema de OnePay mostrando el monto correcto procesado.
* Políticas de precios, tarifas adicionales o conversiones de moneda comunicadas al cliente.
* Evidencia de autorizaciones válidas (códigos y tiempos).
* Registro de envío de respuesta en los plazos establecidos por la franquicia.
***
## Producto no recibido
**Descripción:**\
El cliente sostiene que nunca recibió el bien o servicio adquirido.\
Esto incluye entregas físicas que no llegaron, servicios no prestados, accesos digitales bloqueados o envíos incompletos.
**Ejemplos de evidencias útiles:**
* Comprobante de entrega firmado o confirmación del transportista.
* Guías de rastreo que evidencien la entrega exitosa.
* Registros de uso o acceso digital (descargas, inicio de sesión).
* Documentos de prestación de servicio (agenda, citas cumplidas, reportes de trabajo).
* Conversaciones donde el cliente confirma la recepción.
***
## Producto inaceptable
**Descripción:**\
El cliente afirma que el producto o servicio recibido estaba dañado, era defectuoso o no coincidía con lo que se prometió en la compra.\
Incluye casos de artículos falsificados, mal funcionamiento o servicios prestados de forma incompleta.
**Ejemplos de evidencias útiles:**
* Capturas del anuncio o descripción original de la oferta.
* Facturas y comprobantes de envío/entrega.
* Fotos del producto tomadas antes del despacho con número de serie.
* Reportes de calidad o revisión técnica.
* Registros de soporte técnico ofrecido al cliente.
* Políticas de devolución que el cliente aceptó.
***
## Suscripción cancelada
**Descripción:**\
El cliente indica que fue cobrado por una suscripción o servicio recurrente después de haber solicitado la cancelación.\
Esto ocurre comúnmente por solicitudes hechas fuera del ciclo de facturación o malentendidos en las condiciones de cancelación.
**Ejemplos de evidencias útiles:**
* Prueba de aceptación de términos de suscripción y renovación automática.
* Registros que muestren la ausencia de solicitud de cancelación antes de la fecha de corte.
* Logs de uso del servicio tras la fecha en la que el cliente dice haber cancelado.
* Comprobante de envío de productos/servicios recurrentes antes de la cancelación.
* Conversaciones con el cliente explicando el ciclo de facturación.
***
# Comisiones aplicadas en un proceso de contracargo
Cuando un comercio enfrenta un contracargo, se generan dos tipos de cargos principales:
1. **Importe de la transacción**
* Corresponde al valor total de la compra realizada por el cliente.
* Este monto es debitado de la cuenta del comercio mientras la disputa está en curso.
* **Si el comercio gana la disputa**, el importe de la transacción es regresado.
* **Si el comercio pierde la disputa**, el importe queda en poder del cliente.
2. **Fee de la franquicia o procesador por la disputa**
* Es un cargo fijo que aplican las franquicias (Visa, Mastercard, American Express) o el procesador por la gestión del contracargo.
* Este valor es independiente del monto de la transacción.
* **Este fee no es reembolsable**, incluso si el comercio gana la disputa.
* Su objetivo es cubrir los costos administrativos del proceso de contracargo.
***
## Ejemplo práctico
* Transacción disputada: **\$100.000 COP**
* Fee de franquicia/procesador: **\$50.000 COP**
**Si el comercio gana la disputa:**
* Se regresan los **\$100.000 COP** de la transacción.
* El comercio asume de forma definitiva los **\$50.000 COP** del fee de franquicia.
**Si el comercio pierde la disputa:**
* El cliente se queda con los **\$100.000 COP** de la transacción.
* El comercio también paga los **\$50.000 COP** de comisión de franquicia.
***
## Nota importante
* El fee de franquicia es un cargo definido por las redes de tarjetas y procesadores, no por OnePay.
* Preparar y enviar evidencias sólidas puede ayudar al comercio a recuperar el importe de la transacción, pero el fee siempre será asumido por el comercio.
***
¿Qué sucede cuando ganas un contracargo?
¿Qué sucede cuando pierdes un contracargo?
# Contracargo perdido
Source: https://docs.onepay.la/docs/dispute/lost
Qué sucede cuando pierdes un contracargo, comisiones aplicadas y cómo prevenir futuros casos.
# ¿Qué significa perder un contracargo?
Cuando un comercio **pierde un contracargo**, significa que el banco emisor del cliente revisó las evidencias presentadas y decidió fallar a favor del tarjetahabiente.
En este caso, el monto de la transacción es **reversado definitivamente** al cliente y el comercio no lo recupera.
***
## ¿Por qué ocurre?
Perder un contracargo no significa necesariamente que el comercio haya hecho algo mal, pero sí que el banco encontró más peso en la reclamación del cliente.\
Algunas razones comunes son:
* Las evidencias enviadas no fueron suficientes para desmentir la reclamación.
* Las pruebas llegaron fuera del plazo establecido por la franquicia.
* El caso correspondía a un tipo de contracargo donde la responsabilidad recae directamente en el comercio (por ejemplo, fraude en entornos sin autenticación 3D Secure).
* Hubo errores de procesamiento en la transacción (monto incorrecto, autorización inválida, etc.).
* El banco consideró que la política del comercio no estaba claramente aceptada por el cliente.
***
## ¿Qué significa para el comercio?
* El dinero de la transacción **no se recupera**.
* Puede existir un costo adicional por gestión del contracargo, dependiendo de la franquicia.
* Si se acumulan demasiados contracargos perdidos, el comercio puede entrar en programas de monitoreo de alto riesgo de las franquicias.
***
## ¿Qué hacer después de perder un contracargo?
1. **Revise el caso**: Analice la retroalimentación y las evidencias que no se consideraron suficientes.
2. **Fortalezca sus procesos**:
* Asegúrese de que las políticas de devolución, cancelación y suscripción sean claras y visibles.
* Use mecanismos de autenticación (3D Secure, validación de CVV, verificación de dirección).
* Mantenga registros de comunicación con los clientes.
3. **Prevenga futuros casos**:
* Capacite a su equipo de atención al cliente para resolver reclamos antes de que escalen a contracargo.
* Documente cada paso de la entrega o prestación de servicios.
4. **Consulte con OnePay**: Nuestro equipo puede orientarlo para mejorar la forma de presentar evidencias y reducir riesgos futuros.
***
# Comisiones aplicadas en un contracargo
Cuando un cliente presenta un contracargo y este es debitado al comercio, se generan dos cargos principales:
1. **Importe total de la transacción**
* Corresponde al valor original de la venta realizada.
* Este monto es reversado al tarjetahabiente por decisión del banco emisor.
* El comercio pierde el valor total de la transacción disputada.
2. **Comisión de la franquicia o procesador por la disputa**
* Es un cargo adicional que aplican las franquicias (Visa, Mastercard, American Express) o el procesador de pagos por la gestión del contracargo.
* Este valor es independiente al monto de la transacción y se cobra incluso si el comercio decide no responder la disputa.
* El importe varía según la franquicia y las condiciones contractuales vigentes.
***
## Ejemplo práctico
Si un cliente disputa una transacción de **$100.000 COP** y la franquicia cobra **$50.000 COP** por concepto de gestión de contracargo:
* El comercio perderá los **\$100.000 COP** de la venta.
* Se le descontarán además **\$50.000 COP** de comisión por el proceso.
* En total, el impacto para el comercio será de **\$150.000 COP**.
***
## Nota importante
* Estos cargos son definidos por las franquicias y los bancos, no por OnePay.
* OnePay actúa como intermediario para que los comercios tengan visibilidad y puedan gestionar adecuadamente cada caso.
* Responder con evidencias sólidas puede evitar perder tanto la transacción como la comisión de gestión.
***
## Mensaje final
Perder un contracargo puede ser frustrante, pero también es una **oportunidad de mejora**.\
Cada disputa perdida ayuda a identificar brechas en la operación, la comunicación con los clientes o el uso de herramientas de seguridad.\
En OnePay, lo acompañamos para que cada vez tenga **menos riesgos y más control** sobre sus ventas.
# Contracargo ganado
Source: https://docs.onepay.la/docs/dispute/won
Qué sucede cuando ganas un contracargo y cómo aprovechar el resultado.
# ¿Qué significa ganar un contracargo?
Cuando un comercio **gana un contracargo**, significa que el banco emisor del cliente revisó las evidencias enviadas y decidió fallar a favor del comercio.
Esto quiere decir que la venta se valida como legítima y el monto de la transacción es regresado al comercio.
***
## ¿Qué ocurre al ganar?
1. **Reversión del importe de la transacción**
* El valor total de la compra disputada vuelve a la cuenta del comercio.
* El cliente ya no recibe el reembolso de ese cargo.
2. **Fee de franquicia o procesador**
* Aunque el importe de la venta se recupera, el fee cobrado por la franquicia o el procesador **no se devuelve**.
* Este cargo es definitivo y cubre los costos administrativos del proceso de contracargo.
***
## Ejemplo práctico
* Transacción disputada: **\$100.000 COP**
* Fee de franquicia/procesador: **\$50.000 COP**
**Resultado al ganar la disputa:**
* El comercio recupera los **\$100.000 COP** de la transacción.
* El comercio asume de forma definitiva los **\$50.000 COP** del fee de franquicia.
**Impacto neto:** +$100.000 (venta recuperada) – $50.000 (fee) = **+\$50.000 COP**
***
## Beneficios de ganar una disputa
* Recuperar el dinero de la transacción.
* Mantener la reputación del comercio frente a la franquicia y el banco.
* Reducir el riesgo de acumular contracargos perdidos, lo cual puede derivar en monitoreo o sanciones.
* Identificar qué prácticas de documentación y pruebas fueron más efectivas para aplicarlas en futuros casos.
***
## Buenas prácticas después de ganar
* **Guardar las evidencias usadas:** pueden servir de ejemplo en disputas futuras.
* **Analizar el caso:** entender qué convenció al banco para fortalecer los procesos de prevención.
* **Capacitar al equipo:** compartir las lecciones aprendidas con el área de atención al cliente o gestión de pagos.
***
## Mensaje final
Ganar un contracargo no solo significa recuperar el dinero, sino también demostrar que el comercio cuenta con procesos claros y bien documentados.\
En OnePay lo acompañamos para que cada disputa se convierta en una oportunidad de **mejorar la operación y fortalecer la confianza** en sus ventas.
# Elementos de captura de datos sensibles
Source: https://docs.onepay.la/docs/elements/index
Los elementos de captura de datos sensibles son componentes que permiten capturar datos sensibles como números de tarjetas, CVVs y fechas de vencimiento de manera segura y personalizada.
Los elementos de captura de datos sensibles son componentes que permiten capturar datos sensibles como números de tarjetas, CVVs y fechas de vencimiento de manera segura y personalizada.
Garantiza el cumplimiento de los requisitos de seguridad PCI interceptando datos confidenciales y reemplazándolos con tokens antes de que lleguen al servidor del cliente.
Empieza a integrar la solución.
# Integración del SDK Elements
Source: https://docs.onepay.la/docs/elements/introduction
Captura datos de tarjetas de forma segura cumpliendo PCI DSS con el SDK Elements de OnePay.
Integrar el SDK Elements es un proceso sencillo. Solo necesitas incluir el archivo JavaScript en tu aplicación y configurar los elementos HTML necesarios para alojar los campos del SDK. Los siguientes pasos describen el proceso:
1. **Incluir el archivo JavaScript**
```JavaScript Pagina de pagos lines icon="code" theme={null}
...
```
2. **Configurar los elementos HTML**
A continuación, inserte los elementos HTML necesarios en su aplicación de formulario. Es fundamental usar etiquetas ID específicas para una correcta representación del SDK.
Estos elementos sirven como marcadores de posición donde se insertarán los iframes del SDK. Para una seguridad óptima de los datos, recomendamos usar elementos "div" en lugar de elementos "input". A continuación, se muestra un ejemplo:
```HTML Formulario lines icon="code" theme={null}
```
En el ejemplo anterior, cada elemento "div" tiene un ID único que corresponde al tipo de datos que capturará (p. ej., número de tarjeta, nombre del titular, fecha de vencimiento, código de seguridad).
* cc-number: corresponde al campo donde se recibirá el número de tarjeta.
* cc-holder: corresponde al campo donde se recibirá el nombre del titular.
* cc-expiration-date: corresponde al campo donde se recibirá la fecha de vencimiento.
* cc-cvv: corresponde al campo donde se recibirá el código de seguridad.
3. **Iniciar la captura de datos**
Inicializa el SDK con el identificador del servicio, el ambiente (siempre `production`) y un callback que se ejecuta cuando el SDK está listo. Los tres argumentos son obligatorios.
```JavaScript Iniciar la captura de datos lines icon="code" theme={null}
const FT = window.FTCaptures.init("ggMoeO2K3G", "production", () => {});
```
El ambiente del SDK es siempre `production`, incluso durante tus pruebas. El modo de prueba lo
determina la API key con la que llamas a la API de OnePay: con tu llave de test puedes tokenizar
la [tarjeta de prueba](/client/cards/index#tarjetas-de-prueba-exitosas) `4242 4242 4242 4242`
y el backend registrará una tarjeta de prueba.
4. **Configurar los campos del formulario**
```JavaScript Configurar los campos del formulario lines icon="code" theme={null}
const css = {
'color': '#09090b',
'height': '36px',
'font-size': '16px',
'font-family': 'ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji',
'padding': '0px 12px',
'::placeholder': {
'color': '#c2c2c8',
'font-weight': '300',
},
};
FT.field('#cc-holder', {
type: 'card-holder',
name: 'holder',
placeholder: 'Nombre del titular',
autocomplete: 'cc-holder',
errorColor: '750000',
required: 'true',
css: css
});
FT.field('#cc-number', {
type: 'card-number',
name: 'number',
placeholder: 'Número de tarjeta',
autocomplete: 'cc-number',
errorColor: '750000',
required: 'true',
css: css
});
FT.field('#cc-expiration-date', {
type: 'card-expiration-date',
name: 'expiration_date',
placeholder: 'MM/AA',
autocomplete: 'cc-expiration-date',
errorColor: '750000',
required: 'true',
css: css
});
FT.field('#cc-cvv', {
type: 'card-security-code',
name: 'cvv',
placeholder: 'CVV',
autocomplete: 'cc-csc',
errorColor: '750000',
required: 'true',
css: css
});
```
5. **Eventos del formulario**
```js theme={null}
FTCaptures.on(event, function (event) {
//Do something with the event
});
```
* cardHolderValidationSuccess
* cardNumberValidationSuccess
* cardExpirationDateValidationSuccess
* cardSecurityCodeValidationSuccess
* expirationYearValidationSuccess
* expirationMonthValidationSuccess
* cardHolderValidationFailed
* cardNumberValidationFailed
* cardExpirationDateValidationFailed
* cardSecurityCodeValidationFailed
* expirationYearValidationFailed
* expirationMonthValidationFailed
6. **Valide y tokenize el metodo de pago**
La función Tokenizar prepara los campos de una ruta específica para la tokenización. A continuación, se explica su funcionamiento:
La función devuelve una nueva promesa que toma dos parámetros: resolve y reject. Estos parámetros se utilizan para gestionar el resultado asíncrono del proceso de tokenización.
```js Validar y tokenizar el método de pago lines icon="code" theme={null}
const id = "ggMoeO2K3G";
const validationResults = await FTCaptures.validate(id);
if (validationResults.hasErrors) {
// Manejar errores de validación
console.error("Errores de validación:", validationResults);
return;
}
const tokenizationResult = await FTCaptures.tokenize(id);
// El token de la tarjeta es el valor del campo `number` del resultado.
const cardToken = tokenizationResult.number;
```
`tokenize()` devuelve los campos del formulario con los datos sensibles ya reemplazados: el token
de la tarjeta es el valor del campo `number` (un UUID). Es un token temporal — envíalo de
inmediato a tu backend para crear la tarjeta; no lo almacenes.
7. **Enviar el token al servidor**
Enviar el token al servidor.
# Integraciones
Source: https://docs.onepay.la/docs/integraciones/index
Automatiza tus cobros con nuestras integraciones.
## Integraciones
Integra con Siigo y OnePay para automatizar la generación de cobros y recibos de caja.
Integra usando la API de OnePay para diseñar flujos y experiencias personalizadas.
# Integración con Siigo
Source: https://docs.onepay.la/docs/integraciones/siigo
Guía paso a paso para integrar OnePay con Siigo, incluyendo configuración, administración y solución de problemas comunes.
**Puntos clave:**
* Obtención de credenciales API en Siigo
* Configuración en OnePay
* Creación y administración de métodos de pago en Siigo
* Importación y sincronización de facturas
* Requisitos para que una factura sea leída y enviada a cobro en OnePay
* Funcionamiento del módulo de facturas en OnePay
* Solución de problemas frecuentes
***
### **1. Obtención de credenciales API en Siigo**
Para conectar Siigo con OnePay, es necesario obtener las credenciales API:
1. Inicia sesión en Siigo.
2. Dirígete a la parte superior derecha y haz clic en el icono de "Configuración".
3. Busca la opción "Alianzas e Integraciones".
4. Selecciona "Credenciales de integración a plataformas digitales (Siigo API)".
5. Elige "Pasarela de pagos" como tipo de integración.
6. Obtén el usuario API y el Access Key.
### **2. Configuración en OnePay**
Una vez que tienes las credenciales API:
1. Comparte el usuario API y el Access Key con el equipo de soporte de OnePay para completar la integración.
2. Verifica que la conexión esté activa y funcionando correctamente.
### **3. Creación y administración de métodos de pago en Siigo**
Para asegurar una correcta conciliación de pagos:
1. En Siigo, accede a "Configuración" > "Contabilidad" > "Generales".
2. Selecciona "Formas de Pago en Documentos".
3. Crea métodos de pago según los que utilizará OnePay, como "OnePay Tarjeta de Crédito" o "OnePay Cuenta Bancaria".
4. Guarda los cambios para que OnePay pueda sincronizar esta información.
### **4. Importación y sincronización de facturas**
OnePay importa automáticamente las facturas de Siigo con deuda activa:
* Se sincronizan dos veces al día (9:00 a.m. y 12:00 p.m.).
* Solo se importan facturas creadas en los últimos dos días y con un número de celular válido.
* Para forzar una importación inmediata, accede a "Cobrar" en OnePay y haz clic en "Crear pagos desde Siigo".
### **5. Requisitos para que una factura sea leída y enviada a cobro en OnePay**
Para que OnePay pueda leer y enviar una factura a cobro, debe cumplir con los siguientes requisitos:
* La factura debe estar creada como una venta a crédito.
* Debe tener una deuda pendiente.
* El cliente asociado a la factura debe contar con un número de celular válido registrado en Siigo.
* La factura debe haber sido creada dentro de los últimos dos días.
### **6. Funcionamiento del módulo de facturas en OnePay**
El módulo de facturas en OnePay permite monitorear los estados de creación y conciliación de los recibos de caja. Los estados más comunes son:
* **Creado:** La factura fue importada exitosamente desde Siigo.
* **Conciliado:** El pago fue realizado en OnePay y la factura ha sido cerrada en Siigo.
* **Fallido:** Hubo un error en la conciliación, posiblemente porque la factura ya se pagó manualmente en Siigo o tiene datos incorrectos.
* **Cancelado:** La factura fue anulada en el proceso.
* **Pagado en sistema externo:** Indica que el pago se realizó fuera de OnePay.
### **7. Solución de problemas frecuentes**
* **No se importan las facturas:** Verifica que sean facturas de venta a crédito y que incluyan un número de celular válido.
* **No se concilian los pagos:** Asegúrate de que se hayan configurado correctamente los métodos de pago en Siigo.
* **Error en credenciales API:** Comprueba que el usuario API y el Access Key sean correctos y válidos.
### **8. Cómo funciona la integración entre OnePay y Siigo**
La integración entre OnePay y Siigo automatiza el proceso de cobro y conciliación de pagos:
1. OnePay lee las facturas con deuda desde Siigo.
2. Se envían las solicitudes de cobro a los clientes con los datos extraídos de Siigo.
3. Cuando el cliente realiza el pago, OnePay lo registra y genera un recibo de caja en Siigo para cerrar la deuda.
4. El módulo de facturas en OnePay actualiza el estado de cada transacción para monitorear el proceso.
# Resumen
Source: https://docs.onepay.la/docs/introduction/overview
Crea una cuenta y aprende como empezar a usar OnePay.
## Introducción
Revoluciona la forma en que tu empresa administra su dinero. Nuestra solución va más allá de simples transacciones: centraliza y optimiza cobranza, recaudos, conciliación y dispersión en una plataforma única, fácil e intuitiva.
# Empezar ahora
Source: https://docs.onepay.la/docs/introduction/quick-start
Crea tu cuenta en segundos y prueba OnePay sin complicaciones
## Registro
Para acceder a la plataforma completa el formulario de registro que se encuentra en la siguiente [página de registro](https://www.onepay.la/registro).
Si ya completaste el registro. Asegúrate de verificar tu cuenta. Si aún no lo has hecho, dirígete al apartado de verificación.
## Configura tus llaves
1. Ingresa a **Perfil → Desarrolladores → API Keys**.
2. Genera una llave `Secret` y una `Public` para el ambiente `test`.
3. Guarda las llaves en tu gestor de secretos. Nunca las publiques en repositorios.
## Realiza tu primer cobro
1. Desde el panel crea un cliente de prueba o usa el endpoint [`POST /customers`](/client/customers/create).
2. Registra un método de pago sandbox siguiendo la guía de [tarjetas de prueba](/client/cards/index).
3. Crea un cobro rápido con [`POST /payments`](/client/payments/create) o genera un link desde la consola.
4. Abre el link, aprueba el pago con los datos de prueba y verifica el resultado en el dashboard.
### Flujo del primer cobro
```mermaid theme={null}
sequenceDiagram
participant Dev as Tu Backend
participant API as OnePay API
participant Cliente as Cliente
participant Checkout as Checkout OnePay
Dev->>API: POST /customers (crear cliente)
API-->>Dev: customer_id
Dev->>API: POST /payments (crear pago)
API-->>Dev: payment_link
Dev->>Cliente: Enviar payment_link
Cliente->>Checkout: Abrir link de pago
Checkout->>Cliente: Formulario de pago
Cliente->>Checkout: Ingresar datos y confirmar
Checkout->>API: Procesar pago
API-->>Checkout: Pago aprobado
API->>Dev: Webhook payment.approved
Checkout-->>Cliente: Confirmación
```
## Activa webhooks
* Dirígete a **Desarrolladores → Webhooks** y registra la URL de tu servidor.
* Copia el secreto generado; lo necesitarás para validar la firma con el header `x-webhook-token`.
* Responde `200 OK` para confirmar la recepción de cada evento.
* Consulta la [guía completa de webhooks](/guides/implementar-webhooks) para ver ejemplos de verificación HMAC-SHA256.
## Checklist para ir a producción
* [ ] Subiste la documentación legal en **Configuración → Información de la compañía**.
* [ ] Probaste los casos de éxito, error e idempotencia en ambiente `test`.
* [ ] Configuraste alertas en tus webhooks y deduplicas por `event.type` + el `id` del recurso para evitar procesar dos veces el mismo evento (en `connect_link.completed` la clave lleva además `connect_link.completed`, porque un link multiuso se completa varias veces con el mismo id).
* [ ] Activaste los métodos de pago que usarás en vivo.
# Transferir
Source: https://docs.onepay.la/docs/transfers/index
```mermaid theme={null}
stateDiagram-v2
[*] --> Scheduled
Scheduled --> ToProcess: Iniciar proceso
ToProcess --> Processing: Procesar
Processing --> Processed: Completar
Processing --> Failed: Fallar
ToProcess --> Failed: Fallar
Scheduled --> Cancelled: Cancelar
ToProcess --> Cancelled: Cancelar
RequireApproval --> ToProcess: Aprobar
RequireApproval --> Cancelled: Cancelar
Processed --> [*]
Failed --> [*]
Cancelled --> [*]
```
## **1. Introducción**
OnePay ofrece dos tipos de transferencias para sus usuarios: **Transferencias ACH** y **Transferencias Turbo**. Estas opciones permiten enviar dinero a terceros con diferentes tiempos de acreditación y costos asociados.
Este documento describe el funcionamiento, tiempos de procesamiento y estructura de costos de cada tipo de transferencia.
***
## **2. Tipos de Transferencias**
### **2.1. Transferencias ACH**
Las transferencias ACH se ejecutan a través de los ciclos ACH de los bancos. Estos ciclos determinan cuándo se procesan y acreditan los fondos.
#### **Flujo de una transferencia ACH:**
1. OnePay recibe la solicitud de transferencia del usuario.
2. La transferencia se emite en el próximo ciclo ACH disponible.
3. El banco suele tardar **dos ciclos ACH** en acreditar los fondos al destinatario.
4. Luego, el banco tarda **otros dos ciclos ACH** en notificar a OnePay que la transferencia fue exitosa.
**Tiempo estimado total:**
* En promedio, una transferencia ACH toma **cuatro ciclos ACH** en completarse.
* Dependiendo de la hora de emisión y del banco receptor, esto puede equivaler a **unas pocas horas o hasta un día hábil**.
***
### **2.2. Transferencias Turbo**
Las transferencias Turbo son transacciones que se ejecutan directamente desde los bancos, sin depender de los ciclos ACH, lo que permite una acreditación más rápida.
#### **Características de las Transferencias Turbo:**
* El dinero se transfiere a cuentas del mismo banco del destinatario.
* Se acreditan en un promedio de **30 minutos a 1 hora**.
* Los tiempos pueden variar según las condiciones del banco.
#### **Cuándo elegir una Transferencia Turbo:**
* Cuando se requiere una acreditación más rápida.
* Si el destinatario tiene cuenta en el mismo banco que OnePay usa para la dispersión.
***
## **3. Costos de Transferencias**
Las transferencias en OnePay tienen dos tipos de costos:
### **1. Comisión fija**
* Se cobra por cada intento de transferencia, sin importar si la transacción es exitosa o no.
* Este costo **no es reembolsable** en caso de fallo, ya que el banco o el ciclo ACH cobra por el intento de envío de dinero.
### **2. Comisión porcentual**
* Es un porcentaje del monto transferido.
* Si la transferencia falla, este costo **se reembolsa** al usuario.
#### **Ejemplo de costos en una transferencia fallida:**
Si se envía una transferencia de \$1,000,000 con:
* **Comisión fija:** \$5,000
* **Comisión porcentual:** 0.5% (\$5,000)
Si la transferencia falla:
* **El usuario pierde la comisión fija (\$5,000).**
* **Se le devuelve la comisión porcentual (\$5,000).**
***
## **4. Consideraciones Finales**
* **Las transferencias ACH son más económicas pero pueden tardar hasta un día hábil en procesarse.**
* **Las transferencias Turbo son más rápidas, pero dependen del banco y pueden tener costos adicionales.**
* **En caso de fallos, la comisión fija no se devuelve, pero la comisión porcentual sí.**
Con esta información, los usuarios de OnePay pueden elegir la mejor opción de transferencia según sus necesidades.
***
## **5. ANS**
Conoce más sobre las ANS y cómo funcionan.
# Autenticación
Source: https://docs.onepay.la/docs/verification/authentication
Verificación de identidad del representante legal.
El representante legal recibirá un **correo electrónico** o un mensaje por **WhatsApp** con las instrucciones para completar el proceso de verificación de identidad, que incluirá el envío de una selfie y una fotografía de su documento de identidad.
Este paso es esencial para garantizar que no existe una posible suplantación y así ofrecer una infraestructura de pagos segura para cualquier usuario en nuestra plataforma.
¡Asegúrate de contar con una **correcta iluminación** al momento de tomar las **fotografías**!
# Documentos digitales
Source: https://docs.onepay.la/docs/verification/documents
Carga los documentos solicitados para el debido análisis de la compańía.
Cualquier irregularidad en la autenticidad de los documentos solicitados resultará en el bloqueo permanente de la compañía y de su representante legal.
#### Documentos requeridos
A continuación se encuentran los documentos que se requerirá para el proceso de verificación.
Documento menor a 30 días.
Registro único tributario de la compañía.
Documento menor a 30 días emitido por el banco principal de la compañía.
Foto o documento escaneado del representante legal de la compañía por ambos lados.
Este paso es esencial para validar la identidad de tu empresa y garantizar que disfrutes de una experiencia óptima en nuestra plataforma.
¡Asegúrate de que los documentos tengan una **buena definición** y **calidad** antes de subirlo!
# Información legal
Source: https://docs.onepay.la/docs/verification/legal-info
Ingresa la información de la compańía y representante legal para su revisión.
Completa detenidamente la información para proceder con la verificación y activación de tu cuenta. Este proceso tomará menos de 5 minutos y a continuación encontrarás la información que será necesaria para completar este paso.
Estos datos serán definitivos y no podrán modificarse en el futuro.
#### Información requerida
A continuación se encuentran la información que se requerirá en el formulario legal de la compañía.
En esta sección agregaras los datos a detalle de la empresa.
En esta sección agregaras la información y el documento del representante legal de la compañía.
Información de contacto de la empresa para comunicar novedades, beneficios y también la información de las redes sociales de la empresa.
Información de la cuenta bancaria a nombre de la compañía a la cual se realizaran desembolsos del dinero recaudado.
Este paso es esencial para conocer tu empresa y garantizarte una correcta experiencia con tus clientes.
¡Asegúrate de que los **datos estén correctos** antes de ir al siguiente paso!
# Empezar proceso
Source: https://docs.onepay.la/docs/verification/overview
Completar el proceso para verificar tu cuenta tomará 5 minutos.
Ingresa la información requerida en la sección **Configuración** de la plataforma o haz clic [aquí](https://admin.onepay.la/settings) para acceder directamente.
Completa el formulario con la información de la compañía, representante legal, contacto y el banco de la compañía.
Los documentos requeridos son RUT, Camara de comercio (-30 días), C.C. del representante legal y el certificado bancario de la compañía.
Debe cumplirse una verificación facial del representante legal de la compañía registrada.
Una vez aprobada la revisión del formulario y de los documentos, se enviará la notificación en un plazo máximo de un día hábil
# Revisión
Source: https://docs.onepay.la/docs/verification/review
La revisión puede tomar hasta un día hábil.
El proceso de revisión y verificación de la compañía es un proceso no automatizado que busca garantizar la seguridad para todos los usuarios de OnePay.
Una vez **verificada** tu cuenta, recibirás una notificación por **correo electrónico**.
# Cobrar con débito directo
Source: https://docs.onepay.la/guides/cobrar-debito
Debita automáticamente tarjetas de crédito/débito o cuentas bancarias autorizadas.
## ¿Qué vas a lograr?
Al terminar esta guía podrás debitar directamente tarjetas o cuentas bancarias que tus clientes hayan autorizado previamente, sin necesidad de que el cliente interactúe con un link de pago.
El débito directo requiere que el cliente haya **autorizado** previamente el método de pago. Este flujo es ideal para cobros recurrentes, suscripciones o pagos donde ya tienes la autorización del cliente.
## Prerrequisitos
* Cuenta de OnePay verificada con llaves API
* Un cliente registrado con un método de pago autorizado (tarjeta o cuenta bancaria)
## ¿Cuándo usar Charges vs Payments?
| | Payment (Solicitud) | Charge (Cargo) |
| -------------- | --------------------------------- | ------------------------------------- |
| **El cliente** | Recibe un link y elige cómo pagar | No interactúa, el cobro es automático |
| **Requiere** | Solo monto y título | Cliente + método de pago autorizado |
| **Ideal para** | Cobros únicos, facturas | Cobros recurrentes, suscripciones |
## Flujo: Debitar una tarjeta
```mermaid theme={null}
sequenceDiagram
participant Tu App
participant OnePay API
participant Banco
Tu App->>OnePay API: POST /customers
OnePay API-->>Tu App: customer_id
Tu App->>OnePay API: POST /cards (con authorization: true)
OnePay API-->>Tu App: card_id
Tu App->>OnePay API: POST /charges
OnePay API->>Banco: Procesa débito
Banco-->>OnePay API: Aprobado/Rechazado
OnePay API-->>Tu App: charge (status)
alt Aprobado
OnePay API->>Tu App: Webhook charge.paid
else Rechazado
OnePay API->>Tu App: Webhook charge.failed
end
```
```bash theme={null}
curl https://api.onepay.la/v1/customers \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cliente-001" \
-d '{
"user_type": "natural",
"first_name": "María",
"last_name": "López",
"email": "maria@ejemplo.com",
"phone": "+573201112233",
"document_type": "CC",
"document_number": "1060500333"
}'
```
Guarda el `id` del cliente para los siguientes pasos.
Si capturas datos de tarjeta directamente, debes cumplir con PCI DSS. Usa el [SDK Elements](/docs/elements/introduction) para capturar datos de forma segura y obtener un token.
```bash theme={null}
curl https://cards.onepay.la/v1/cards \
-X POST \
-H "Authorization: Bearer pk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"card_number": "4111111111111111",
"expiration_year": "29",
"expiration_month": "12",
"ccv": "123",
"holder_name": "MARIA LOPEZ",
"customer_id": "CUSTOMER_ID",
"authorization": true
}'
```
Las tarjetas se crean en un dominio diferente (`cards.onepay.la`) por cumplimiento PCI DSS.
```bash theme={null}
curl https://api.onepay.la/v1/charges \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cargo-001" \
-d '{
"title": "Mensualidad Enero",
"customer_id": "CUSTOMER_ID",
"amount": 85000,
"card_id": "CARD_ID"
}'
```
La respuesta incluye el estado del cargo:
```json theme={null}
{
"id": "9e5ccd4a-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "succeeded",
"amount": 85000,
"title": "Mensualidad Enero",
...
}
```
Estados posibles: `succeeded`, `declined`, `pending`.
## Flujo: Debitar una cuenta bancaria
Mismo paso que el flujo de tarjeta (ver arriba).
```bash theme={null}
curl https://api.onepay.la/v1/accounts/banks \
-H "Authorization: Bearer sk_test_xxx"
```
```bash theme={null}
curl https://api.onepay.la/v1/accounts \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cuenta-001" \
-d '{
"customer_id": "CUSTOMER_ID",
"bank_id": "BANK_ID",
"subtype": "SAVINGS",
"account_number": "123456789",
"authorization": true
}'
```
El campo `authorization` debe ser `true` para poder debitar la cuenta posteriormente. Sin autorización, la cuenta se crea pero no podrás cobrar.
```bash theme={null}
curl https://api.onepay.la/v1/charges \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cargo-cuenta-001" \
-d '{
"title": "Mensualidad Enero",
"customer_id": "CUSTOMER_ID",
"amount": 85000,
"account_id": "ACCOUNT_ID"
}'
```
Implementa el [Webhook de cargos](../client/webhooks/charges) para recibir la notificación cuando el cargo se procese.
## Usar escenarios de prueba
En ambiente test, puedes simular diferentes resultados usando `test_scenario`:
```json theme={null}
{
"test_scenario": "INSUFFICIENT_FUNDS"
}
```
Consulta todos los [escenarios de prueba](/client/charges/scenarios) disponibles.
## Errores comunes
| Error | Causa | Solución |
| --------------------------- | ---------------------------------------- | -------------------------------------------- |
| `ACCOUNT_IS_NOT_AUTHORIZED` | La cuenta no tiene `authorization: true` | Crea la cuenta con `authorization: true` |
| `INSUFFICIENT_FUNDS` | Fondos insuficientes | Notifica al cliente y reintenta más tarde |
| `CARD_EXPIRED` | Tarjeta expirada | Solicita al cliente actualizar la tarjeta |
| `validation_error` | Falta `customer_id` o método de pago | Verifica que envías `card_id` o `account_id` |
## Siguiente paso
Flujos detallados para tarjetas, cuentas ACH, Nequi y Daviplata.
Vincula billeteras digitales para débitos automáticos.
Automatiza cobros periódicos con suscripciones.
# Cobrar con link de pago
Source: https://docs.onepay.la/guides/cobrar-link-pago
Envía un cobro por WhatsApp, email, portal de pagos o comparte un link directo.
## ¿Qué vas a lograr?
Al terminar esta guía podrás crear cobros y enviarlos a tus clientes por múltiples canales. Todo se hace con un solo endpoint (`POST /payments`), y el canal de entrega depende de los campos que envíes.
## Prerrequisitos
* Cuenta de OnePay creada y verificada
* Llaves de API generadas ([ver cómo](/docs/introduction/quick-start))
* Webhooks configurados ([ver cómo](/client/webhooks/index))
## ¿Qué canal necesitas?
| Quiero... | Campo clave | ¿Qué sucede? |
| ----------------------------------------- | ------------------------------- | --------------------------------------- |
| Cobrar por **WhatsApp** | `phone` | El cliente recibe el link por WhatsApp |
| Cobrar por **Email** | `email` | El cliente recibe el link por correo |
| Crear un **link de pago** (monto fijo) | `amount` | Se genera un link con monto predefinido |
| Crear un **link de pago** (monto abierto) | Sin `amount` | El cliente ingresa el monto |
| Crear una **referencia** para el portal | `reference` | El cliente busca su cobro en el portal |
| **Todos los canales** | `phone` + `email` + `reference` | Se envía por todos los canales |
Para ver ejemplos detallados de cada caso, consulta los [Casos de uso de cobros](/client/use-cases/payments).
## Diagrama de flujo
```mermaid theme={null}
sequenceDiagram
participant Tu App
participant OnePay API
participant Cliente
participant Webhook
Tu App->>OnePay API: POST /payments
OnePay API-->>Tu App: payment_link
OnePay API->>Cliente: WhatsApp / Email (si aplica)
Cliente->>OnePay API: Abre link y paga
OnePay API->>Webhook: payment.approved
Webhook->>Tu App: Notificación de pago exitoso
```
## Paso a paso
Usa `POST /payments` con los campos que necesites según el canal de entrega:
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: pago-whatsapp-001" \
-d '{
"amount": 150000,
"title": "Factura #1234",
"phone": "+573201112233",
"currency": "COP"
}'
```
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: pago-email-001" \
-d '{
"amount": 150000,
"title": "Factura #1234",
"email": "cliente@ejemplo.com",
"currency": "COP"
}'
```
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: pago-link-001" \
-d '{
"amount": 150000,
"title": "Factura #1234",
"currency": "COP"
}'
```
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: pago-abierto-001" \
-d '{
"title": "Donación Fundación ABC",
"currency": "COP"
}'
```
```bash theme={null}
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: pago-portal-001" \
-d '{
"amount": 250000,
"title": "Cuota Apartamento 401",
"reference": "APTO-401-ENE-2025",
"currency": "COP"
}'
```
En la respuesta recibirás un objeto con el `payment_link`:
```json theme={null}
{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"amount": 150000,
"status": "pending",
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
...
}
```
* Si enviaste `phone`: el cliente recibe el link automáticamente por WhatsApp.
* Si enviaste `email`: el cliente recibe el link por correo electrónico.
* Si enviaste `reference`: el cliente puede buscar el cobro en el [portal de pagos](/docs/config/portal).
* Si no enviaste ninguno: copia `payment_link` y compártelo manualmente.
Al abrir el link, el cliente verá una página de pago con los métodos habilitados. Si el link es de monto abierto, el cliente ingresará el monto antes de pagar.
Cuando el pago se complete, recibirás un webhook `payment.approved`:
```json theme={null}
{
"payment": {
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"status": "succeeded",
"amount": 150000
},
"event": {
"type": "payment.approved",
"timestamp": 1689262934,
"environment": "test"
}
}
```
## Opciones adicionales
### Configurar métodos de pago
Usa el campo `allows` para controlar qué métodos de pago estarán disponibles en el link:
```json theme={null}
{
"allows": {
"cards": true,
"pse": true,
"accounts": false,
"wallets": true,
"breb": true
}
}
```
### Establecer fecha de expiración
```json theme={null}
{
"expiration_date": "2025-12-31 23:59:59"
}
```
### Redireccionar después del pago
```json theme={null}
{
"redirect_url": "https://tuapp.com/pago-exitoso"
}
```
## Errores comunes
| Error | Causa | Solución |
| --------------------------- | ------------------------------- | ---------------------------------------------- |
| `validation_error` (10001) | Falta el campo `title` | Asegúrate de enviar al menos el `title` |
| `idempotency_error` (10003) | Falta el header `x-idempotency` | Agrega un token de idempotencia único |
| Pago expirado | El cliente no pagó a tiempo | Crea un nuevo cobro o ajusta `expiration_date` |
## Siguiente paso
Revisa la referencia completa de cada caso de uso de cobros.
Debita automáticamente tarjetas o cuentas bancarias autorizadas.
# Conceptos clave
Source: https://docs.onepay.la/guides/conceptos-clave
Entiende los conceptos fundamentales de OnePay antes de integrar.
## Flujo del dinero en OnePay
```mermaid theme={null}
graph LR
A[Cliente paga] -->|Payment / Charge| B[Balance OnePay]
B -->|Cashout| C[Cuenta bancaria destino]
B -->|Split| D[Múltiples destinatarios]
```
Tu cuenta OnePay funciona como un intermediario: los fondos que cobras se acumulan en tu balance y desde ahí puedes dispersarlos a cuentas bancarias de terceros.
## ¿Cómo cobrar? Payment vs Charge vs Invoice
OnePay ofrece tres formas de cobrar. Cada una se adapta a un caso de uso diferente:
### Payment (Solicitud de cobro)
El **Payment** es una solicitud que envías a tu cliente para que pague. OnePay genera un link de pago donde el cliente elige su método de pago.
| Característica | Detalle |
| ------------------------- | ------------------------------------------------- |
| **Endpoint** | `POST /payments` |
| **El cliente interactúa** | Sí, abre un link y paga |
| **Métodos disponibles** | Tarjeta, PSE, Nequi, Daviplata, Bre-B |
| **Ideal para** | Cobros únicos, facturas, pagos por WhatsApp/email |
### Charge (Cargo / Débito directo)
El **Charge** debita automáticamente un método de pago que el cliente ya autorizó. No requiere interacción del cliente.
| Característica | Detalle |
| ------------------------- | ------------------------------------------------------ |
| **Endpoint** | `POST /charges` |
| **El cliente interactúa** | No, el cobro es automático |
| **Requiere** | `customer_id` + `card_id` o `account_id` autorizados |
| **Ideal para** | Cobros recurrentes, suscripciones, débitos automáticos |
### Invoice (Factura)
La **Invoice** es un documento de cobro que genera automáticamente un Payment asociado. Útil para sistemas de facturación.
| Característica | Detalle |
| -------------------------- | ---------------------------------------------- |
| **Endpoint** | `POST /invoices` |
| **Genera automáticamente** | Un Payment con link de pago |
| **Ideal para** | Facturación electrónica, conciliación contable |
**Regla rápida**: Si tu cliente debe elegir cómo pagar, usa **Payment**. Si ya tienes autorización para cobrar, usa **Charge**. Si necesitas trazabilidad contable, usa **Invoice**.
## ¿Cómo pagar? Tipos de dispersión
Las dispersiones (cashouts) son transferencias de dinero desde tu balance OnePay a cuentas bancarias de terceros.
| Tipo | Velocidad | Destinatarios | Costo |
| ----------- | ---------------- | ------------------------------------- | ---------- |
| **ACH** | 1-3 días hábiles | Personas naturales y jurídicas | Menor |
| **TURBO** | Menos de 2 horas | Personas naturales y jurídicas | Intermedio |
| **INSTANT** | Inmediata | Solo personas naturales con Transfiya | Mayor |
## Recursos principales
Estos son los objetos principales con los que interactuarás en la API:
### Customer (Cliente)
Representa a una persona natural o jurídica. Es el objeto central al que se asocian métodos de pago, cobros y dispersiones.
```
Customer
├── Accounts (Cuentas bancarias)
├── Cards (Tarjetas)
├── Payments (Cobros recibidos)
└── Cashouts (Dispersiones enviadas)
```
### Account (Cuenta bancaria)
Representa una cuenta bancaria asociada a un cliente. Se usa para:
* **Débitos**: Cobrar directamente de la cuenta (requiere `authorization: true`)
* **Transferencias**: Enviar dinero a la cuenta (no requiere autorización)
* **Billeteras digitales**: Vincular Nequi o Daviplata
### Card (Tarjeta)
Representa una tarjeta de crédito o débito tokenizada. Se crea en un dominio separado (`cards.onepay.la`) por cumplimiento PCI DSS.
### Subscription (Suscripción)
Automatiza cobros recurrentes según un plan definido. Maneja automáticamente reintentos de pago fallidos.
## Ambientes
OnePay usa la **misma URL base** para sandbox y producción:
```
https://api.onepay.la/v1
```
La diferencia está en las llaves API:
* `sk_test_xxx` / `pk_test_xxx` → Ambiente de pruebas (sandbox)
* `sk_live_xxx` / `pk_live_xxx` → Ambiente de producción
Los datos de test y producción están completamente aislados. Clientes, cuentas y transacciones creados en test no existen en producción.
## Autenticación
Todas las peticiones requieren un header `Authorization` con tu llave secreta:
```
Authorization: Bearer sk_test_xxx
```
Existen dos tipos de llaves:
* **Secret Key** (`sk_`): Para operaciones del backend (cobros, dispersiones, consultas)
* **Public Key** (`pk_`): Para operaciones del frontend (tokenización de tarjetas)
**Nunca** expongas tu Secret Key en el frontend o en repositorios públicos.
## Idempotencia
Las operaciones que crean recursos (POST) requieren un header `x-idempotency` con un token único. Esto previene duplicados si una petición se reenvía por error de red:
```
x-idempotency: pago-factura-1234
```
Si envías la misma petición con el mismo token de idempotencia, OnePay retornará el resultado original sin crear un recurso duplicado.
## Moneda y montos
* La moneda por defecto es **COP** (Peso colombiano)
* Los montos se envían en **pesos** (no en centavos): `150000` = \$150.000 COP
* En la respuesta, `amount_label` muestra el monto formateado: `"$150.000"`
* La unidad no cambia por moneda ni por país
### La regla
**Si el campo se llama `amount`, va en pesos. Si el nombre termina en `_in_cents`, va en centavos.**
El nombre del campo es la unidad. Hay una sola excepción, marcada abajo.
### Dónde aplica cada unidad
Verificado contra el código en julio de 2026.
| Unidad | Campos |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Pesos** (unidades mayores) | `amount` de [cobros](/client/charges/create), [Bre-B](/client/charges/bre-b), [pagos](/client/payments/create) y su [actualización](/client/payments/update), [dispersiones](/client/cashouts/create), [balances](/client/movimientos/dispersion), [facturas](/client/invoices/create), [Nequi](/client/request-to-pay/nequi) y [DaviPlata](/client/request-to-pay/daviplata) · `partial_payment.min_amount` y `max_amount` de facturas · `splits[].split_value` de tipo `fixed` · `filter[amount]` · el `amount` y el `balance` de **todas** las respuestas y webhooks |
| **Centavos** | Todo campo cuyo nombre termina en `_in_cents`: `unit_amount_in_cents`, `min_amount_in_cents`, `max_amount_in_cents`, `remaining_amount_in_cents`, `reference_price_in_cents`, `amount_in_cents`, `filter[amount_in_cents]` |
| **Porcentaje entero** | `splits[].split_value` de tipo `percentage`: `10` es 10%. La suma no puede pasar de `100` |
**La excepción:** [`POST /customers/session/charges`](/client/customer-session/create-charge) recibe
su `amount` en **centavos** aunque el campo no lo diga en el nombre. Es el único endpoint donde
`amount` no son pesos, y convive con [`POST /charges`](/client/charges/create), que sí los recibe
en pesos. Si integras los dos, revisa cuál estás llamando.
Los campos `*_label` (`amount_label`, `balance_label`) son cadenas ya formateadas para mostrar
(`"$150.000"`). No los parsees para hacer cuentas: usa el campo numérico.
# Dispersar dinero (Payouts)
Source: https://docs.onepay.la/guides/dispersar-dinero
Envía dinero a cuentas bancarias de terceros con diferentes velocidades de transferencia.
## ¿Qué vas a lograr?
Al terminar esta guía podrás enviar dinero desde tu cuenta OnePay a cuentas bancarias de terceros. OnePay ofrece tres velocidades de transferencia según tus necesidades.
## Prerrequisitos
* Cuenta de OnePay verificada con llaves API
* Saldo disponible en tu cuenta OnePay
* Datos bancarios del destinatario
## Tipos de dispersión
| Tipo | Velocidad | Destinatarios | Descripción |
| ----------- | ------------------ | ------------------------------------- | ------------------------------- |
| **ACH** | 1-3 días hábiles | Personas naturales y jurídicas | Transferencia estándar bancaria |
| **TURBO** | Menos de 2 horas\* | Personas naturales y jurídicas | Transferencia rápida |
| **INSTANT** | Inmediata | Solo personas naturales con Transfiya | Transferencia instantánea |
\*El tiempo de las transferencias TURBO puede variar según el banco del destinatario y la hora de la transacción.
## Diagrama de flujo
```mermaid theme={null}
sequenceDiagram
participant Tu App
participant OnePay API
participant Banco destino
participant Webhook
Tu App->>OnePay API: POST /customers
OnePay API-->>Tu App: customer_id
Tu App->>OnePay API: GET /accounts/banks
OnePay API-->>Tu App: Lista de bancos
Tu App->>OnePay API: POST /accounts
OnePay API-->>Tu App: account_id
Tu App->>OnePay API: POST /cashouts
OnePay API-->>Tu App: cashout (pending)
OnePay API->>Banco destino: Procesa transferencia
Banco destino-->>OnePay API: Confirmación
OnePay API->>Webhook: cashout.completed
```
## Paso a paso
Registra a la persona o empresa que recibirá el dinero:
```bash theme={null}
curl https://api.onepay.la/v1/customers \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: dest-001" \
-d '{
"user_type": "natural",
"first_name": "Carlos",
"last_name": "Ramírez",
"email": "carlos@ejemplo.com",
"phone": "+573109998877",
"document_type": "CC",
"document_number": "1234567890"
}'
```
```bash theme={null}
curl https://api.onepay.la/v1/accounts/banks \
-H "Authorization: Bearer sk_test_xxx"
```
Esto retorna la lista de bancos con sus IDs. Usa el `id` del banco correspondiente al crear la cuenta.
Para dispersiones **no** necesitas `authorization: true`. La autorización solo es necesaria si vas a debitar la cuenta (cobrar).
```bash theme={null}
curl https://api.onepay.la/v1/accounts \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: cuenta-dest-001" \
-d '{
"customer_id": "CUSTOMER_ID",
"bank_id": "BANK_ID",
"subtype": "SAVINGS",
"account_number": "123456789"
}'
```
```bash theme={null}
curl https://api.onepay.la/v1/cashouts \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: dispersion-001" \
-d '{
"amount": 500000,
"customer_id": "CUSTOMER_ID",
"account_id": "ACCOUNT_ID",
"currency": "COP",
"method": "ACH",
"description": "Pago proveedor Enero 2025"
}'
```
Cambia `method` según la velocidad que necesites: `ACH`, `TURBO` o `INSTANT`.
Implementa el [Webhook de dispersiones](/client/webhooks/cashouts) para recibir la notificación cuando la transferencia se procese.
Estados posibles del cashout:
```mermaid theme={null}
stateDiagram-v2
[*] --> pending: Creado
pending --> processing: En proceso
processing --> processed: Exitoso
processing --> failed: Fallido
pending --> cancelled: Cancelado
```
## Verificar tu saldo
Antes de crear una dispersión, verifica que tienes saldo suficiente:
```bash theme={null}
curl https://api.onepay.la/v1/balance \
-H "Authorization: Bearer sk_test_xxx"
```
## Errores comunes
| Error | Causa | Solución |
| ------------------- | --------------------------------------------- | --------------------------------------------------------------- |
| Saldo insuficiente | No tienes fondos para cubrir la dispersión | Recarga tu cuenta o espera a que se acrediten cobros pendientes |
| `validation_error` | Falta `account_id`, `customer_id` o `method` | Verifica que envías todos los campos requeridos |
| Cuenta inválida | El número de cuenta no existe en el banco | Verifica los datos bancarios con el destinatario |
| Banco no disponible | El banco está fuera de servicio temporalmente | Reintenta más tarde o usa otro tipo de transferencia |
## Siguiente paso
Recibe notificaciones en tiempo real sobre tus dispersiones.
Recauda los fondos que luego dispersarás.
# Implementar webhooks
Source: https://docs.onepay.la/guides/implementar-webhooks
Recibe notificaciones en tiempo real sobre pagos, cargos, dispersiones y otros eventos.
## ¿Qué vas a lograr?
Al terminar esta guía tendrás un servidor que recibe y valida webhooks de OnePay, permitiéndote reaccionar en tiempo real a eventos como pagos aprobados, cargos exitosos o dispersiones completadas.
## Prerrequisitos
* Cuenta de OnePay con llaves API
* Un servidor web con una URL pública accesible (o [Ngrok](https://ngrok.com) para desarrollo local)
## ¿Cómo funcionan los webhooks?
```mermaid theme={null}
sequenceDiagram
participant Cliente
participant OnePay
participant Tu Servidor
Cliente->>OnePay: Realiza un pago
OnePay->>Tu Servidor: POST (evento + firma HMAC)
Tu Servidor->>Tu Servidor: Verifica firma
Tu Servidor-->>OnePay: 200 OK
Tu Servidor->>Tu Servidor: Procesa el evento
```
OnePay envía una solicitud HTTP POST a tu URL con:
* El payload del evento en el body
* Un header `x-webhook-token` con un token de autenticación
* Una firma HMAC-SHA256 para verificar la integridad
## Paso a paso
1. Ve a [Desarrolladores > Webhooks](https://admin.onepay.la/developers/webhooks) en el panel de OnePay
2. Agrega la URL de tu servidor (ej: `https://tuapp.com/webhooks/onepay`)
3. Copia el **secreto** generado y el **token de autenticación** - los necesitarás para verificar los webhooks
Tu servidor debe:
1. Recibir solicitudes POST
2. Verificar la firma HMAC
3. Responder `200 OK` inmediatamente
4. Procesar el evento de forma asíncrona
```javascript theme={null}
const express = require('express');
const crypto = require('crypto');
const app = express();
// El cuerpo SIN parsear: la firma se calcula sobre esos bytes exactos.
app.use(express.json({ verify: (req, res, buf) => { req.rawBody = buf; } }));
const WEBHOOK_SECRET = 'wh_tok_TU_SECRETO';
const WEBHOOK_TOKEN = 'wh_hdr_TU_TOKEN';
function safeEqual(a, b) {
const bufA = Buffer.from(a ?? '');
const bufB = Buffer.from(b ?? '');
return bufA.length === bufB.length && crypto.timingSafeEqual(bufA, bufB);
}
app.post('/webhooks/onepay', (req, res) => {
// 1. Verificar el token de autenticación
if (!safeEqual(req.headers['x-webhook-token'], WEBHOOK_TOKEN)) {
return res.status(401).send('Token inválido');
}
// 2. Verificar la firma HMAC contra el header `Signature`
const expected = crypto
.createHmac('sha256', WEBHOOK_SECRET)
.update(req.rawBody)
.digest('hex');
if (!safeEqual(req.headers['signature'], expected)) {
return res.status(401).send('Firma inválida');
}
// 3. Responder 200 inmediatamente
res.status(200).send('OK');
// 4. Procesar el evento (en producción, encólalo y sal de la request)
const event = req.body.event;
switch (event.type) {
case 'payment.approved':
console.log('Pago aprobado:', req.body.payment.id);
// Actualizar orden en tu base de datos
break;
case 'cashout.completed':
console.log('Dispersión procesada:', req.body.cashout.id);
break;
default:
console.log('Evento recibido:', event.type);
}
});
app.listen(3000);
```
```python theme={null}
import hmac
import hashlib
from flask import Flask, request
app = Flask(__name__)
WEBHOOK_SECRET = 'wh_tok_TU_SECRETO'
WEBHOOK_TOKEN = 'wh_hdr_TU_TOKEN'
@app.route('/webhooks/onepay', methods=['POST'])
def handle_webhook():
# 1. Verificar el token de autenticación
token = request.headers.get('x-webhook-token', '')
if not hmac.compare_digest(token, WEBHOOK_TOKEN):
return 'Token inválido', 401
# 2. Verificar la firma HMAC contra el header `Signature`.
# Sobre el cuerpo SIN parsear: si lo reserializas, la firma no coincide.
expected = hmac.new(
WEBHOOK_SECRET.encode(),
request.get_data(),
hashlib.sha256
).hexdigest()
if not hmac.compare_digest(request.headers.get('Signature', ''), expected):
return 'Firma inválida', 401
# 3. Encolar el evento y responder 200 de inmediato: el procesamiento
# no puede ocurrir dentro de la request (timeout de 10 s).
encolar_evento(request.get_json())
return 'OK', 200
def encolar_evento(body):
"""Publica el evento en tu cola (Celery, RQ, SQS…) y procésalo en un worker."""
event_type = body.get('event', {}).get('type')
if event_type == 'payment.approved':
print(f"Pago aprobado: {body.get('payment', {}).get('id')}")
# Actualizar orden en tu base de datos
elif event_type == 'cashout.completed':
print(f"Dispersión procesada: {body.get('cashout', {}).get('id')}")
if __name__ == '__main__':
app.run(port=3000)
```
Si estás desarrollando en local, usa Ngrok para exponer tu servidor:
```bash theme={null}
ngrok http 3000
```
Copia la URL generada (ej: `https://abc123.ngrok.io/webhooks/onepay`) y configúrala como URL del webhook en el panel de OnePay.
## Eventos disponibles
### Pagos
| Evento | Descripción |
| ------------------ | ---------------------------------------- |
| `payment.created` | Se creó una solicitud de pago |
| `payment.approved` | El cliente completó el pago exitosamente |
| `payment.rejected` | El pago fue rechazado |
| `payment.expired` | El link de pago expiró |
| `payment.deleted` | Se eliminó la solicitud de pago |
### Cargos (Débitos)
| Evento | Descripción |
| --------------- | --------------- |
| `charge.paid` | Cargo exitoso |
| `charge.failed` | Cargo rechazado |
### Dispersiones
| Evento | Descripción |
| -------------------- | ---------------------------------- |
| `cashout.created` | Dispersión creada |
| `cashout.processing` | Dispersión en proceso |
| `cashout.completed` | Dispersión completada exitosamente |
| `cashout.cancelled` | Dispersión cancelada |
| `cashout.rejected` | Dispersión rechazada |
### Suscripciones
| Evento | Descripción |
| ----------------------- | ----------------------------------- |
| `subscription.created` | Suscripción creada |
| `subscription.paid` | Se pagó una cuota de la suscripción |
| `subscription.canceled` | Suscripción cancelada |
### Cuentas
| Evento | Descripción |
| --------------------- | -------------------------------------- |
| `account.connected` | Cuenta bancaria vinculada exitosamente |
| `account.pending` | Cuenta pendiente de validación |
| `account.uncompleted` | La vinculación quedó incompleta |
Esta es una selección de los eventos más usados. El listado completo está en la [referencia de webhooks](/client/webhooks/index#eventos-disponibles).
## Estructura del payload
Cada webhook tiene la siguiente estructura:
```json theme={null}
{
"payment": {
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"amount": 150000,
"status": "succeeded",
...
},
"event": {
"type": "payment.approved",
"timestamp": 1689262934,
"environment": "test"
}
}
```
El nombre del objeto principal varía según el tipo de evento (`payment`, `charge`, `cashout`, `subscription`, etc.).
## Buenas prácticas
**Siempre** responde `200 OK` antes de procesar el evento. El timeout de entrega es de **10
segundos**: si tardas más, la entrega cuenta como fallida y OnePay la reintenta.
### Qué pasa si tu servidor falla
Si una entrega no responde `2xx`/`3xx` en 10 segundos, OnePay la reintenta espaciando los intentos
10 s, 30 s, 1 min, 2 min y 5 min: **6 intentos en total** —la entrega inicial y 5 reintentos— a lo
largo de unos 9 minutos. Un `4xx` de tu lado también dispara reintentos.
Además, dos procesos periódicos reenvían lo que quedó sin entregar, **con reglas distintas entre
sí**: la reconciliación da por terminal cualquier respuesta menor que `500` (un `4xx` tuyo cierra el
evento), mientras que el reenvío masivo solo excluye `2xx`/`3xx`, así que un evento que solo recibió
`4xx` puede volver a llegarte. Un endpoint que falla de forma sostenida se desactiva solo.
El detalle completo —calendario, reenvío automático, desactivación y cómo reactivar el endpoint—
está en [Entrega y reintentos](/client/webhooks/index#entrega-y-reintentos).
1. **Verifica la firma**: Siempre valida el HMAC antes de procesar el evento
2. **Idempotencia**: Usa el `event.type` + el ID del recurso para evitar procesar un evento duplicado. Los reintentos y los reenvíos automáticos hacen que recibir el mismo evento dos veces sea normal, no una excepción
3. **Responde rápido**: Retorna `200` inmediatamente y procesa el evento en segundo plano
4. **Registra los eventos**: Guarda un log de todos los webhooks recibidos para debugging
5. **Diferencia ambientes**: El campo `event.environment` indica si es `test` o `live`
## Errores comunes
| Problema | Causa | Solución |
| ------------------ | --------------------------------------- | ------------------------------------------------------------ |
| No recibo webhooks | URL incorrecta o inaccesible | Verifica que tu URL sea pública y responda a POST |
| Firma inválida | Secreto incorrecto o payload modificado | Verifica que usas el secreto correcto y no modificas el body |
| Eventos duplicados | Tu servidor respondió con error | Implementa idempotencia verificando el ID del evento |
| Webhooks en local | `localhost` no es accesible | Usa Ngrok u otra herramienta de tunneling |
## Siguiente paso
Crea tu primer cobro y recibe el webhook de pago aprobado.
Envía dinero y recibe el webhook de dispersión procesada.
# Conectar Claude o Cursor a OnePay
Source: https://docs.onepay.la/guides/mcp
Usa el servidor MCP de OnePay para que asistentes de IA como Claude o Cursor puedan consultar cobros, pagos, desembolsos y saldo de tu cuenta.
## ¿Qué es el servidor MCP de OnePay?
El **Model Context Protocol (MCP)** es un estándar abierto que permite conectar asistentes de IA a herramientas externas. OnePay expone un servidor MCP en `https://mcp.onepay.la` que les da acceso a tu información de pagos en tiempo real.
Una vez conectado, puedes hacerle preguntas a Claude como:
* *"¿Cuál es mi saldo disponible?"*
* *"Muéstrame los cobros pendientes de esta semana"*
* *"¿Qué pasó con el pago INV-2026-001?"*
* *"Lista los últimos 5 desembolsos fallidos"*
Todo usando tu llave de API existente — sin configurar nada adicional.
## Prerrequisitos
* Cuenta de OnePay con llaves de API ([ver cómo obtenerlas](/docs/introduction/quick-start))
* Claude Desktop, Claude.ai, Cursor u otro cliente MCP compatible
***
## Conectar Claude Desktop
**1.** Abre (o crea) el archivo de configuración:
```
~/Library/Application Support/Claude/claude_desktop_config.json
```
**2.** Agrega el servidor OnePay:
```json theme={null}
{
"mcpServers": {
"onepay": {
"transport": "http",
"url": "https://mcp.onepay.la",
"headers": {
"Authorization": "Bearer sk_live_TU_LLAVE_AQUI"
}
}
}
}
```
**3.** Reinicia Claude Desktop.
Verás el ícono de herramientas (🔧) en el chat — significa que OnePay está conectado.
Usa tu llave **`sk_live_`** para datos reales, o **`sk_test_`** para el ambiente de pruebas. La misma llave que usas en la API REST funciona aquí.
***
## Conectar Claude.ai (web)
**1.** Ve a **Settings → Integrations → Add MCP Server**
**2.** Ingresa los datos:
| Campo | Valor |
| ------------ | ------------------------- |
| URL | `https://mcp.onepay.la` |
| Header name | `Authorization` |
| Header value | `Bearer sk_live_TU_LLAVE` |
**3.** Guarda y abre un chat nuevo.
***
## Conectar Cursor
Agrega esto a `~/.cursor/mcp.json`:
```json theme={null}
{
"mcpServers": {
"onepay": {
"transport": "http",
"url": "https://mcp.onepay.la",
"headers": {
"Authorization": "Bearer sk_live_TU_LLAVE_AQUI"
}
}
}
}
```
***
## Herramientas disponibles
El servidor expone 9 herramientas de solo lectura:
| Herramienta | Descripción |
| ---------------- | ---------------------------------------------------------------------------------- |
| `get_balance` | Saldo disponible en la billetera |
| `list_charges` | Listar cargos (cobros Bre-B, PSE, tarjeta) con filtros de estado, fecha y búsqueda |
| `show_charge` | Detalle completo de un cargo por ID |
| `list_payments` | Listar cobros (payment requests) con filtros |
| `show_payment` | Detalle de un cobro por ID |
| `list_cashouts` | Listar desembolsos con filtros de estado y fecha |
| `show_cashout` | Detalle de un desembolso por ID |
| `list_customers` | Listar clientes con búsqueda por nombre, email o documento |
| `show_customer` | Detalle de un cliente por ID |
Todas las herramientas respetan el modo del ambiente automáticamente: las llaves `sk_test_` consultan datos de prueba y las `sk_live_` consultan producción.
***
## Ejemplos de conversación
Una vez conectado, puedes preguntar en lenguaje natural:
**Ver saldo:**
> "¿Cuánto tengo disponible en mi billetera de OnePay?"
**Revisar cobros:**
> "Lista los 10 cobros más recientes que están pendientes"
> "¿Hay algún cobro fallido esta semana?"
**Investigar un pago:**
> "Busca el cobro con referencia FACT-2026-0412"
> "¿Qué pasó con el cobro del cliente Juan García de ayer?"
**Revisar desembolsos:**
> "Muéstrame los desembolsos que están procesando hoy"
> "¿Cuántos desembolsos fallaron esta semana?"
***
## Verificar la conexión
Puedes probar directamente desde terminal:
```bash theme={null}
curl -s -X POST https://mcp.onepay.la \
-H "Authorization: Bearer sk_test_TU_LLAVE" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
| jq '.result.tools[].name'
```
Si la conexión es exitosa, verás los nombres de las 9 herramientas.
***
## Seguridad
* El servidor solo acepta llaves privadas (`sk_`). Las llaves públicas (`pk_`) son rechazadas.
* Todas las consultas están limitadas a los datos de tu empresa — no puedes acceder a datos de otras cuentas.
* El servidor es de **solo lectura**: no puede crear, modificar ni eliminar datos.
* Cada llamada queda registrada en tu historial de solicitudes de API en el panel de OnePay.
# Método QUERY
Source: https://docs.onepay.la/guides/metodo-query
Envía los filtros en el cuerpo de la petición, no en la URL, usando el método HTTP QUERY — sin sacar el GET de servicio.
## ¿Qué es?
`QUERY` es un método HTTP estandarizado en la RFC 10008: es como un `GET`, pero **lleva cuerpo**. Es **seguro** (solo lectura) e **idempotente**, así que se comporta igual que un `GET` — la única diferencia es que los filtros viajan en el cuerpo JSON en lugar de la query string.
Por ahora lo soportan **solo** los endpoints de listado que aparecen en la [tabla de abajo](#endpoints-que-lo-soportan); el resto de la API sigue aceptando únicamente `GET`. Y el `GET` de esos endpoints **sigue funcionando exactamente igual**: `QUERY` es una alternativa opcional, no un reemplazo.
## ¿Por qué usarlo?
Cuando filtras por un identificador del cliente —una **cédula**, un **teléfono**, un **email** o una **llave Bre‑B**— con `GET` ese dato queda en la URL (`?search=1234567890`), y las URLs terminan guardadas en logs de acceso, historiales y proxies intermedios. Con `QUERY` ese mismo filtro va en el **cuerpo**, fuera de la URL:
* **Privacidad**: los identificadores sensibles quedan fuera de la URL, y por tanto fuera de los access logs y del historial del navegador.
* **Sin límite de tamaño**: filtros grandes o anidados no chocan con el límite de longitud de la URL.
* **Semántica correcta**: al ser seguro e idempotente, clientes y proxies pueden reintentarlo sin riesgo de efectos secundarios.
## Endpoints que lo soportan
| Endpoint | Página |
| ------------------------------------------------ | ----------------------------------------------------------------- |
| `GET \| QUERY /charges` | [Listar cargos](/client/charges/list) |
| `GET \| QUERY /customers` | [Listar clientes](/client/customers/list) |
| `GET \| QUERY /utilities/direct-debits` | [Listar domiciliaciones](/client/utilities/auto-debit-list) |
| `GET \| QUERY /utilities/direct-debits/payments` | [Pagos de domiciliación](/client/utilities/direct-debit-payments) |
## Cómo se usa
Toma los mismos parámetros que enviarías en la query string (`filter[...]`, `sort`, `page`) y mándalos como JSON en el cuerpo, con el header `Content-Type: application/json`:
```bash cURL theme={null}
curl https://api.onepay.la/v1/customers \
-X QUERY \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"search": "1234567890",
"page": 1
}'
```
```javascript JavaScript theme={null}
const response = await fetch('https://api.onepay.la/v1/customers', {
method: 'QUERY',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
search: '1234567890', // Cédula del cliente — viaja en el cuerpo, no en la URL
page: 1
})
});
const data = await response.json();
console.log(data.data); // Array de clientes
```
```python Python theme={null}
import requests
url = "https://api.onepay.la/v1/customers"
headers = {
"Authorization": "Bearer sk_test_xxx",
"Content-Type": "application/json"
}
data = {
"search": "1234567890", # Cédula del cliente — viaja en el cuerpo
"page": 1
}
response = requests.request("QUERY", url, headers=headers, json=data)
data = response.json()
print(data["data"]) # Array de clientes
```
```php PHP theme={null}
"https://api.onepay.la/v1/customers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "QUERY",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_xxx",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"search" => "1234567890", // Cédula del cliente — viaja en el cuerpo
"page" => 1
])
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data["data"]); // Array de clientes
curl_close($ch);
?>
```
La respuesta es **idéntica** a la del `GET`: el mismo formato paginado (`data`, `current_page`, `total`, …).
Si un mismo filtro va tanto en la query string como en el cuerpo, **gana el de la query string**.
## Compatibilidad de clientes
`QUERY` funciona con cualquier cliente HTTP que permita métodos personalizados: `fetch`, `axios`, `requests` de Python, `curl`, Guzzle, entre otros. Algunas librerías muy antiguas no lo soportan; en ese caso, sigue usando `GET`, que **nunca dejará de funcionar**.
# Bienvenidos a OnePay
Source: https://docs.onepay.la/introduction
Bienvenidos a la documentación de OnePay, aquí podrás encontrar toda la información necesaria para interactuar con nuestra plataforma
## Crear una cuenta
Aquí podrás encontrar toda la información necesaria para crear una cuenta en nuestra plataforma, así como los pasos para completar la información y empezar a utilizar nuestra plataforma.
Para empezar a utilizar nuestra plataforma, debes crear una cuenta.
Una vez creada la cuenta, debes completar la información de la cuenta.
## Casos de uso
Cobra a tus clientes por WhatsApp, links de pago, QR y más.
Vincula cuentas de Nequi y Daviplata para débitos automáticos.
Transfiere fondos a cuentas bancarias de terceros.
## Integraciones
Integra con Siigo y OnePay para automatizar la generación de cobros y recibos de caja.
Integra usando la API de OnePay para diseñar flujos y experiencias personalizadas.