Crear sesión (Authentication request)
POST /api/v1/session
El merchant envía una solicitud de autenticación y, como resultado de una respuesta exitosa, recibe un redirect_url — el link a la página de Checkout. La sesión expira en 1 hora (configurable).
Un link corresponde a un solo pago. El link se invalida después de un pago exitoso.
Parámetros comunes (todas las operaciones)
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
merchant_key | string | Sí | Key de identificación del merchant |
operation | string | Sí | purchase |
methods | array | No | Métodos de pago permitidos en la página. Puede ir o no ir — si no se envía, aplican las reglas de pre-routing |
order | object | Sí | Datos del pedido (ver abajo) |
cancel_url | string | No | URL de retorno si el pago se cancela/rechaza |
success_url | string | Sí | URL de retorno tras pago exitoso (máx 1024) |
error_url | string | No | URL de retorno ante error técnico de Checkout |
customer | object | Condicional | Datos del cliente |
billing_address | object | Condicional | Dirección de facturación — objeto top-level, no va anidado dentro de customer |
recurring_init | boolean | No | Inicializa transacción recurrente |
req_token | boolean | No | Solicita tokenización de tarjeta |
hash | string | Sí | Firma especial para validar susolicitud a la Plataforma de Pagos Adición en la sección de Firma Debe ser SHA1 de String codificada MD5 (en mayúsculas): recurring_init_trans_id + recurring_token + order.number + order.amount + order.description + merchant_pass |
Objeto order
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
number | string | Sí | ID del pedido en tu sistema (máx 255, recomendado único por intento) |
amount | string | Sí* | Monto. Consultar con S-interio, ya que cada país tiene un límite de monto habilitado |
currency | string | Sí | ISO 4217. 3 chars fiat, 3–6 chars cripto |
description | string | Sí | Nombre del producto (min 2, máx 1024) |
Objeto customer
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Nombre completo del cliente. Debe tener el formato de nombre y apellido, ej. Juan Ramon Perez — no soporta más de 3 campos (palabras) y no debe tener caracteres especiales |
email | string |
Objeto billing_address
| Campo | Tipo | Descripción |
|---|---|---|
country | string | Código de país, 2 letras (ISO 3166-1 alpha-2) |
state | string | 2 letras — solo lista fija para USA, Canadá, Australia, Japón, India |
city | string | Ciudad |
district | string | Barrio/distrito |
address | string | Dirección |
house_number | string | Número de casa |
zip | string | Código postal |
phone | string | Teléfono del cliente |
phone_country_code | string | Código de país del teléfono, ej. +380 |
El objeto billing_address debe tener:
"billing_address": {
"country": "MX",
"state": "Ciudad de Mexico",
"city": "Ciudad de Mexico",
"address": "Av Arequipa 1234",
"zip": "06000",
"phone": "+524424667608"
}
El phone debe tener la característica del país (código de país incluido, ej. +52 para México).
Ejemplo de request
Ver request
{
"merchant_key": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"operation": "purchase",
"order": {
"number": "1",
"amount": "150000.00",
"currency": "ARS",
"description": "Purchase"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"error_url": "https://example.com/error",
"customer": {
"name": "Test Name",
"email": "test-s-interio@example.com"
},
"billing_address": {
"country": "AR",
"state": "Cordoba",
"city": "Cordoba",
"address": "Av Arequipa 1234",
"zip": "5000",
"phone": "+5493482747561"
},
"recurring_init": true,
"req_token": true,
"hash": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
Respuesta exitosa
{
"redirect_url": "{{CHECKOUT_HOST}/auth/ZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKU1V6STFOaUo5..."
}
redirect_url en la respuesta real trae un JWT/token largo como parte del path (/auth/{token}), no un ID corto como abc123xyz. Es un token firmado que Checkout genera y valida internamente — no hace falta decodificarlo, solo redirigir al cliente a esa URL completa.
Customer return after payment
Al completar el pago, el cliente es redirigido a la URL indicada en success_url o cancel_url.
El retorno con parámetros a cancel_url solo ocurre si hubo un decline y el pagador cerró el formulario de pago (no la pestaña del navegador). Si el pagador cierra el formulario sin haber presionado el botón PAY, la redirección a cancel_url sucede sin parámetros adicionales.
Si alguno de los parámetros de la request no se envía y el método de pago lo requiere, el campo se muestra directamente en la Checkout Page para que el cliente lo complete.