Crear transacción alternativa
Abre una transacción Migo asociada a un cliente del comercio y a un cliente final. La respuesta incluye la lista de métodos de pago alternativos disponibles para ese cliente y los segundos restantes hasta que la transacción venza.
POST https://mw.migopayments.com/api/v1/integrations/transactions
Consulta la entrada en el spec en vivo: POST /api/v1/integrations/transactions.
Recordatorio de auth. Toda llamada envía
Authorization: Bearer <token>. Ve Autenticación para cómo obtener y refrescar el token.
Petición
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
amount | number | sí | Hasta 4 decimales. Validado contra los umbrales min/max del comercio. |
channel | string | sí | Etiqueta libre del comercio (wa, web, pos, mobile). |
client | string | sí | Slug del cliente del comercio. |
userId | string | sí | Identificador externo del usuario (teléfono, email, id emitido por el comercio). |
customKeys | object | no | Metadatos opcionales propagados a los procesadores que lo soportan. |
cURL
curl -X POST https://mw.migopayments.com/api/v1/integrations/transactions \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"amount": 125.5,
"channel": "wa",
"client": "migoDeveloper",
"userId": "+50212345678",
"customKeys": { "orderId": "ABC-123" }
}'
Node.js
const res = await fetch('https://mw.migopayments.com/api/v1/integrations/transactions', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.MIGO_JWT}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
amount: 125.5,
channel: 'wa',
client: 'migoDeveloper',
userId: '+50212345678',
customKeys: { orderId: 'ABC-123' },
}),
});
const { data } = await res.json();
console.log(data.uid, data.paymentMethods, data.expireAt);
Secuencia
Comercio ──► Migo ──► respuesta
│ │
◄─────────────────────┘
uid + paymentMethods + expireAt (segundos)
Respuesta
{
"success": true,
"message": "Transaction created",
"data": {
"uid": "trx_8f3c2b1d9e7a",
"paymentMethods": ["zigi", "akisiQR", "bamPaymentButton", "quickPayQR"],
"expireAt": 900
}
}
Descubriendo qué rails están habilitados para tu cliente
Hoy no existe un endpoint dedicado GET /clients/{slug}/payment-methods. El array paymentMethods retornado aquí es la fuente de verdad de lo que el frontend del comercio puede renderizar — léelo de la respuesta de cada llamada POST /api/v1/integrations/transactions. En el cliente, cachéalo a lo más por la ventana expireAt de la transacción.
| Slug de Sandbox | paymentMethods retornados (ejemplo / ilustrativo) |
|---|---|
migoDeveloper | ["zigi","akisiQR","bamPaymentButton","quickPayQR"] |
El conjunto de arriba es ilustrativo.
paymentMethodsrefleja los métodos habilitados para tu cuenta y los métodos que Migo soporta en tu país, por lo que puede cambiar a medida que cambia tu configuración. Siempre lee el array de tu propia respuesta dePOST /api/v1/integrations/transactionsen lugar de depender de este ejemplo.
Si un rail que esperas no aparece, contacta a Operaciones de Migo para habilitarlo en tu cuenta.
Errores
| HTTP | ownCode | Causa |
|---|---|---|
| 400 | 5000 | Parámetros faltantes o inválidos |
| 400 | 2003 | amount fuera del min/max del comercio |
| 400 | 5004 | Configuración del cliente del comercio no encontrada para el client indicado |
| 500 | 2002 | No se pudo persistir la transacción |
Todos los errores de validación previos a la persistencia (incluidos
5000y5004) retornan HTTP400; solo2002(falla de persistencia) retorna HTTP500.
Siguiente paso
Elige uno de los paymentMethods retornados y llama a Procesar pago.