Detail for transaction processing in Mexico.
Fintoc (Bank Transfer)
Create a payout to a Mexican bank account through Fintoc.
Request parameters
Each object in the array accepts the following fields.
| Attribute | Data type | Mandatory | Notes |
|---|---|---|---|
order_id | String [max_length: 255] | Yes | Payment order identification. |
credit_note | String [max_length: 255] | Yes | Unique code per merchant. Only letters, numbers, - and _ are accepted. |
account_id | String [max_length: 255] — exactly 18 digits | Yes | Beneficiary CLABE. |
account_type | String [max_length: 255] | Yes | Send clabe. Any other value is rejected at dispatch time. |
vat_id | String [max_length: 255] | Yes | Beneficiary identification number. Must not be empty. |
vat_id_type | String [max_length: 10] | No | curp or ine. Case-insensitive. |
name | String [max_length: 255] | Yes | Beneficiary full name. |
amount | Decimal | Yes | Amount in MXN. Must be greater than zero. Send at most two decimal places. |
subject | String [max_length: 255] | Yes | Free use. Example: PAGO POR SERVICIOS. |
bank_detail | String [max_length: 255] | Yes | Free use. Example: PAGO ALPS MEXICO. |
channel | String [max_length: 255] | Yes | Free use. Example: Transferencia. |
user_email | String [max_length: 255] | Yes | Must be a valid address in the format [email protected]. |
phone_number | String [max_length: 255] | Yes | Beneficiary contact number. |
bank | Integer | Yes | ALPS bank ID, obtained from GET /banks/?country=MX. |
currency | Integer | No | ID from GET /currencies/. Only MXN is accepted for Mexico. When omitted, the MXN currency configured for your Mexican account is applied. |
extra_data | Object | No | Optional metadata. |
transfer_statusis ignored on creationEvery transaction is always created with status
1(in process), regardless of the value you send.
Mexico-specific rules
Account number (CLABE)
account_id must be the beneficiary's 18-digit CLABE. ALPS removes spaces and hyphens before validating the length, so 0191 2221 9004 3011 56 and 019122219004301156 are equivalent.
Any value that is not exactly 18 characters after that clean-up is rejected at creation time with a length [account] error.
Currency and amount
Only MXN is accepted for Mexico. You may omit currency and let ALPS apply the MXN currency configured for your account, or send its numeric ID from GET /currencies/.
amount is expressed in pesos, not centavos: send 1500.5 for $1,500.50 MXN. ALPS converts the value to centavos before dispatch.
Send at most two decimal placesThe conversion to centavos truncates anything beyond the second decimal.
10.999is dispatched as $10.99, not $11.00. Round on your side before submitting.
Two amount limits apply at creation time:
- The amount must be greater than zero.
- Amounts that exceed the equivalent of 7,000 USD require a KYC validation and are rejected. Contact
[email protected]to raise the limit.
Bank
bank is the numeric ALPS bank ID, not the SPEI institution code. Retrieve the catalogue for Mexico with GET /banks/?country=MX; the response includes both the ALPS id you must send and the SPEI institution codes for reference.
Bank IDs are assigned per environmentThe
idof a given bank is not guaranteed to be identical in sandbox and production. Resolve the ID fromGET /banks/?country=MXin each environment rather than hard-coding it.
Transfer comment
If you send extra_data.comment, must not be an empty string. ALPS adds its own internal keys to extra_data when processing the transaction, so do not assume the object you sent is returned unchanged.
"extra_data": { "comment": "Retiro de saldo" }Request example
curl --location 'https://uat-api.alps.cl/api/transactions/' \
--header 'Authorization: ALPS {TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '[{
"order_id": "ORD-MX-001",
"credit_note": "ORD-MX-001",
"account_id": "019122219004301156",
"account_type": "clabe",
"vat_id": "PEGJ850315HDFRRN04",
"vat_id_type": "curp",
"name": "JUAN PEREZ GARCIA",
"amount": 1500.5,
"subject": "PAGO POR SERVICIOS",
"bank_detail": "PAGO ALPS MEXICO",
"channel": "Transferencia",
"user_email": "[email protected]",
"phone_number": "+525512345678",
"bank": "{BANK_ID}"
}]'import requests
url = "https://uat-api.alps.cl/api/transactions/"
headers = {
"Authorization": "ALPS {TOKEN}",
"Content-Type": "application/json",
}
payload = [
{
"order_id": "ORD-MX-001",
"credit_note": "ORD-MX-001",
"account_id": "019122219004301156",
"account_type": "clabe",
"vat_id": "PEGJ850315HDFRRN04",
"vat_id_type": "curp",
"name": "JUAN PEREZ GARCIA",
"amount": 1500.5,
"subject": "PAGO POR SERVICIOS",
"bank_detail": "PAGO ALPS MEXICO",
"channel": "Transferencia",
"user_email": "[email protected]",
"phone_number": "+525512345678",
"bank": "{BANK_ID}",
}
]
response = requests.post(url, headers=headers, json=payload)
print(response.text)const myHeaders = new Headers();
myHeaders.append("Authorization", "ALPS {TOKEN}");
myHeaders.append("Content-Type", "application/json");
const raw = JSON.stringify([
{
"order_id": "ORD-MX-001",
"credit_note": "ORD-MX-001",
"account_id": "019122219004301156",
"account_type": "clabe",
"vat_id": "PEGJ850315HDFRRN04",
"vat_id_type": "curp",
"name": "JUAN PEREZ GARCIA",
"amount": 1500.5,
"subject": "PAGO POR SERVICIOS",
"bank_detail": "PAGO ALPS MEXICO",
"channel": "Transferencia",
"user_email": "[email protected]",
"phone_number": "+525512345678",
"bank": "{BANK_ID}"
}
]);
const requestOptions = {
method: "POST",
headers: myHeaders,
body: raw,
redirect: "follow"
};
fetch("https://uat-api.alps.cl/api/transactions/", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));
Replace{BANK_ID}before running the example
{BANK_ID}is a lookup placeholder, not a literal value. Retrieve the ALPS bank ID for the beneficiary's institution fromGET /banks/?country=MXin the environment you are calling.
Successful response — 200 OK
200 OK{
"data": [
{
"id": 104762,
"payroll": 2851,
"order_id": "ORD-MX-001",
"credit_note": "ORD-MX-001",
"account_id": "019122219004301156",
"account_type": "clabe",
"vat_id": "PEGJ850315HDFRRN04",
"vat_id_type": "curp",
"name": "JUAN PEREZ GARCIA",
"amount": 1500.5,
"subject": "PAGO POR SERVICIOS",
"bank_detail": "PAGO ALPS MEXICO",
"channel": "Transferencia",
"user_email": "[email protected]",
"phone_number": "+525512345678",
"created_at": "13-08-2026 09:41:12",
"updated_at": "13-08-2026 09:41:12",
"transfer_status": 1,
"transfer_status_description": "in process",
"currency": 7,
"currency_code": "MXN",
"bank_id": 1234,
"bank_name": "BBVA MEXICO",
"fee": 0,
"tax": 0
}
]
}
Illustrative values.id,payroll,currencyandbank_idare assigned by the platform and differ per environment. Fields with anullor empty value are omitted from the response, so the exact set of keys varies by transaction.
Error codes
| Code | Description |
|---|---|
200: OK | The request was processed. The response contains the created transactions in data, and an errors array if part of the batch was rejected. |
400: Bad request | The payload has a format, parameter or business-rule error. The response body details each rejected transaction. |
403: Forbidden | The authenticated user does not have the profile required to create payouts. |
500: Internal server error | Unexpected server-side condition. Retry later; if it persists, contact support. |
