Saltar al contenido principal

Transferencias, depósitos y retiros

Las tres operaciones de /api/v1/payments mueven dinero con doble partida contable y exigen la clave API con alcance payment:write y la cabecera Idempotency-Key.

OperaciónRutaCuentas
Transferencia internaPOST /api/v1/payments/transferOrigen y destino del mismo banco, misma moneda.
DepósitoPOST /api/v1/payments/depositSolo destino (el dinero viene de fuera).
RetiroPOST /api/v1/payments/withdrawalSolo origen.

Transferir entre cuentas​

curl -s -X POST https://api.banco.example/api/v1/payments/transfer \
-H "X-Api-Key: $FINORA_API_KEY" \
-H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{
"sourceAccountId": "3d0c4f0e-9c7f-4b8e-8c1a-0a5b5f1d2e11",
"destinationAccountId": "8b7e6d5c-4a3f-4e2d-9c1b-0a9f8e7d6c5b",
"amount": 500.00,
"currency": "VES",
"reference": "FACT-2026-001",
"description": "Pago de factura 2026-001"
}'
CampoObligatorioNotas
sourceAccountId, destinationAccountIdsíUUID de cuentas activas.
amountsíMayor que cero, hasta 15 enteros y 4 decimales.
currencysíISO 4217; debe coincidir con la de ambas cuentas.
referencenoHasta 100 caracteres. Una referencia ya usada en la cuenta responde 409 (duplicate-reference).
descriptionnoHasta 250 caracteres.

Respuesta 201 (o 200 si es una repetición idempotente):

{
"paymentId": "770e8400-e29b-41d4-a716-446655440222",
"status": "COMPLETED",
"amount": 500.00,
"currency": "VES",
"sourceAccountId": "3d0c4f0e-9c7f-4b8e-8c1a-0a5b5f1d2e11",
"destinationAccountId": "8b7e6d5c-4a3f-4e2d-9c1b-0a9f8e7d6c5b",
"reference": "FACT-2026-001",
"ledgerRef": "VCH-20261013-00042",
"executedAt": "2026-10-13T11:15:00-04:00",
"idempotencyKey": "550e8400-e29b-41d4-a716-446655440000"
}

ledgerRef correlaciona el pago con su asiento contable. status puede ser COMPLETED, PENDING, FAILED o REVERSED.

Depositar en una cuenta​

curl -s -X POST https://api.banco.example/api/v1/payments/deposit \
-H "X-Api-Key: $FINORA_API_KEY" \
-H "Idempotency-Key: 3e1b9d7f-0c5a-4f28-8b6e-2a4d6f8c0e13" \
-H "Content-Type: application/json" \
-d '{
"destinationAccountId": "3d0c4f0e-9c7f-4b8e-8c1a-0a5b5f1d2e11",
"amount": 1500.00,
"currency": "VES",
"externalReference": "CAJA-20261013-0042",
"description": "Depósito en efectivo",
"channel": "API"
}'

channel admite AGENCIA, ATM, API o INTERBANKING. externalReference (hasta 100 caracteres) sirve para conciliar con tu sistema.

Retirar de una cuenta​

curl -s -X POST https://api.banco.example/api/v1/payments/withdrawal \
-H "X-Api-Key: $FINORA_API_KEY" \
-H "Idempotency-Key: 8f2c4a6e-1b3d-4e5f-9a7c-0d2e4f6a8b19" \
-H "Content-Type: application/json" \
-d '{
"sourceAccountId": "3d0c4f0e-9c7f-4b8e-8c1a-0a5b5f1d2e11",
"amount": 300.00,
"currency": "VES",
"reference": "RET-20261013-001",
"description": "Retiro en ventanilla",
"channel": "AGENCIA"
}'

channel admite AGENCIA, ATM, API, WEB o MOBILE.

Reintentos seguros​

Errores​

HTTPSufijo de typeCuándo
400validation-error, invalid-idempotency-keyCampos inválidos o Idempotency-Key ausente.
404account-not-foundLa cuenta no existe. Hoy también cuando está bloqueada o cerrada.
409idempotency-key-reused, duplicate-referenceClave usada con otra petición, o referencia repetida en la cuenta.
422insufficient-fundsSaldo disponible insuficiente u otra regla de negocio.

Para transferencias hacia otros bancos, el core expone las rutas de /api/v1/interbank, que se documentan en la referencia.