Skip to main content
The Orki sandbox is a self-contained environment for integration testing. Its accounts, API keys, transactions, webhook configuration, and logs are separate from production.
Never send a sandbox-created API key to api.money.orki.io, and never send a production-created API key to sandbox.money.orki.io. A key is valid only in the environment where it was created.

Set up a sandbox account

1

Create a separate sandbox account

Open demo.money.orki.io and register. Production accounts are not copied into the sandbox, so create an account there even if you already use the production Terminal.
2

Optionally test sandbox KYB

The Sumsub sandbox KYB flow is available for testing onboarding, but completing it is not required to request quotes, create Partner API transactions, receive provider completion callbacks, or receive outgoing partner webhooks. Sandbox KYB approval does not approve the corresponding production account.
3

Start a plan or free trial

Start a subscription or trial from the sandbox Terminal. All subscribed sandbox plans can use the Partner API and access the configured sandbox providers.
4

Create the sandbox API key

Open API Management, create an API key, and copy its plaintext value when it is displayed. The plaintext key cannot be recovered later; revoke it and create another key if it is lost.

Confirm the API key

Use the key with the sandbox base URL and the X-ORKI-API-KEY header:
A 200 response confirms that the key is recognized. A 401 response usually means the key is missing, revoked, or was created in the other environment. A 402 response means the account does not have an active subscription or trial. Sandbox Partner API access is not gated by plan tier or Sumsub KYB; a 403 can indicate an account-level restriction such as suspension.

Test a complete transaction lifecycle

Sandbox capability varies by provider. Some providers support only discovery or checkout creation in their test environment. Stripe currently supports the complete Orki sandbox path: quote, checkout, provider callback, transaction update, and outgoing partner webhook. Before completing checkout, configure an outgoing webhook as described below. Webhooks are the normal asynchronous completion signal in sandbox, just as they are in production. The transaction retrieval endpoint is available for reconciliation and recovery if a delivery is delayed or missed. Use this route for a complete BUY test:
Explicitly select stripe when creating the sandbox transaction, even if Coinify, MoonPay, or another quote is marked is_best. The is_best flag reflects quote pricing only; it does not describe the provider’s sandbox lifecycle coverage.
Use a correctly formatted Ethereum address dedicated to testing so you can also verify recipient_address throughout your integration.

1. Request quotes

Find the quote whose provider.identifier is stripe. Provider availability is evaluated at request time, so a route that is normally supported can still be temporarily unavailable.

2. Create the transaction

Store data.transaction_id, then open data.link in a browser to continue through the provider checkout. Creating the Orki transaction only creates the tracking record and checkout link; it does not complete the purchase.

3. Complete the Stripe sandbox checkout

Stripe documents these values for completing its sandbox onramp: Stripe can override the requested amount with its sandbox limits. See Stripe’s sandbox onramp instructions for the provider’s current requirements.

4. Receive the outgoing webhook

The transaction is initially pending. After Orki receives and verifies a terminal provider callback, it updates the transaction and delivers the corresponding event to your configured sandbox webhook endpoint.
A declined Stripe sandbox payment can remain at requires_payment; it does not necessarily produce a terminal failure callback. A deterministic success path is available with Stripe’s documented sandbox values, while a final failure event is emitted only when the provider reports a terminal rejected state.

5. Reconcile through the transaction API

Use the transaction endpoint to confirm the stored state, recover after a missed webhook, or reconcile periodically:
Polling is a fallback and reconciliation mechanism. It does not replace webhook handling for normal transaction updates.

Test outgoing webhooks

Configure webhooks before completing the provider checkout:
  1. Create a public HTTPS endpoint that accepts POST requests.
  2. In the sandbox Terminal, open API Management → Webhooks.
  3. Register the endpoint and select success, failure, or both.
  4. Save the webhook signing secret securely.
  5. Complete the Stripe sandbox checkout and return 2xx promptly when the event arrives.
Sandbox delivers the same public event names and payload structure as production:
  • transaction.success
  • transaction.failed
The value supplied as partner_context during transaction creation is returned as data.partner_context. Use it to reconcile the webhook with your own order. Partner webhooks are sent for API transactions and client-owned widget transactions. Transactions created through the public, non-client-owned widget do not generate partner webhooks.

Verify the signature

Every delivery includes:
  • X-Timestamp: Unix timestamp used when signing the request.
  • X-Signature: lowercase hexadecimal HMAC-SHA256 signature.
Read the request body exactly as received and calculate:
Compare the result with X-Signature using a timing-safe comparison. Reject an invalid signature and reject timestamps outside your accepted replay window. See Webhooks for implementation examples and retry behavior. Each sandbox account has one active webhook destination and signing secret. Saving a webhook subscription rotates its signing secret, so update your receiver whenever you change and save the subscription. Production webhook configuration is separate because production uses a separate account and environment.

What sandbox proves

Sandbox can validate:
  • API-key authentication and environment isolation.
  • Asset, payment-method, and quote discovery.
  • Transaction creation and checkout redirects.
  • Provider callbacks and final Orki status when the selected provider supports them.
  • Outgoing webhook delivery, with transaction retrieval available for fallback reconciliation.
  • Webhook payload reconciliation and signature verification.
Sandbox does not prove real fiat settlement, real blockchain delivery, or production KYB approval. Repeat a small controlled transaction in production before enabling wider access.

Troubleshooting

Continue with API Integration for every request and response field, Events for the payload schema, and Errors for API error handling.