https://api.veriko.mx/v1/beneficiaries/{id}Update a beneficiary
How-to guide →Updates an already registered beneficiary. The body accepts the JSON:API envelope or a flat object, and what is sent determines the scope of the change:
labelonly: sanitised and stored, leaving the account untouched.- A new
account_number, or the legacyclabealias:account_type,bank_code, andbank_nameare derived again under the same rules asPOST /v1/beneficiaries, so a change of type resolves by itself. If the new number is a phone, the body must carrybank_code. bank_codeonly: applies solely to a phone-type beneficiary. On a CLABE or a card the bank is derived from the number, so the value sent is discarded without an error.
A body with no editable field responds 422 no_valid_fields.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id* | path | integer | required | Numeric beneficiary ID. e.g.42 |
| Parameter | Type | Required | Description |
|---|---|---|---|
label | string (?–100) | optional | Optional free-form label. Sanitized with Proveedor XYZ |
account_number | string (pattern) | optional | New account number. Replaces the existing one and triggers the re-derivation of 012180004412345678 |
bank_code | string (pattern) | optional | 5-digit Banxico SPEI code. For 40021 |
curl -X PUT 'https://api.veriko.mx/v1/beneficiaries/{id}' \
-H 'Authorization: Bearer veriko_••••' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"attributes": {
"label": "Proveedor XYZ actualizado"
}
}
}'Python example — coming soon.
JavaScript example — coming soon.
PHP example — coming soon.
| Field | Type | Description |
|---|---|---|
data | object | Main response payload. Shape varies by endpoint (object, array, or JSON:API envelope with |
type* | string | JSON:API resource type. Always beneficiary |
id* | string | Auto-increment numeric identifier of the beneficiary in the 42 |
attributes* | object | Canonical beneficiary attributes (recipient account data and record metadata). |
account_number* | string | Stored account number: 18-digit CLABE, 16-digit card, or 10-digit DiMo phone. Use 012180004412345678 |
account_type* | string | Auto-detected account type: clabe |
bank_code* | string | 5-digit Banxico code of the receiving bank, derived from the CLABE prefix, card BIN, or DiMo catalog. e.g.40012 |
bank_name* | string | Bank name resolved from the CLABE prefix, card BIN, or DiMo catalog. e.g.BBVA MEXICO |
label | string | nullnullable | User-assigned descriptive label. Proveedor ABC |
status* | string | Beneficiary status. active |
created_at* | string (date-time) | UTC creation timestamp. e.g.2026-01-15T10:00:00Z |
meta | object | Response metadata including API version, route prefix, unique request identifier, and the server timestamp in UTC. |
version | string | API version that processed the request. e.g.1.47.0 |
api_version | string | API route prefix version (e.g. v1 |
request_id | string | Unique request identifier (hex). e.g.a1b2c3d4e5f6 |
datetime | object | Companion descriptor present in every response's meta block (and in outgoing webhook payloads). Lets clients assert the timezone contract without re-reading the spec. e.g.{"timezone":"UTC","format":"ISO 8601"} |
timezone* | string | Always UTC |
format* | string | Always ISO 8601 |
links | object | Pagination or related links, present only when the endpoint returns a paginated collection. |
| Status | Class | Description | Body |
|---|---|---|---|
| 200 | 2xx | Beneficiary updated. | UpdateBeneficiaryResponse |
| 400 | 4xx | The request body is empty or is not valid JSON. | ErrorResponse |
| 401 | 4xx | Authentication is required or the provided credentials are invalid. | ErrorResponse |
| 403 | 4xx | Insufficient permissions. | ErrorResponse |
| 404 | 4xx | The resource does not exist or is not visible to the client | Error |
| 413 | 4xx | The request body exceeds the maximum accepted size (body_too_large). | ErrorResponse |
| 422 | 4xx | The body failed validation. Possible codes are no_valid_fields, invalid_account_length, clabe_prefix_not_recognized, and bank_code_required_for_phone. | ErrorResponse |
| Status | Code | Example |
|---|---|---|
| 400 | body_empty | The request body is empty. Envelope
|
| 400 | invalid_json | The body is not valid JSON. Envelope
|
| 401 | unauthorized | Invalid or missing authentication credentials. Envelope
|
| 403 | forbidden | You do not have permission to access this resource. Envelope
|
| 413 | body_too_large | The request body is too large. Envelope
|
| 422 | no_valid_fields | The body carries no editable field. Envelope
|