Docs

Direct Debit · Reference

Error codes

Platform and bank decline codes for Direct Debit charges, plus API request errors.

When a charge is declined, the response includes a declined_reason (platform-level code) and a declined_reason_rail (banking network code). Both are also present in SFTP response files.

Platform error codes

declined_reason normalizes the bank’s response into a platform code. A few codes, such as risk_engine, are set by Monato before the charge is sent to the bank.

Code Description Recommended Action
insufficient_funds The customer’s account does not have enough funds to cover the charge. Retry at a later date or contact the customer.
account_blocked The account is blocked for direct debit charges. See the bank error code for the specific reason. Check the declined_reason_rail code for detail. Do not retry without resolving the underlying account issue.
risk_engine The charge was rejected by the Monato risk engine. Review the charge details. Contact Monato support if the rejection appears incorrect.
undetermined The platform could not determine a specific decline reason. See the bank error code for detail. Check the declined_reason_rail code for the bank’s response.

Codes mapped from the bank response

Each of these codes comes from one bank response code, which you also get in declined_reason_rail.

Code Bank code Description
account_does_not_exist 01 The account does not exist.
account_canceled 03 The account is canceled.
account_in_other_currency 05 The account is in a different currency.
account_not_belongs_to_bank 06 The account does not belong to the receiving bank.
transaction_duplicated 07 Duplicate transaction.
client_order_declined_pay_to_issuer 08 The customer told the bank not to pay this issuer.
client_order_amount_is_more_than_authorized 09 The amount is higher than the customer authorized.
client_order_canceled 10 The customer canceled the service.
client_service_not_authorized 11 The customer has not authorized the service.
payment_order_expired 12 The payment order expired.
client_rejected_charge 13 The customer does not recognize the charge. The charge becomes chargeback, not declined.

insufficient_funds is bank code 04 and account_blocked is bank code 02. Any other bank code declines the charge with undetermined; check declined_reason_rail for the bank’s code. Penny validation can also set account_canceled or account_does_not_exist when it cancels a charge.

Bank error codes

These codes are returned by the Mexican banking network (SPEI / Domiciliación Bancaria) and appear in the declined_reason_rail field.

Code Description
01 Cuenta inexistente — Account does not exist
02 Cuenta bloqueada — Account is blocked
03 Cuenta cancelada — Account is cancelled
04 Cuenta con insuficiencia de fondos — Insufficient funds
05 Cuenta en otra divisa — Account is in a different currency
06 / 6 Cuenta no pertenece al banco receptor — Account does not belong to the receiving bank
07 / 7 Transacción duplicada — Duplicate transaction
08 Por orden del cliente: Orden de no pagar a ese Emisor — Customer instructed bank not to pay this issuer
08 Baja por oficina — Deregistered by branch
09 Por orden del cliente: Importe mayor al autorizado — Amount exceeds the amount authorised by the customer
10 Por orden del cliente: Cancelación del servicio — Customer cancelled the service
10 Domiciliación dada de baja — Direct debit mandate deregistered
11 Cliente no tiene autorizado el servicio — Customer has not authorised the service
11 Domiciliación dada de baja — Direct debit mandate deregistered
12 Vencimiento de la Orden de Pago en Ventanilla — Payment order expired
13 Cliente desconoce el cargo — Customer does not recognise the charge
19 Tipo de cuenta no admite domiciliaciones — Account type does not support direct debit
20 Indomiciliado — Not enrolled for direct debit
22 Domiciliación ya existe — Direct debit already exists (affiliation response)
23 Baja por oficina — Deregistered by branch
24 No se procesó CARGO/ABONO a empresa — Charge/credit to company was not processed
25 Todas las domiciliaciones de la cuenta fueron dadas de baja — All direct debits on the account were deregistered
26 Domiciliación dada de baja — Direct debit mandate deregistered
27 El importe actual supera al importe original o viceversa — Current amount exceeds or is less than the original amount
28 Banco no válido o no participante — Invalid or non-participating bank
29 Banco no válido o no participante — Invalid or non-participating bank
30 Domiciliación no realizada — Direct debit not executed
31 Entidad no válida — Invalid entity
32 Error no específico de red interbancaria — Non-specific interbank network error
33 Monto cobrado excede límite configurado — Charged amount exceeds configured limit
36 Domiciliación no realizada por error general — Direct debit not executed due to general error
46 Cuenta del receptor inválida — Invalid recipient account
88 Cuenta bloqueada — Account is blocked
91 Error no específico de red interbancaria — Non-specific interbank network error

API request errors

These errors are returned synchronously by the API, before a charge is created.

Status When Source
400 Bad Request The Idempotency-Key is not a valid UUID POST /charges
400 Bad Request The charge references an instrument that is not active, for example one that failed penny validation (instrument_in_invalid_state) Penny validation
401 Unauthorized The x-api-key header is missing or invalid, or the key was revoked Quickstart
409 Conflict A request with the same Idempotency-Key is still being processed. Retry shortly. Create charges
422 Unprocessable Entity The request failed validation, or an Idempotency-Key was reused with a different body API reference

Validation errors (422) use the HTTPValidationError shape from the OpenAPI spec. The values below are placeholders:

{
  "detail": [
    {
      "loc": ["body", "amount"],
      "msg": "<error message>",
      "type": "<error type>"
    }
  ]
}