ValidationRequest
Body for `POST /v1/validate` for a manual SPEI validation; requires `clave_rastreo` or `referencia_numerica`, and exactly one of the two ways to give the account: `cuenta_beneficiaria` or `cuentas_candidatas`.
Properties
| Field | Type | Description |
|---|---|---|
fecha* | string (date) | Sending date of the transfer in ISO 8601 format (YYYY-MM-DD). Banxico locates the CEP with it, and it can differ from the operation day the CEP prints (`banxico_result.operationDate`). |
monto* | number (double) | Transfer amount in Mexican pesos (MXN), greater than zero and with up to two decimal places. Scientific notation (e.g. `1e-5`) is rejected when sent as text. |
clave_rastreo | string | Transfer tracking key, between 1 and 30 characters. Accepts letters, numbers, spaces, and the punctuation marks Banxico allows (such as hyphens, slashes, periods, commas, `#`, `@`, or `_`), but not `<`, `>`, or the backslash. It is trimmed and stripped of zero-width invisible characters before validation, so the same copy-pasted key compares equal everywhere in the platform. Required when `referencia_numerica` is not sent. If both are sent, the Banxico query uses only the key. |
referencia_numerica | string | Numeric transfer reference, between 1 and 7 digits. Accepts only numbers and spaces. Required when `clave_rastreo` is not sent. When `clave_rastreo` is sent, the query uses only the key, and a malformed reference is not rejected: it is ignored and a warning is left. |
emisor | string | **SPEI name or code** of the sending bank. When it is missing or incorrect, the tracking key may provide it. If it still cannot be resolved, the response is an HTTP status `422`. |
receptor | string | **SPEI name / code** of the receiving bank. Optional when the bank can be identified from `cuenta_beneficiaria`. If it cannot be resolved, the response is HTTP status `422`. |
cuenta_beneficiaria | string | Receiving bank account for the transfer. It is required when `cuentas_candidatas` is not sent: when both are missing, the response is an HTTP status `422` (with `preflight_failed` and the field error `cuenta_required`); when both are sent, a `422` with `cuenta_y_candidatas_excluyentes`. It can be a CLABE (18 digits), a card (16 digits) or a DiMo phone (10 digits), and the type is identified by the length of its digits. Spaces and hyphens separating groups ("0121 8000 4412 345678") are stripped automatically before the length is counted. For a DiMo phone, if the receiving bank cannot be resolved through the `receptor` field, through the registered beneficiaries or through the account directory, the response is an HTTP status `422` (with `bank_code_unresolvable_for_phone` in the body). |
cuentas_candidatas | array | Accounts among which the receiving one is, for when it is not known which. It replaces `cuenta_beneficiaria`: sending both responds with an HTTP status `422` (with `cuenta_y_candidatas_excluyentes` in the body). It accepts from 2 up to the platform's current maximum, 3 by default and never more than 10; the `422` for an excess reports the maximum in `meta.max`. Each account is a CLABE (18 digits), a card (16) or a DiMo phone (10), with a valid check digit and no repeats. A list that does not comply responds with a `422` with `cuentas_candidatas_invalidas`, and points out in `field_errors` the position that failed. Both errors happen before any quota is consumed. It consumes a single quota unit, however many accounts it carries. The query goes through the candidates in the order sent and adopts the first one that matches the transfer. The winner is published in full in `normalized_data.cuenta_beneficiaria`, and `candidate_match` reports its position. If none matches, the response is an HTTP status `422` with the reason in `code` (`cuenta_unresolvable_after_probes` when there is no more precise diagnosis). |
receptor_participante | integer | Whether the transfer beneficiary is the receiving institution itself («Pago a Banco» in the Banxico CEP) rather than one of its account holders. `0` for a transfer to an account holder (the default); `1` for payments whose beneficiary is the bank —credit card, loan, or services paid to the institution itself. Optional: omitted means `0`. |
retry_policy | object | **Automatic retry** policy for this validation. If omitted, the general policy configured for the user is applied. Retries do NOT consume validation quota. |
enabled | boolean | `true` when the retry cycle is active. With `false`, the other fields are ignored. |
max_retries | integer | Maximum number of automatic retries. Once reached, the cycle enters the `exhausted` terminal state. The allowed limit depends on the plan. |
interval_seconds | integer | Seconds to wait between each retry (300–86400, i.e., 5 minutes to 24 hours). |
outcomes | array | Outcomes that trigger a retry. By default, they are `not_found`, `cep_unavailable`, and `error`; the combination `["not_found", "cep_unavailable"]` excludes `error`. |
client_ref | string | Reference of your own that is returned as sent in the validation, in the validation webhooks, and as an exact filter of `GET /v1/validations`. Text of 1 to 64 characters, without line breaks or emoji; it is trimmed before being stored. A value that does not comply is rejected with an HTTP status `422` (with `invalid_client_ref` in the body). It must not contain personal data. |
Variants
Must include at least one of these fields:
clave_rastreoreferencia_numerica
Used in operations
POST /v1/validate