Cómo aceptar la transferencia

Validación de aceptación por el banco destino

Una vez confirmado el débito, ACH En Línea ejecuta controles antifraude sobre la transferencia y contacta a la Entidad Receptora para solicitar la aceptación del pago (prepare credit). Este paso permite a la Entidad Receptora validar la información de la cuenta destino y confirmar que el pago puede ser recibido correctamente.

Durante esta etapa, la Entidad Receptora debe realizar las siguientes validaciones:

  1. Que la cuenta destino exista.
  2. Que la cuenta esté activa y habilitada para recibir pagos.
  3. Que los datos del beneficiario coincidan con los de la cuenta.
  4. Que el monto de la transferencia no supere los límites definidos por la Entidad Receptora.

La notificación de este paso lo realiza la Entidad Participante Receptora a través de la respuesta al llamado orquestado por ACH En Línea para la preparación del crédito.

Aceptación de la transferencia – Paso detallado

sequenceDiagram
    autonumber
    participant ach as ACH En Línea
    participant tb as Entidad Receptora

    ach ->> +tb: Llama al prepare credit
    Note over tb,ach: /v1/credits
    tb -->> -ach: 200 OK
    tb ->> +tb: Valida que la cuenta exista
    tb ->> tb: Valida que la cuenta esté activa
    tb ->> tb: Valida que los datos del beneficiario coincidan con la cuenta
    tb ->> tb: Valida montos y reglas de negocio
    alt las validaciones no se cumplen
        tb ->> -ach: Envía rechazo
    end
    tb ->> +ach: Confirma prepare credit
    Note over ach,tb: /v1/money-movements/transfers/{id}/status
    ach ->> -tb: 200 OK

1. ACH En Línea llama al banco receptor para procesar la operación de preparación del crédito

ACH En Línea inicia el proceso mediante una solicitud POST al endpoint v1/credits del banco receptor, con la información completa de la transferencia.

Campos de entrada preparación 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. La Entidad debe guardar este valor. 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 recibe 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 beneficiario del pago entero transfers.data.claims.target.custom.documentNumber
type lista Tipo de identificación del beneficiario 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 destino de la transacción Min 1 Max 34 transfers.data.claims.target.handle
accountType lista Tipo de cuenta del destino 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 preparación del crédito

curl --location 'https://url_participante/v1/credits' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2Vy
SWQiOiJkZW1vLXVzdWFyaW8iLCJyb2xlIjoiYXBwLXRlc3QiLCJpYXQ iOjE3MDAwMDAwMDAsImV4cCI6MTcwMDA4NjQwMH0.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. Validaciones de reglas de negocio y demás controles (Paso 2 al 5)

La Entidad Receptora ejecuta las validaciones de reglas de negocio y demás controles sobre el beneficiario.

3. Procesar rechazo de la transferencia (Paso 7)

En caso de que aplique y las validaciones de la Entidad Participante hayan generado alguna novedad. La transferencia debe rechazarse, por ende, la Entidad debe enviar el respectivo rechazo via POST al endpoint v1/money-movements/transfers/{id}/status.

Campos de entrada rechazo

Campos de entrada rechazo (Headers)

Campo Descripción Validación Longitud
x-hash Hash de seguridad de la solicitud Requerido Min 64 Max 64

Campos de entrada rechazo (Body)

Campo Tipo Validación Longitud Mapeo de datos
data Object Requerido - N/A
status String Requerido = REJECTED Max 100 transfers.data.status
creationDateTime DateTime Requerido - transfers.data.creationDateTime
coreId String Opcional Max 100 transfers.data.coreId
operation String Opcional Max 100 transfers.data.operation

Request rechazo

curl --location 'https://url_ach/v1/money-movements/transfers/{id}/status' \
--header 'x-hash: 695ffdf84f0dad0c19e3b8b09a4565246c156d747ffb26149e4c2dc5d3b66ca1' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJ1c2VySWQiOiJkZW1vLXVzdWFyaW8iLCJyb2xlIjoiYXBwLXRlc3QiLCJpYXQ iOjE3MDAwMDAwMDAsImV4cCI6
MTcwMDA4NjQwMH0.abc123xyz987fakeSignatureOnlyForDemoPurposes' \
--data '{...}'
{
    "data": {
        "status": "REJECTED",
        "creationDateTime": "2026-05-15T14:30:00Z",
        "coreId": "string",
        "operation": "string"
    }
}

Campos de salida rechazo

Campo Tipo Validación Longitud Mapeo de datos
data objeto N/A N/A N/A
id cadena Identificador único de la transacción Min 1 Max 36 data.handle
status cadena Estado actual de la transacción. Ver tabla "VALORES PARA LAS ACCIONES Y ESTADOS (status)" lista meta.status
creationDateTime fecha Momento del mensaje de respuesta Ver tabla "REGLAS PARA LOS VALORES DE TIPO FECHA" N/A
movementType lista Identificador del schema del flujo transaccional. Ver tabla "VALORES PARA LAS LOS MOVEMENT TYPE" lista data.schema

Response rechazo

{
    "data": {
        "id": "string",
        "status": "REJECTED",
        "creationDateTime": "2026-05-15T14:30:00Z",
        "movementType": ["lista"]
    }
}

4. Confirma preparación del crédito (Paso 8)

La Entidad Receptora envía la confirmación de la preparación del crédito a ACH En Línea. Solicitud POST al endpoint v1/money-movements/transfers/{id}/status

Campos de entrada confirmación preparación crédito

Campos de entrada confirmación de la preparación del crédito (header)

Campo Tipo Validación Descripción Obligatoriedad
x-hash String Min 64 – Máx 64 Cadena de comprobación de integridad de la trama. Serializar el objeto data y aplicar SHA256. Si

Campos de entrada confirmación del crédito (body)

Campo Tipo Validación Longitud Obligatoriedad
data objeto N/A N/A SI
status cadena Estado en el que quedará la transacción. Ver tabla "VALORES PARA LAS ACCIONES Y ESTADOS (status)" Lista SI
creationDateTime fecha Momento en el que se confirma la preparación del crédito Ver tabla "REGLAS PARA LOS VALORES DE TIPO FECHA" SI
coreId cadena Identificador interno del banco para la preparación del crédito. Min 1 Max 255 SI
operation cadena Operación que se está reportando. Ver tabla "VALORES PARA LAS OPERACIONES" Lista SI

Request confirmación preparación del crédito

curl --location 'https://url_ach/v1/money-movements/transfers/{id}/status' \
--header 'x-hash: 695ffdf84f0dad0c19e3b8b09a4565246c156d747ffb26149e4c2dc5d3b66ca1' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyS
WQiOiJkZW1vLXVzdWFyaW8iLCJyb2xlIjoiYXBwLXRlc3QiLCJpYXQ iOjE3MDAwMDAwMDAsImV4cCI6MTcwMDA4NjQwMH0.abc123xyz987fakeSignatureOnlyForDemoPurposes' \
--data '{...}'
{
    "data": {
        "status": "string",
        "creationDateTime": "2026-05-15T14:30:00Z",
        "coreId": "string",
        "operation": "string"
    }
}

Response confirmación preparación del crédito

{
    "data": {
        "id": "string",
        "status": "string",
        "creationDateTime": "fecha",
        "movementType": ["lista"]
    }
}
Orderarticle 3
Cómo debitar al usuario origen Anterior