Cómo acreditar al beneficiario
Acreditar el usuario destino
Una vez se confirma el débito de parte de la Entidad Originadora y la Entidad Receptora confirma la preparación del crédito, acreditar al usuario destino es el último paso en el procesamiento de la transferencia. Para realizar esta operación, ACH En Línea llama al endpoint v1/credits/{idCredit}/commit de la Entidad Receptora.
A continuación, se detallan las acciones involucradas, junto con ejemplos prácticos y consideraciones técnicas relevantes.
sequenceDiagram
autonumber
participant ach as ACH En Línea
participant tb as Entidad Receptora
ach ->> +tb: Llama al commit credit
Note over ach,tb: /v1/credits/{idCredit}/commit
tb ->> +tb: Realiza el crédito de fondos
tb -->> -ach: 200 OK
ach ->> ach: Finaliza la transacción
1. ACH En Línea llama al banco receptor para procesar la operación de commit del crédito
Para ejecutar la acreditación de recursos al beneficiario, ACH En Línea hace solicitud POST al endpoint v1/credits/{idCredit}/commit expuesto por la Entidad Receptora
Campos de entrada commit del crédito
| Campo | Tipo | Validación | Longitud | Mapeo de datos |
|---|---|---|---|---|
| meta | objeto | N/A | N/A | N/A |
| id | cadena | Identificador único de la transacción | Min 1 Max 36 | transfers.data.handle |
| status | cadena | Estado de la transacción. Ver tabla "VALORES PARA LAS ACCIONES Y ESTADOS (status)" | lista | meta.status |
| data | objeto | N/A | N/A | N/A |
| creditId | cadena | Identificador único del crédito que será aplicado. | Min 1 Max 255 | handle |
| movementType | lista | Identificador del schema del flujo transaccional | lista | transfers.data.schema |
| amountInformation | objeto | N/A | N/A | N/A |
| amount | decimal | Valor de la transacción en base 100 | (13,2) | amount |
| currency | lista | Símbolo de la moneda de la transacción | lista | transfers.data.claims.source.symbol.handle |
| source | objeto | N/A | N/A | N/A |
| personType | lista | Tipo de persona que hace la transacción | lista | transfers.data.claims.source.custom.entityType |
| document | objeto | N/A | N/A | N/A |
| number | cadena | Número de identificación del ordenante del pago | entero | transfers.data.claims.source.custom.documentNumber |
| type | lista | Tipo de identificación del ordenante del pago | lista | transfers.data.claims.source.custom.documentType |
| fullName | cadena | Nombre comercial, se usa para persona jurídica | Min 1 Max 160 | transfers.data.claims.source.custom.name |
| firstName | cadena | Primer nombre | Min 1 Max 40 | transfers.data.claims.source.custom.firstName |
| secondName | cadena | Segundo nombre | Min 1 Max 40 | transfers.data.claims.source.custom.secondName |
| firstLastName | cadena | Primer apellido | Min 1 Max 40 | transfers.data.claims.source.custom.firstLastName |
| secondLastName | cadena | Segundo apellido | Min 1 Max 40 | transfers.data.claims.source.custom.secondLastName |
| spbviCode | lista | Nombre del SPBVI origen | lista | transfers.data.claims.source.custom.spbviCode |
| accountInformation | objeto | N/A | N/A | N/A |
| accountId | cadena | Número de cuenta del origen de la transacción | Min 1 Max 34 | transfers.data.claims.target.handle |
| accountType | lista | Tipo de cuenta del origen de la transacción | lista | transfers.data.claims.target.handle |
| financialInstitutionId | entero | Identificador de la entidad destino | Min 1 Max 9 | transfers.data.claims.target.custom.participantCode |
| target | objeto | N/A | N/A | N/A |
| personType | lista | Tipo de persona que hace la transacción | lista | transfers.data.claims.target.custom.entityType |
| document | objeto | N/A | N/A | N/A |
| number | cadena | Número de identificación del ordenante del pago | entero | transfers.data.claims.target.custom.documentNumber |
| type | lista | Tipo de identificación del ordenante del pago | lista | transfers.data.claims.target.custom.documentType |
| fullName | cadena | Nombre comercial, se usa para persona jurídica | Min 1 Max 160 | transfers.data.claims.target.custom.name |
| firstName | cadena | Primer nombre | Min 1 Max 40 | transfers.data.claims.target.custom.firstName |
| secondName | cadena | Segundo nombre | Min 1 Max 40 | transfers.data.claims.target.custom.secondName |
| firstLastName | cadena | Primer apellido | Min 1 Max 40 | transfers.data.claims.target.custom.firstLastName |
| secondLastName | cadena | Segundo apellido | Min 1 Max 40 | transfers.data.claims.target.custom.secondLastName |
| targetSpbviCode | lista | Nombre del SPBVI origen | lista | transfers.data.claims.target.custom.targetSpbviCode |
| alias | objeto | N/A | N/A | N/A |
| aliasType | lista | Identificador del tipo de llave | lista | transfers.data.claims.target.custom.aliasType |
| aliasValue | cadena | Llave | Min 1 Max 92 | transfers.data.claims.target.custom.aliasValue |
| accountInformation | objeto | N/A | N/A | N/A |
| accountId | cadena | Número de cuenta del origen de la transacción | Min 1 Max 34 | transfers.data.claims.target.handle |
| accountType | lista | Tipo de cuenta del origen de la transacción | lista | transfers.data.claims.target.handle |
| financialInstitutionId | entero | Identificador de la entidad destino | Min 1 Max 9 | transfers.data.claims.target.custom.participantCode |
| qr | objeto | N/A | N/A | N/A |
| qrId | cadena | Identificador del QR | Min 35 Max 35 | transfers.data.claims.target.custom.idQr |
Request commit del credito
curl --location 'https://url_participante/v1/credits/{idCredit}/commit' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkZW1vLXVzdWFyaW8iLCJyb2xlIjoiYXBwLXRlc3QiLCJpYXQiOjE3MDAwMDAwMDAsImV4cCI6MTcwMDA4NjQwMH0.abc123xyz987fakeSignatureOnlyForDemoPurposes' \
--data '{...}' Data:
{
"meta": {
"id": "string",
"status": "string"
},
"data": {
"creditId": "string",
"movementType": ["lista"],
"amountInformation": {
"amount": "decimal",
"currency": ["lista"]
},
"source": {
"personType": ["lista"],
"document": {
"number": "string",
"type": ["lista"],
"fullName": "string",
"firstName": "string",
"secondName": "string",
"firstLastName": "string",
"secondLastName": "string"
},
"spbviCode": ["lista"],
"accountInformation": {
"accountId": "string",
"accountType": ["lista"],
"financialInstitutionId": "entero"
}
},
"target": {
"personType": ["lista"],
"document": {
"number": "string",
"type": ["lista"],
"fullName": "string",
"firstName": "string",
"secondName": "string",
"firstLastName": "string",
"secondLastName": "string"
},
"targetSpbviCode": ["lista"],
"alias": {
"aliasType": ["lista"],
"aliasValue": "string"
},
"accountInformation": {
"accountId": "string",
"accountType": ["lista"],
"financialInstitutionId": "entero"
},
"qr": {
"qrId": "string"
}
}
}
} 2. Acreditación de fondos al beneficiario
La Entidad Receptora procesa la acreditación de fondos al beneficiario.
3. Confirmación del crédito
Una vez la Entidad Participante Receptora efectúa el proceso del crédito al usuario receptor. Envía la respuesta al llamado del commit del crédito.
HTTP/1.1 200 OK
Content-Length: 0 4. Finalización de la transacción
Una vez ACH Colombia recibe la confirmación del crédito (response del commit) por parte de la Entidad Receptora. El sistema ACH En Línea deja en firme el estado final de la transferencia.
