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:

  1. Consultar los planes MSI disponibles para una tarjeta antes de cobrar.
  2. Crear una orden con un cargo en MSI.
  3. Manejar las reglas, restricciones y errores comunes.
📘

Antes de empezar

Te 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 live o test segú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ámetroTipoRequeridoDescripción
binstringPrimeros 6 u 8 dígitos del número de tarjeta (Bank Identification Number).
amountintegerMonto 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

CampoTipoDescripción
available_installmentsarrayLista de planes MSI disponibles para esta tarjeta y monto.
available_installments[].monthsintegerNúmero de cuotas mensuales del plan.
available_installments[].amountintegerMonto de cada cuota mensual en centavos.
bin_info.countrystringPaís emisor de la tarjeta. MSI sólo aplica para mx.
bin_info.schemestringTipo de tarjeta. MSI sólo aplica para credit.
bin_info.issuerstringBanco emisor de la tarjeta
👍

Tip

Usa 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 errorCausaCómo resolverlo
error.parameter_validation.charge.monthly_installmentsEl 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_companyTu 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_onlySe 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_allowedEl 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_availableEl 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_binEl 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_parametersFalta 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.

🚧

Importante

En ambiente test, los cargos con MSI se procesan igual que en live, 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 / redNúmero de tarjetaComportamiento
Visa (Banamex)4242 4242 4242 4242Acepta todos los plazos MSI, incluido 18 MSI.
Mastercard5555 5555 5555 4444Acepta 3, 6, 9 y 12 MSI. Rechaza 18 MSI.
American Express3782 822463 10005Acepta todos los plazos MSI, incluido 18 MSI.