POST
speiTransfer
Envía una transferencia SPEI a cualquier banco en México. Acepta CLABE de 18 dígitos, tarjeta de débito (15–16 dígitos) o número de celular (10 dígitos, transferencia DIMO). La transferencia se procesa en segundos y recibes confirmación vía webhook.
Endpoint
POST
https://magicpay.b4a.io/functions/speiTransferHeaders
| Header | Valor |
|---|---|
| Content-Type | application/json |
| x-parse-application-id | YOUR_APP_ID |
| x-parse-rest-api-key | YOUR_REST_KEY |
Parámetros
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| apiKey | string | Sí | Tu API key de merchant. |
| amount | number | Sí | Monto en MXN. Mínimo $0.01. Máximo 2 decimales. |
| description | string | Sí | Concepto de pago (máx 40 caracteres). |
| transferId | string | Sí | Tu ID único de la transferencia (7–24 caracteres alfanuméricos). Debe ser único por operación. |
| account | string | Sí | Cuenta destino: CLABE (18 dígitos), tarjeta de débito (15-16 dígitos), o teléfono (10 dígitos, DIMO). |
| owner | string | Sí | Nombre del beneficiario. |
| bank | bank | No | Nombre del banco destino. Requerido si `account` NO es CLABE de 18 dígitos. Si es CLABE, el banco se detecta automáticamente por el prefijo. |
| numReference | string | No | Referencia numérica (máx 7 dígitos). Si no se envía, se genera automáticamente. |
Ejemplo de Request
cURL
curl -X POST 'https://magicpay.b4a.io/functions/speiTransfer' \
-H 'Content-Type: application/json' \
-H 'x-parse-application-id: YOUR_APP_ID' \
-H 'x-parse-rest-api-key: YOUR_REST_KEY' \
-d '{
"apiKey": "pk_live_xxxxxxxxxxxxx",
"amount": 150.5,
"description": "Pago de servicio",
"transferId": "PAY20240115001",
"account": "012180015025354012",
"owner": "JUAN PEREZ LOPEZ"
}'JavaScript
const response = await fetch('https://magicpay.b4a.io/functions/speiTransfer', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-parse-application-id': 'YOUR_APP_ID',
'x-parse-rest-api-key': 'YOUR_REST_KEY',
},
body: JSON.stringify({
"apiKey": "pk_live_xxxxxxxxxxxxx",
"amount": 150.5,
"description": "Pago de servicio",
"transferId": "PAY20240115001",
"account": "012180015025354012",
"owner": "JUAN PEREZ LOPEZ"
}),
});
const data = await response.json();
console.log(data);Ejemplo de Respuesta
JSON
{
"result": {
"id": "abc123def456",
"transferId": "PAY20240115001",
"trackingId": "PAY20240115001",
"status": "in_process",
"amount": 150.5,
"fee": 3.48,
"account": "012180015025354012",
"bank": "BBVA MEXICO",
"owner": "JUAN PEREZ LOPEZ",
"description": "Pago de servicio",
"numReference": "1234567",
"createdAt": 1705286400000,
"balance": 10000
}
}Errores comunes
| Error | Causa |
|---|---|
Missing apiKey | No se envió apiKey |
Missing amount | No se envió amount |
Invalid amount | amount no es numérico válido |
Amount must be greater than 0 | Monto es 0 o negativo |
Minimum amount is $0.01 MXN | Monto menor a un centavo |
Missing transferId | No se envió transferId |
speiId must be maximum 24 characters long. | transferId muy largo |
speiId must be minimum 7 characters long. | transferId muy corto |
Missing account | No se envió account |
Missing owner | No se envió owner |
Missing bank | Cuenta no es CLABE y no se envió bank |
Invalid Bank. Please check bank list | Banco no existe en el catálogo |
Invalid CLABE Interbancaria. | CLABE con dígito verificador inválido |
Invalid debit card. Please check structure. | Tarjeta no pasa validación Luhn |
Unrecognized bank prefix. Please verify the CLABE. | Prefijo de CLABE no reconocido |
No es posible realizar transferencias a cuentas internas | Cuenta destino es interna (prefijo 6461803766) |
Numeric Reference must be maximum 7 digits. | numReference excede 7 dígitos |
Invalid apiKey | apiKey no encontrado |
Insufficient balance | Saldo insuficiente |
Duplicate transferId | Ya existe una transferencia con ese ID |
Validaciones: monto > 0 con mínimo $0.01 MXN; transferId 7–24 chars; CLABEs validan dígito verificador; tarjetas validan con Luhn; teléfonos de 10 dígitos se envían como DIMO. La comisión (fee) se calcula como transferFee × 1.16 (incluye 16% IVA).