POSThttps://api.veriko.mx/v1/beneficiaries/imports

Start a bulk beneficiary import

Audience
public
Auth
API key
Permission
beneficiaries:create
How-to guide →

Uploads a file — CSV, XLS, XLSX, TXT, or PDF, up to 20 MB — and opens an import job with it. An account may only have one open job at a time: a second upload while the previous one is still alive responds 422 import_already_in_flight.

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. The job runs pendingparsingpreview_ready and stops there, waiting for an explicit confirmation. The full sequence is four steps:

  1. This call returns the job identifier.
  2. GET /v1/beneficiaries/imports/{id} reports progress until preview_ready or failed.
  3. GET /v1/beneficiaries/imports/{id}/preview shows the extracted rows, and PATCH …/rows/{row_id} corrects the ones that need it.
  4. POST /v1/beneficiaries/imports/{id}/commit persists the result.

The polling in step 2 and its cadence are covered in asynchronous operations.

Request
curl -X POST 'https://api.veriko.mx/v1/beneficiaries/imports' \
  -H 'Authorization: Bearer veriko_••••' \
  -H 'Content-Type: application/json'

Python example — coming soon.

JavaScript example — coming soon.

PHP example — coming soon.

Response 202CreateBeneficiaryImportResponse — Import job created and enqueued for processing.
FieldTypeDescription
dataobject

Main response payload. Shape varies by endpoint (object, array, or JSON:API envelope with type, id, attributes).

type*string

JSON:API resource type. Always beneficiary_import.

e.g. 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.

e.g. pending
metaobject

Response metadata including API version, route prefix, unique request identifier, and the server timestamp in UTC.

versionstring

API version that processed the request.

e.g. 1.47.0
api_versionstring

API route prefix version (e.g. v1).

e.g. v1
request_idstring

Unique request identifier (hex).

e.g. a1b2c3d4e5f6
datetimeobject

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 — the canonical timezone for every datetime field in the body.

e.g. UTC
format*string

Always ISO 8601 — explicit Z suffix on every datetime.

e.g. ISO 8601
linksobject

Pagination or related links, present only when the endpoint returns a paginated collection.

Response status codesPOST /v1/beneficiaries/imports
StatusClassDescriptionBody
2022xxImport job created and enqueued for processing.CreateBeneficiaryImportResponse
4014xxAuthentication is required or the provided credentials are invalid.ErrorResponse
4034xxInsufficient permissions.ErrorResponse
4224xxValidation or pre-condition failed. Possible codes: file_required, file_too_large, unsupported_format, and import_already_in_flight.ErrorResponse
Errors from POST /v1/beneficiaries/imports
StatusCodeExample
401unauthorized

Invalid or missing authentication credentials.

Envelope
meta.request_id
c4d5e6f7a8b9
403forbidden

You do not have permission to access this resource.

Envelope
meta.request_id
d5e6f7a8b9c0
422file_required

A `file` part is required in the multipart body.

Envelope
meta.request_id
f2a3b4c5d6e7