Obtener una dispersión con su historia de transiciones
GET/payments/{id}Probar
La llamada la hace tu navegador, contra el servidor que elijas arriba. Si la documentación no está servida desde el mismo origen que la API, el navegador puede bloquear la respuesta por CORS: en ese caso abre estas páginas desde la propia API (/docs) o usa el curl de arriba.
const url = 'http://localhost:3000/v1/payments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url http://localhost:3000/v1/payments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'x-api-key: <x-api-key>'Scope payments:read. Devuelve events: cada transición de estado, con quién la provocó (actor) y por qué.
El ejemplo muestra el recorrido típico: el asiento se confirma (ledger_committed), el riel acepta de forma asíncrona (rail_accepted_async, sigue en submitted) y nuestro proceso de resolución cierra al consultar al riel (resolved_by_reaper). Entre el segundo y el tercer evento pasan segundos o minutos.
Authorizations
Sección titulada «Authorizations»Parameters
Sección titulada «Parameters»Path Parameters
Sección titulada «Path Parameters»Responses
Sección titulada «Responses»Pago
object
Presente en dispersiones a terceros
submitted = el riel la aceptó y está liquidando. Es el estado HABITUAL justo después de dispersar, porque el riel de bolívares es asíncrono. No reintentar: se cierra por webhook.
unknown = el riel no confirmó y no sabemos si pagó. NO reintentar: se resuelve consultando al proveedor y notificamos por webhook.
El comprobante que ve el beneficiario en su banco. null hasta que el envío se completa.
true si el asiento contable se revirtió
Historia de transiciones
object
Contexto de la transición. En una dispersión, methodRequested y methodUsed.
object
Example
{ "id": "89920401-26da-4f69-b57d-bc20e0366ce2", "customer_id": null, "beneficiary_id": "8ade3e33-6f1c-4d0a-9d33-2c6b0a41f7e2", "status": "settled", "status_reason": null, "source_asset": "BS", "source_amount": "5050000", "payout_asset": "BS", "payout_amount": "5000000", "fee_amount": "50000", "method": "pago_movil", "bank_reference": "012345678901", "compensated": false, "settled_at": "2026-08-31T19:06:44.120Z", "events": [ { "from_status": null, "to_status": "submitted", "reason": "ledger_committed", "actor": "api", "created_at": "2026-08-31T19:04:01.900Z" }, { "from_status": "submitted", "to_status": "submitted", "reason": "rail_accepted_async", "actor": "api", "created_at": "2026-08-31T19:04:02.551Z" }, { "from_status": "submitted", "to_status": "settled", "reason": "resolved_by_reaper", "actor": "reaper", "created_at": "2026-08-31T19:06:44.120Z" } ]}Error con código estable
object
object
Contexto estructurado del error cuando lo hay: qué límite se superó y de cuánto, qué campo es inválido, cuánto saldo había. No aparece en errores internos.
object
Código ESTABLE. Programa contra esto.
Example
{ "error": { "type": "invalid_request_error", "code": "insufficient_balance", "request_id": "req_8a0312ba896772bc441134cd" }}