Create session (Authentication request)
POST /api/v1/session
The merchant sends an authentication request and, on a successful response, receives a redirect_url — the link to the Checkout page. The session expires in 1 hour (configurable).
One link corresponds to a single payment. The link is invalidated after a successful payment.
Common parameters (all operations)
| Parameter | Type | Required | Description |
|---|---|---|---|
merchant_key | string | Yes | Merchant identification key |
operation | string | Yes | purchase |
methods | array | No | Payment methods allowed on the page. Optional — if omitted, pre-routing rules apply |
order | object | Yes | Order details (see below) |
cancel_url | string | No | Return URL if the payment is cancelled/declined |
success_url | string | Yes | Return URL after a successful payment (max 1024) |
error_url | string | No | Return URL on a Checkout technical error |
customer | object | Conditional | Customer details |
billing_address | object | Conditional | Billing address — top-level object, not nested inside customer |
recurring_init | boolean | No | Initializes a recurring transaction |
req_token | boolean | No | Requests card tokenization |
hash | string | Yes | Special signature used to validate your request to the Payments Platform. See the Signature section. Must be the SHA1 of the MD5-encoded string (uppercased): recurring_init_trans_id + recurring_token + order.number + order.amount + order.description + merchant_pass |
order object
| Field | Type | Required | Description |
|---|---|---|---|
number | string | Yes | Order ID in your system (max 255, recommended unique per attempt) |
amount | string | Yes* | Amount. Check with S-interio, as each country has its own enabled amount limit |
currency | string | Yes | ISO 4217. 3 chars for fiat, 3–6 chars for crypto |
description | string | Yes | Product name (min 2, max 1024) |
customer object
| Field | Type | Description |
|---|---|---|
name | string | Customer's full name. Must follow the first name + last name format, e.g. Juan Ramon Perez — no more than 3 fields (words) and no special characters |
email | string |
billing_address object
| Field | Type | Description |
|---|---|---|
country | string | Country code, 2 letters (ISO 3166-1 alpha-2) |
state | string | 2 letters — fixed list only for USA, Canada, Australia, Japan, India |
city | string | City |
district | string | District/neighbourhood |
address | string | Address |
house_number | string | House number |
zip | string | Postal code |
phone | string | Customer's phone number |
phone_country_code | string | Phone country code, e.g. +380 |
The billing_address object must look like this:
"billing_address": {
"country": "MX",
"state": "Ciudad de Mexico",
"city": "Ciudad de Mexico",
"address": "Av Arequipa 1234",
"zip": "06000",
"phone": "+524424667608"
}
phone must include the country dialling code (e.g. +52 for Mexico).
Example request
View 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"
}
Successful response
{
"redirect_url": "{{CHECKOUT_HOST}/auth/ZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKU1V6STFOaUo5..."
}
In the real response, redirect_url carries a long JWT/token as part of the path (/auth/{token}), not a short ID like abc123xyz. It is a signed token that Checkout generates and validates internally — you do not need to decode it, just redirect the customer to that full URL.
Customer return after payment
Once the payment is complete, the customer is redirected to the URL given in success_url or cancel_url.
The return to cancel_url with parameters only happens if there was a decline and the payer closed the payment form (not the browser tab). If the payer closes the form without having pressed the PAY button, the redirect to cancel_url happens without additional parameters.
If any request parameter is not sent and the payment method requires it, the field is shown directly on the Checkout Page for the customer to fill in.