M
MAXFIdeveloper hub
APICheckout sessions

Create a checkout session

Hosted, branded payment page. Customer enters card on maxfi-api.exezine.az/checkout/<id> — never on your domain. We handle 3DS, retries, multi-language, and dispatch a signed webhook on result. PCI scope: SAQ A.

POST/v2/payments/checkout
sk_live_ / sk_test_

Request body

FieldTypeDescription
amount*integerAmount in minor units (e.g. 4900 = $49.00). Always integer — no decimals.
currency*string(3)ISO 4217. Supported: USD, EUR, RUB, AZN, KZT, TRY, GBP.
descriptionstring(500)Shown to customer on checkout. Appears in dashboard.
order_idstring(128)Your internal order number. Returned verbatim in webhooks.
languagestringCheckout UI language: en, ru, az. Default en.
customerobjectOptional. email, phone, name, country. Used for fraud signals + receipt.
success_urlstring (url)Where the customer lands after a successful payment. {CHECKOUT_SESSION_ID} placeholder is interpolated. Put this at the top level (Stripe-compatible). For back-compat settings.success_url is still accepted — top-level wins when both are set.
cancel_urlstring (url)Where the customer lands if they click "Back" on the checkout page or the session expires. Also accepted inside settings.cancel_url.
settingsobjectPresentation overrides: payment_methods[] (whitelist card/wallet/bnpl), button_text, auto_return (ms), customer_fields. Legacy place for success_url/cancel_url.
webhook_urlstring (url)Per-session override for event delivery. Wins over the merchant-wide webhook URL configured in your dashboard.
metadataobjectFree-form key/value. Returned in every webhook event for this payment. Max 50 keys.
test_modebooleanForce sandbox even with a live key. Useful for E2E tests in production builds.

Headers

HeaderDescription
Authorization*Bearer sk_live_… or Bearer sk_test_… (recommended, Stripe-compatible).
Legacy alternative: X-API-Key: sk_live_…. Pick one per request, don't send both.
Idempotency-KeySame key within 24h returns the originally created session — safe to retry.
Content-Typeapplication/json

Response

FieldTypeDescription
idstringSession id, format cs_*. Use it everywhere — list, get, refund.
checkout_urlstringWhere to redirect the customer.
expires_atdatetimeISO timestamp. Default 30 minutes from creation.
amountintegerEchoed from request.
currencystringEchoed from request.
statusstringopen | processing | requires_action | succeeded | failed | expired.
livemodebooleanfalse when created with sk_test_.

Errors

HTTPCodeReason
400VALIDATION_ERRORBad amount / currency / url shape.
401UNAUTHORIZEDMissing or invalid Authorization header.
402NO_CONNECTORMerchant has no acquirer configured for the requested currency. Contact us.
409IDEMPOTENCY_CONFLICTSame Idempotency-Key used with a different body within 24h.
429RATE_LIMIT_EXCEEDED100 requests / 60 seconds per API key (see /docs/errors).