Create a hosted or embedded checkout session
curl --request POST \
--url https://merchant.zahlo.eu/api/v1/checkout-sessions \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"amountMinor": 4990,
"currency": "EUR"
}
'import requests
url = "https://merchant.zahlo.eu/api/v1/checkout-sessions"
payload = {
"amountMinor": 4990,
"currency": "EUR"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({amountMinor: 4990, currency: 'EUR'})
};
fetch('https://merchant.zahlo.eu/api/v1/checkout-sessions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "cs_demo_1001",
"amountMinor": 4990,
"currency": "EUR",
"status": "pending",
"checkoutUrl": "https://checkout.zahlo.eu/cs_demo_1001",
"expiresAt": "2026-09-02T12:00:00Z"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}Checkout
Create a hosted or embedded checkout session
Create a hosted or embedded checkout session. Use the response status and request ID to decide whether to retry, reconcile, or ask the customer for action.
POST
/
api
/
v1
/
checkout-sessions
Create a hosted or embedded checkout session
curl --request POST \
--url https://merchant.zahlo.eu/api/v1/checkout-sessions \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"amountMinor": 4990,
"currency": "EUR"
}
'import requests
url = "https://merchant.zahlo.eu/api/v1/checkout-sessions"
payload = {
"amountMinor": 4990,
"currency": "EUR"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({amountMinor: 4990, currency: 'EUR'})
};
fetch('https://merchant.zahlo.eu/api/v1/checkout-sessions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "cs_demo_1001",
"amountMinor": 4990,
"currency": "EUR",
"status": "pending",
"checkoutUrl": "https://checkout.zahlo.eu/cs_demo_1001",
"expiresAt": "2026-09-02T12:00:00Z"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}Authorizations
Server-side merchant API key. Never expose it in browser code.
Headers
Retry-safe key for create operations.
Body
application/json
Required range:
x >= 1Required string length:
3Example:
"EUR"
Available options:
hosted, embedded Legacy single-method alias; prefer paymentMethodTypes
Available options:
bank, card, apple_pay, google_pay Minimum array length:
1Available options:
bank, card, apple_pay, google_pay Minimum array length:
1Show child attributes
Show child attributes
Compatibility alias for mode=embedded
Compatibility CSS field; prefer appearance.customCss
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Response
Checkout session created
Available options:
pending, confirmed, failed, cancelled, expired Available options:
hosted, embedded Available options:
bank, card, apple_pay, google_pay Show child attributes
Show child attributes