Iniciar un Pago (ACH)

Visión General

Este endpoint permite iniciar un pago a través de la infraestructura Bre-B utilizando la API de Passport. Una solicitud exitosa crea el objeto de pago y devuelve los detalles de la transacción, incluyendo su estado y la información del destinatario.

Requisito

Detalles del Endpoint

Parámetro

Descripción

Endpoint

https://api.paas.sandbox.co.passportfintech.com/v1/payments/ach

Método

POST

Encabezados

Content-Type: application/json, Authorization

Autenticación

Token de Acceso (Bearer Token)

Cuerpo de la Solicitud

Parámetro

Tipo

Restricciones

Obligatario

Descripción

account_id

String


ID único de la cuenta desde la cual se realizará el pago.

recipient_id

String


ID único del destinatario ACH que recibirá el pago.

amount

Objeto


Define el valor y la moneda para la transacción.

value

String


Valor a transferir.

currency

String


Moneda de la transacción. Debe ser "COP".

description

String


No

Referencia para el pago: campo de texto libre que permite ingresar cualquier información adicional o personalizada relacionada con la transacción.

type

int


Código usado para el tipo de transacción en diferentes escenarios según la tabla:

Dispersión:

  • Dispersión Cuenta Ahorros: 32

  • Inscripción CR Cuenta Ahorro: 33

  • Dispersión Cuenta Corriente: 22

  • Inscripción CR Cuenta Corriente: 23

  • Dispersión Depósito Electrónico: 52

  • Inscripción Depósito Electrónico: 53

Nota

La notación amount.value hace referencia al campo value dentro del objeto amount.

Ejemplo de Solicitud

curl --location --request POST 'https://api.paas.sandbox.co.passportfintech.com/v1/payments/ach' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --data '{ "account_id": "1b095dbd-7d4b-46d5-8807-1d636482e48a", "recipient_id": "478b5ebe-290a-464b-9acf-352e70e2143d", "amount": { "value": "1000.00", "currency": "COP" }, "description": "Payment", "type": 32 }'

Cuerpo de la Respuesta

  • Código HTTP: 200 OK

  • Retorna los datos del pago junto con su ID único.

Ejemplo de Respuesta

{ "amount": { "value": "1000.00", "currency": "COP" }, "direction": "OUTBOUND", "status": "PENDING", "receiver": { "participant": { "name": "BANCOLOMBIA", "identification_number": "007" }, "owner": { "type": "BUSINESS", "identification_type": "NIT", "identification_number": "333556747", "name": "Passport Software SAS" }, "account": { "account_type": "ORDINARY", "account_number": "8809090909" } }, "account_id": "1b095dbd-7d4b-46d5-8807-1d636482e48a", "type": "ACH", "id": "8c2f8977-fddb-41d9-90e1-6c6e8c5634ec", "created_at": "2026-03-10T17:09:36.16Z", "updated_at": "2026-03-10T17:09:36.16Z", "sender": { "participant": { "identification_number": "890203088" }, "owner": { "type": "BUSINESS", "identification_type": "NIT", "identification_number": "123450016", "name": "Merchant I9TOS" }, "account": { "account_type": "ORDINARY", "account_number": "866000018" } } }
Importante
  1. El estado del pago será primero PENDING. Una vez que el pago se procese, cambiará a SETTLED.

  2. El id que aparece en la respuesta es el payment_id.

  3. Cuando realizas un pago ACH, este se reflejará en la llamada GET Account. El saldo pendiente (pending_balance)se actualizará. Una vez que el pago ACH sea procesado, disminuirá el saldo pendiente y se actualizará tu saldo disponible (available_balance).

Errores Comunes y Manejo

Código HTTP

Significado

Descripción

400 Bad Request

Datos inválidos

Faltan campos requeridos o contienen valores incorrectos.

401 Unauthorized

Token inválido

El token de acceso ha expirado o es inválido.

403 Forbidden

Acceso denegado

No tienes permisos para crear un pago.

500 Server Error

Error del servidor

Error inesperado al procesar el pago.

Buenas Prácticas

  • Verifica que los campos account_id y recipient_id correspondan a entidades válidas.

  • Monitorea el estado del pago (PENDING, SETTLED, etc.) para confirmar su procesamiento.

  • Implementa manejo de errores en tu integración para gestionar rechazos o demoras en el procesamiento.