https://api.veriko.mx/v1/beneficiaries/importsStart a bulk beneficiary import
How-to guide →Uploads a file — CSV, XLS, XLSX, TXT, JSON, or PDF, up to 20 MB — and opens an import job with it. XLSX/XLS sheets allow up to 10,000 rows and 64 columns. XLSX formulas are read as text without evaluation. PDFs allow up to 50 pages and cap decoded streams at 8 MiB. The reading mode decides how much work the file does and how much the server does:
template: the file follows the canonical headers, obtained from/v1/beneficiaries/imports/template. The bank is derived from the CLABE prefix or the card BIN.free: any format. Accounts are extracted from the content, with a language model stepping in when the file has no recognisable structure.
The import persists nothing on its own. It waits for an explicit confirmation. The full sequence is four steps:
- This call (
POST /v1/beneficiaries/imports) returns the job identifier. GET /v1/beneficiaries/imports/{id}reports progress untilpreview_readyorfailed.GET /v1/beneficiaries/imports/{id}/previewshows the extracted rows, andPATCH /v1/beneficiaries/imports/{id}/rows/{row_id}corrects the ones that need it.POST /v1/beneficiaries/imports/{id}/commitpersists the result.
The polling in step 2 and its cadence are described in asynchronous operations.
curl -X POST 'https://api.veriko.mx/v1/beneficiaries/imports' \
-H 'Authorization: Bearer veriko_••••' \
-F 'parse_mode=template' \
-F '[email protected]'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_import |
id* | string | Numeric job ID expressed as a string (JSON:API format). e.g.42 |
attributes* | object | Initial job attributes returned upon creation. |
status* | string | Initial job status. The only possible value is pending |
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.a1b2c3d4e5f66f5e4d3c2b1a |
datetime | object | Companion descriptor present in the {"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 |
|---|---|---|---|
| 202 | 2xx | Import job created and enqueued for processing. | CreateBeneficiaryImportResponse |
| 401 | 4xx | Authentication is required or the provided credentials are invalid. | ErrorResponse |
| 403 | 4xx | Insufficient permissions. | ErrorResponse |
| 422 | 4xx | Validation or pre-condition failed. Possible codes: file_required, upload_error, file_too_large, invalid_parse_mode, unsupported_format, import_already_in_flight, and persist_failed. | ErrorResponse |
| Status | Code | Example |
|---|---|---|
| 401 | unauthorized | Invalid or missing authentication credentials. Envelope
|
| 403 | permission_denied | You do not have permission to access this resource. Envelope
|
| 422 | file_required | A `file` part is required in the multipart body. Envelope
|