Skip to main content
POST /v1/merchant-api/checkouts Create a hosted checkout for an order. Call this endpoint from your server using the API URL shown in your dashboard.

Before you start

Return URLs

For each URL sent in the request, approve its HTTPS origin in Checkout Configuration → Checkout Redirect Origins. Your server chooses the full path; the origin list only controls allowed destinations. Alternatively, save a Default Success URL and Default Cancel URL, then omit the request fields. Saved defaults do not need origin-list entries. An overridden default does. Both URLs must resolve; never send empty strings. Defaults apply to all checkouts that omit those fields. For return pages hosted by a store provider, see Store platforms.

Customer email

Collect the email on your website and send it as customerEmail. The checkout does not ask again or expose it. Never put it in metadata or the hosted URL. Once a payment is linked, the email is visible to the owning merchant in Transactions and to authorized Skinloop support staff. Skinloop does not currently send customer receipts or marketing emails.

Example request

The merchant is derived from the API key and cannot be overridden. Include an Idempotency-Key of 16–255 allowed characters and a unique value per order attempt. The one API-key record may permit cs2, rust, or both; every allowedGames value must be within that key’s permissions.
This example requires jq. It uses a five-second connection timeout and a 30-second total request timeout. A nonzero cURL exit means no complete HTTP response was received, so the POST result is unknown: retry the exact payload with the same persisted idempotency key. A received non-2xx response is a definite API response; inspect its structured error before deciding what to do. See Retry policy.

Result

201 creates a session; 200 is an identical idempotent replay. Save id and redirect to hostedUrl. The response includes status, expiresAt, and any merchant warnings, plus reservationRequired, fulfillmentAllowed, and holdUntil. A CS2 checkout has reservationRequired: true: once hold begins, the CS2 trade is held for eight days and holdUntil is authoritative. Keep the merchant order reserved and finalize only after payment.completed. allowedGames accepts cs2, rust, or both; Rust-only checkouts do not have the eight-day reservation policy. Next: redirect the customer, then confirm status rather than trusting the redirect.