Meses con interés


Meses con intereses (MCI)

Meses con intereses es una opción de pago que permite a tus clientes dividir el costo de una compra en varias cuotas mensuales, aplican intereses sobre el saldo pendiente.

Con MCI, un cliente paga una tasa de interés adicional por dividir el costo de la compra en cuotas mensuales.

Cuando un cliente elige pagar a través de Meses con intereses, el costo total de la compra se divide en cuotas mensuales y se le aplican tasas de interés sobre el saldo que queda pendiente en cada período.

📘

La tasas de interés son determinadas por el emisor de la tarjeta de crédito utilizada para la transacción o por el acuerdo con la tienda.

Como funciona MCI

Así funciona un flujo MCI:

  1. La tienda configura las diferentes mensualidades por PSP en el Admin DEUNA.
  2. Se tiene en cuenta:
    • La franquicia de la tarjeta de credito en las que aplica.
    • El monto minimo respectivo para cada exhibicion configurada.
    • Los interes que aplican para cada franquicia.
  3. El checkout de la tiemda muestra la disponibilidad de MCI al momento en que un cliente ingresa el BIN de una tarjeta.
  4. El cliente selecciona la mensualidad en una lista desplegable mostrada en el checkout.
  5. La transacción es enviada al PSP para ser procesada.

Implementar MCI

Para usar MSI o MCI, configura al menos una campaña de installments.

📘

Cada campaña se consume al momento de generar el plan de cuotas.

Para ofrecer opciones de cuotas

  1. Genera las opciones de la campaña installments_type.
curl --location --request POST 'https://apigw.getduna.com/merchants/{merchant_id}/installments/campaigns' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {merchant_auth_token}' \
--data '{
    "name": "new campaign",
    "description": "testing campaign MCI",
    "status": "active",
    "processors": [
        {
            "id": {processor_id},
            "name": {processor_name}
        }
    ],
		// display_label_template is optional; that configuration allows you to 
		// change the format of the field "display_label_amount" of each available 
    	'// option when you generate an installment plan. If you don`t configurate this'
    	'// field, the template will be the default one.'
    "display_label_template": {
        "language": "es",
        "MSI": "{installments} meses sin intereses de ${amount}",
        "MCI": "{installments} meses de ${amount}"
    },
    "options": [
        {
            "installments": 3,
            "installments_type": "MCI",
            "currency": "MXN",
            "card_branch": [
                {
										// minimum amount for installment amount in the plan, this option
										// will be valid to generate installment plan only in that case;
										// E.g. with a total amount of $2100; in 3 installments the amount 
										// will be of $700, so $700 >= $500, then the option is valid to
										// generate an installment plan of $2100 (you can offer 3 installments
										// to pay $2100). In the case of having intallments_rate greater than 0, 
										// first the interest is applied to the amount and then it is compared with the min_amount.
                    "amount_min": 500,
										// optional, the same example than amount_min but with the maximum value.
                    "amount_max": 2000,
                    "name": "visa",
										// is the percentage applied to the amount in order to generate the options for the plan.
										"installment_rate": 1.5,
										// use the operators "amount", "rate" and "installments" when calculate the new amount;
										// if it's not specified, the calculation is the default for interests: "amount+(amount*(rate/100))"
										"installments_interest_formula": "amount+((amount*rate*installments)/100)"
                }
            ]
        },
        {
            "installments": 6,
            "installments_type": "MCI",
            "currency": "MXN",
            "card_branch": [
                {
                    "amount_min": 250,
                    "amount_max": 1000,
                    "name": "visa",
                }
            ]
        }
				// you can offer more options, the installments quantity must be divisible by 3.
    ]
}'
  1. Enciende los procesadores de pago de tu tienda para realizar transacciones con el flag allow_installments: true. El comportamiento del flag es el siguiente:
    • “MCI” o null: El monto que va hacia el procesador no tiene intereses aplicados y se debe actualizar la transacción despues de ser procesada con los intereses aplicados por el procesador. Los campos que se actualizan en base a la respuesta del procesador son:
      • amount
      • installments_amount
      • installments_rate.
    • “MSI”: Se realiza una transacción sin intereses contra el procesador que realiza la transacción. El monto llega al procesador con intereses calculados. El monto se actualiza antes de llevar a cabo la transacción y ser enviada al procesador.

Ejemplo para crear el procesador

curl --location --request POST 'https://apigw.getduna.com/merchants/{merchant_id}/stores/{store_code}/processors' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {merchant_auth_token}' \
--data '{
    "name": {processor_name},
    "payment_processor_id": {processor_id},
    "enabled": true,
    "currency_iso3": "MXN",
    "external_merchant_id": "your merchant id in payment processor",
    "public_api_key": "your public key in payment processor",
		"private_api_key": "your private key in payment processor",
    "allow_installments": true,
		"mci_to_psp_as": "MCI"|"MSI"
}'

Ejemplo para actualizar el procesador

curl --location --request PATCH 'https://apigw.getduna.com/merchants/{merchant_id}/stores/{store_code}/processors/{merchant_payment_processor_id}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {merchant_auth_token}' \
--data '{
    "allow_installments": true,
		"mci_to_psp_as": "MCI"|"MSI"
}'
  1. Revisa si tu tienda puede ofrecer cuotas preconfigurafas en VTEX.
    • Si puedes ofrecer cuotas en VTEX, configura el flag ALLOW_MCI para tu tienda. Las cuotas obtenida en VTEX deben hacer match con las opciones ofrecidas en la campaña, pero con intereses ya aplicados.
    curl --location --request POST 'https://apigw.getduna.com/payments/merchants/{merchant_id}/stores/{store_code}/configurations' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer {merchant_auth_token}' \
    --data '{ 	
      "config_code":"ALLOW_MCI",
      "config_value":"ENABLED"
    }'
    
    • Si la opción está deshabilitada el plan de installments de MCI se arma en base a la configuración de la campaña, y el amount depende de:
      • installments_rate: Aplica al monto directamente en caso de no tener definida una installments_interest_formula.
      • installments_interest_formula: Si se especifica, entonces define el cálculo del interés en base a:
        • "amount"
        • "rate"
        • "installments".

