Meses sin Intereses - API
Cómo cobrar con Meses Sin Intereses (MSI) por API directa
Meses Sin Intereses (MSI) es una opción de pago que permite a tus clientes diferir el monto total de una compra en cuotas mensuales fijas, sin cargos de interés adicionales. Con la integración por API directa puedes ofrecer MSI al crear una orden con cargo a tarjeta de crédito, dándote control total sobre la experiencia de pago.
Este artículo cubre cómo:
- Consultar los planes MSI disponibles para una tarjeta antes de cobrar.
- Crear una orden con un cargo en MSI.
- Manejar las reglas, restricciones y errores comunes.
Antes de empezarTe recomendamos tener conocimientos previos de la integración por Direct API y de cómo tokenizar una tarjeta.
Prerrequisitos
Antes de aceptar pagos en MSI verifica que:
- Tu cuenta de Conekta esté activa y en modo
liveotestsegún el ambiente. - Tengas MSI habilitado en tu cuenta. Esta es una habilitación comercial: contacta a tu ejecutivo de cuenta de Conekta para activarla por banco emisor y plazo.
- La tarjeta del cliente sea crédito emitida en México. MSI no aplica a tarjetas débito ni a tarjetas internacionales.
Paso 1. Consultar planes MSI disponibles
Antes de mostrarle opciones de MSI al cliente, puedes consultar qué planes están disponibles para su tarjeta y el monto a cobrar. Esto evita que el cliente seleccione un plan que después será rechazado.
Endpoint
POST https://api.conekta.io/monthly_installments/validate
Ejemplo de solicitud
curl --request POST \
--url https://api.conekta.io/monthly_installments/validate \
--header 'Accept: application/vnd.conekta-v2.1.0+json' \
--header 'Authorization: Bearer key_xxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"bin": "411111",
"amount": 350000
}'Parámetros del request
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
bin | string | Sí | Primeros 6 u 8 dígitos del número de tarjeta (Bank Identification Number). |
amount | integer | Sí | Monto a cobrar en la unidad mínima de la moneda (centavos para MXN). Ejemplo: 350000 = $3,500.00 MXN. |
Ejemplo de respuesta
{
"available_installments": [
{ "months": 3, "amount": 116667 },
{ "months": 6, "amount": 58334 },
{ "months": 9, "amount": 38889 },
{ "months": 12, "amount": 29167 }
],
"bin_info": {
"country": "mx",
"scheme": "credit",
"issuer": "BANAMEX"
}
}Campos de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
available_installments | array | Lista de planes MSI disponibles para esta tarjeta y monto. |
available_installments[].months | integer | Número de cuotas mensuales del plan. |
available_installments[].amount | integer | Monto de cada cuota mensual en centavos. |
bin_info.country | string | País emisor de la tarjeta. MSI sólo aplica para mx. |
bin_info.scheme | string | Tipo de tarjeta. MSI sólo aplica para credit. |
bin_info.issuer | string | Banco emisor de la tarjeta |
TipUsa la respuesta de este endpoint para construir el selector de plazos que ve tu cliente. Así garantizas que sólo verá opciones que el cargo posterior aceptará.
Paso 2. Crear una orden con cargo MSI
Una vez que tu cliente eligió un plazo, crea la orden añadiendo el parámetro monthly_installments al objeto del cargo.
Endpoint
POST https://api.conekta.io/orders
Ejemplo de solicitud
curl --request POST \
--url https://api.conekta.io/orders \
--header 'Accept: application/vnd.conekta-v2.1.0+json' \
--header 'Authorization: Bearer key_xxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"currency": "MXN",
"customer_info": {
"name": "Juan Pérez",
"email": "[email protected]",
"phone": "+5215555555555"
},
"line_items": [
{
"name": "Smartphone XYZ",
"unit_price": 350000,
"quantity": 1
}
],
"charges": [
{
"amount": 350000,
"monthly_installments": 12,
"payment_method": {
"type": "card",
"token_id": "tok_test_visa_4242"
}
}
]
}'Ejemplo de respuesta exitosa
{
"id": "ord_2t...",
"object": "order",
"currency": "MXN",
"payment_status": "paid",
"amount": 350000,
"charges": {
"object": "list",
"data": [
{
"id": "src_2t...",
"object": "charge",
"amount": 350000,
"status": "paid",
"monthly_installments": 12,
"payment_method": {
"object": "card_payment",
"type": "credit",
"name": "Juan Pérez",
"last4": "4242",
"brand": "visa",
"issuer": "banamex",
"monthly_installments": 12
}
}
]
}
}Reglas y restricciones de MSI
Tipo de tarjeta
- País del emisor: sólo tarjetas emitidas en México (
bin_info.country = "mx"). - Esquema: sólo tarjetas crédito (
bin_info.scheme = "credit"). MSI no aplica a tarjetas débito ni prepago.
Monto mínimo
Cada plazo tiene un monto mínimo configurado por banco emisor y por merchant. Si el monto del cargo es menor al mínimo del plazo seleccionado, la API rechazará el cargo. Usa /monthly_installments/validate antes de cobrar para evitar este escenario.
Errores comunes
Cuando un cargo con MSI es rechazado, la API devuelve un objeto de error con uno de los siguientes códigos:
| Código de error | Causa | Cómo resolverlo |
|---|---|---|
error.parameter_validation.charge.monthly_installments | El valor de monthly_installments no es entero o no está en [3, 6, 9, 12, 18]. | Valida el valor antes de enviar y usa sólo plazos soportados. |
error.parameter_validation.charge.disabled_msi_company | Tu cuenta no tiene MSI habilitado, o no lo tiene habilitado para ese plazo. | Contacta a tu ejecutivo de cuenta para habilitar MSI o el plazo específico. |
error.parameter_validation.card.restricted_bank_18_msi_only | Se solicitaron 18 MSI con una tarjeta de un banco que no soporta ese plazo. | Limita 18 MSI a tarjetas Banamex, Citibanamex o Amex. |
error.parameter_validation.card.msi_issuer_not_allowed | El banco emisor de la tarjeta no acepta el plazo seleccionado. | Consulta /monthly_installments/validate con el BIN para conocer los plazos válidos. |
error.parameter_validation.card.msi_not_available | El cargo no cumple alguna regla configurada (monto mínimo, día, banco, etc.). | Verifica que el monto cumpla con el mínimo del plazo y que las condiciones aplicables se cumplan. |
error.parameter_validation.monthly_installments.invalid_bin | El bin enviado a /monthly_installments/validate no corresponde a una tarjeta MX de crédito válida. | Verifica que el BIN tenga 6–8 dígitos y pertenezca a una tarjeta de crédito MX. |
error.parameter_validation.monthly_installments.missing_parameters | Falta bin o amount en la llamada a /monthly_installments/validate. | Asegúrate de enviar ambos parámetros |
Pruebas en ambiente sandbox
Usa las tarjetas de prueba para validar la integración antes de pasar a producción.
ImportanteEn ambiente
test, los cargos con MSI se procesan igual que enlive, pero no se cobran ni se reportan al banco. El comportamiento del banco emisor real (aprobación, declines, restricciones) sólo es validable en producción.
Tarjetas recomendadas para probar MSI:
| Banco / red | Número de tarjeta | Comportamiento |
|---|---|---|
| Visa (Banamex) | 4242 4242 4242 4242 | Acepta todos los plazos MSI, incluido 18 MSI. |
| Mastercard | 5555 5555 5555 4444 | Acepta 3, 6, 9 y 12 MSI. Rechaza 18 MSI. |
| American Express | 3782 822463 10005 | Acepta todos los plazos MSI, incluido 18 MSI. |
Updated about 4 hours ago
