Flujos de excepción
Débito al originador: Flujo de excepción
Durante el proceso de preparación o confirmación del débito la Entidad Participante podría tener inconvenientes técnicos o errores por validación en reglas de negocio. Para este caso, se detalla el flujo de excepción y los servicios que interactuan
sequenceDiagram
autonumber
participant tb as Entidad Origen
participant ach as ACH En Línea
tb ->> +ach: Creación de la tx
Note over ach,tb: POST /v1/money-movement/transfers
ach -->> +tb: 200 OK
ach ->> +tb: Llama al prepare debit
status: prepare
Note over tb,ach: POST /v1/debits
tb -->> +ach: 200 OK
tb ->> +tb: Falla la preparación de fondos
tb ->>+ach: Confirma error o fallo en preparación del debit
status: failed
Note over tb,ach: POST /v1/money-movement/transfers/{id}/status
ach -->> +tb: 200 OK
ach ->> -tb: Llama al abort del debit
status: abort
Note over ach,tb: POST /v1/debits/{idDebit}/abort
tb -->>+ach: 200 OK
tb ->>+ach: Confirma abort
status: aborted
Note over tb,ach: POST /v1/money-movement/transfers/{id}/status
ach -->> +tb: 200 OK
ach ->> -tb: Confirma estafo final
status: rejected
Note over ach,tb: PUT v1/transfers/{id}
tb -->> +ach: 200 OK
Crédito al beneficiario: Flujo de excepción
Durante el proceso de preparación o confirmación del crédito la Entidad Participante podría tener inconvenientes técnicos o errores por validación en reglas de negocio. Para este caso, se detalla el flujo de excepción y los servicios que interactuan
sequenceDiagram
autonumber
participant ach as ACH En Línea
participant tb as Entidad Receptora
ach ->> tb: Llama al prepare credit
status: prepare
note over ach,tb: POST /v1/credits
tb -->> ach: 200 OK
tb ->> tb: Falla la preparación del crédito
tb ->>+ach: Confirma error o fallo en preparación del credit
status: failed
Note over tb,ach: POST /v1/money-movement/transfers/{id}/status
ach -->> +tb: 200 OK
ach ->>+tb: Llama al abort del credit
status: abort
Note over ach,tb: POST /v1/credits/{idCredit}/abort
tb -->>+ach: 200
tb ->> +ach: Confirma abort
Status: aborted
Note over tb,ach: POST /v1/money-movement/transfers/{id}/status
ach -->> +tb: 200 OK
ach ->> -tb: Confirma estado final
status: rejected
Note over ach,tb: PUT v1/transfers/{id}
tb -->> +ach: 200 OK
Las causales de rechazo que se describen a continuación, deben ser enviadas por la Entidad Participante dentro del proceso de excepción para la preparación de débito o del crédito. El código y descripción deberán ser enviados al servicio /v1/money-movement/transfers/{id}/status expuesto por ACH En-línea
Dominio: https://bank.apihub.crt.achcolombia.com.co POST v1/money-movement/transfers/{id}/status Campos de entrada
| Campo | Tipo | Validación | Longitud | Obligatoriedad |
|---|---|---|---|---|
| meta | Objeto | N/A | N/A | SI |
| requestId | cadena | UUID que identifica el mensaje. | Min 36 - Max 36 | SI |
| version | cadena | versión del protocolo de mensajería. valor fijo "1.0.0" | Min 1 Max 15 | SI |
| timestamp | fecha | Marca de tiempo de envío del mensaje | N/A | SI |
| data | objeto | N/A | N/A | SI |
| movementType | lista | Identificador del schema del flujo transaccional. Ver Tablas de referencia: "Valores para el campo movementType". | Lista | SI |
| status | cadena | Estado de la transacción. Ver Tablas de referencia: "Estados de las transacciones". | Lista | SI |
| creationDateTime | fecha | Momento en el que se confirma la preparación del débito o crédito | N/A | SI |
| debitId | cadena | Identificador del debit prepare, el banco debe enviar el valor que corresponde a la transferencia. Este valor fue entregado por ACH En-línea en el llamado al endpoint /v1/debits. | Min 1 Max 36 | COND Si la acción es un débito se debe informar este campo |
| coreId | cadena | Identificador interno del banco para la preparación del débito o crédito. | Min 1 Max 255 | SI |
| custom | objeto | N/A | N/A | COND Si el status = failed o aborted. Se debe informar este objeto con sus campos. |
| error | subobjeto | N/A | N/A | COND |
| code | cadena | Identificador del error. Ver tabla "VALORES PARA EL CAMPO CODE DEL STATUS". | Min 1 Max 36 | COND |
| description | cadena | Descripción del error | Min 1 Max 255 | COND |
Request ejemplo
curl --location 'https://url_ach/v1/money_movement/transfers/{id}/status' \
--header 'hash: 695ffdf84f0dad0c19e3b8b09a4565246c156d747ffb26149e4c2dc5d3b66ca1' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkZW1vLXVzdWFyaW8iLCJyb2xlIjoiYXBwLXRlc3QiLCJpYXQiOjE3MDAwMDAwMDAsImV4cCI6MTcwMDA4NjQwMH0.abc123xyz987fakeSignatureOnlyForDemoPurposes' \
--data '{
"meta": {
"requestId": "45cdaa41-b567-4057-9fb7-7240efdfb437",
"version": "1.0.0",
"timestamp": "2026-06-15T14:27:28.001"
},
"data": {
"movementType": "P2P-TRANSFER",
"status": "failed",
"creationDateTime": "2026-06-15T14:27:28.001",
"debitId": "deb_03rgXTmRB7aI7jomy",
"coreId": "13456278395678906789"
},
"custom": {
"error": {
"code": "bridge.account-not-found",
"description": "1039: Cuenta no encontrada"
}
}
}'
Response confirmación del rechazo
HTTP/1.1 200 OK
Content-Length: 0 Causales de rechazo
| Code | Description |
|---|---|
| bridge.account-not-found | 307: Cuenta no existe |
| bridge.account-not-found | 307: Numero Cuenta o Deposito Electronico Invalido |
| bridge.account-not-found | 307: La Identificacion no coincide con Cuenta o Deposito Electronico |
| bridge.account-not-found | 307: Tipo de cuenta errada |
| bridge.account-not-found | 307: Tipo de identificacion no coincide con Cuenta o Deposito Electronico |
| bridge.account-inactive | 307: Cuenta inactiva |
| bridge.account-insufficient-balance | 307: Fondos insuficientes |
| bridge.account-limit-exceeded | 313: Topes transaccionales excedidos |
| bridge.entry-rejected | 325: Cuenta o Deposito Electronico No Habilitado para recibir transacciones |
| bridge.entry-duplicated | 316: Ya existe una transaccion registrada con el mismo id |
| bridge.entry-timeout | 332: Timeout |
| bridge.fraud-detected | 322: Transaccion rechazada por prevencion fraude en Banco |
| bridge.ledger-failed | 332: Error interno en el banco |
| bridge.core-unreachable | 314: Banco fuera de servicio por mantenimiento o indisponibilidad |
| bridge.unexpected-core-error | 332: Error no identificado en el banco |
| bridge.unexpected-error | 332: Error inesperado durante el procesamiento de transaccion |
| bridge.core-access-invalid | 316: Error de acceso invalido en banco |
| bridge.transfer-information-invalid | 316: La informacion de la transferencia no es valida |