📘

Por ejemplo: amount+((amount*rate*installments)/100).

📘

Puedes eliminar la opción de VTEX con un delete en el mismo endpoint sumando en el path el id de la config.

  1. Configura el endpoint de DEUNA de acuerdo a las cuotas habilitadas en VTEX.
    1. Crea un endpoint externo, especificando que es para MCI.
    2. Si no configuras el endpoint, entonces se usa un endpoint default para el caso.
curl --location 'https://apigw.getduna.com/merchants/{merchant_id}/external-endpoints' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer {merchant_auth_token}' \
  --data '{
      "url": "https://middleware.deuna.io/api/v1/merchants/{merchant_id}/transactions/{transaction_id}/installments/mci?bin={bin}&salesChannel=1&paymentProcessors=t1pagos",
      "http_method": "GET",
      "headers": [
          {
              "key": "vtex-key-header",
              "value": "vtex-value-header"
          }
      ],
      "config_type": "MCI"
  }'
  1. Consulta las opciones de cuotas.
curl --location --request GET 'https://apigw.getduna.com/merchants/transactions/orders/{orden_token}/installments?bin={card_bin}'
	--header 'x-api-key: {x_api_key}'
	--header 'Authorization: Bearer {merchant_auth_token}'
  1. Selecciona una opción de cuotas.
  2. Realiza la compra con la opción de cuotas.
curl --location --request POST 'https://api.dev.deuna.io/merchants/transactions/purchase' \
--header 'x-api-key: {x_api_key}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {user_auth_token}' \
--data-raw '{
    "token": {orden_token},
    "method_type": "credit_card",
    "processor_name": {processor_name},
    "email": "[[email protected]](mailto:[email protected])",
    "credit_card": {
        "expiry_month": "11",
        "expiry_year": "2025",
        "card_holder": "Duna Developers",
        "card_holder_dni": "185396924",
        "card_number": "4111111111111111",
        "card_cvv": "123",
        "address1": "Vergara 548",
        "zip": "001100",
        "city": "santiago",
        "state": "rm",
        "country": "cl",
        "phone": "12345755",
        "installment": {
            "plan_option_id": {plan_option_id}
        }
    }
}'

Probar MCI

Para crear la campaña es necesario que:

  • Estés autenticado como merchant.
  • Configurar los procesadores que ofrezcan las cuotas.
  • Los procesadores deben tener el id y nombre del ecosistema DEUNA.

Ejemplo

{
	"processors": [
		{
			"id": 39,
			"name": "mercadopago"
		}
	]
}

La misma campaña debe tener sus opciones con “installments_type”: “MCI”.

Ejemplo

{
	"options": [
        	{
            	"installments": 3,
            	"installments_type": "MCI",
            	"currency": "MXN",
            	"card_branch": [
                	...
            	]
        	}
	]
}

Dentro de “card_branch”, el “name” puede ser:

  • “visa”
  • “mastercard”
  • “amex”.

📘

Especifica los “installments_rate” de cada opción equivalente al porcentaje de interés si calculas los intereses directamente sin configuraciones externas.

Códigos de respuesta esperados

  • 201: Creación exitosa de la campaña.
  • 401: No autorizado para crear la campaña.
  • 400: Request inválida.

Para crear los merchant payment processors es necesario autenticarse como merchant y tener las credenciales necesarias para luego poder realizar las transacciones con cuotas.

Cuotas con VTEX

Configura el flag ALLOW_MCI para obtener las cuotas disponibles en VTEX.

Códigos de respuesta esperados

  • 200: Creación exitosa del merchant store config.
  • 401: No autorizado para crear el merchant store config.
  • 400: Request inválida.

Si requieres alguna configuración adicional para configurar un endpoint con credenciales específicas para VTEX, debes crear un external endpoint.

📘

Habla con tu TPM DEUNA para ayudarte con VTEX.

Códigos de respuesta esperados

  • 200: Creación exitosa del external endpoint.
  • 401: No autorizado para crear el external endpoint.
  • 400: Request inválida.

Consultar cuotas

Consulta el plan de cuotas con el BIN de tarjeta después de crear una orden.

Códigos de respuesta esperados

  • 200: Obtención exitosa del plan de installments.
  • 401: No autorizado para crear el merchant payment processor.
  • 400: Request inválida.
  • 404: No hay merchant payment processors configurados correctamente.

Tarjetas de prueba

Provee todos los datos de tarjeta de pruebas del procesador.

En general los datos son:

  • “card_number”
  • “card_cvv”
  • “expiry_year”
  • “expiry_month”
  • “card_holder”

📘

Consulta la documentación de tarjetas de prueba del proveedor.

Códigos de respuesta esperados

  • 200: Transacción exitosa.
  • 401: Usuario no autorizado para realizar el purchase.
  • 400: Request inválida, como por ejemplo que el merchant no tenga merchant payment processors habilitados.
  • 422: La transacción no pudo realizarse debido a que el procesador la declinó.