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 theX-ORKI-API-KEY header:
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:
Use a correctly formatted Ethereum address dedicated to testing so you can also verify
recipient_address throughout your integration.
1. Request quotes
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
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 initiallypending. 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:Test outgoing webhooks
Configure webhooks before completing the provider checkout:- Create a public HTTPS endpoint that accepts
POSTrequests. - In the sandbox Terminal, open API Management → Webhooks.
- Register the endpoint and select success, failure, or both.
- Save the webhook signing secret securely.
- Complete the Stripe sandbox checkout and return
2xxpromptly when the event arrives.
transaction.successtransaction.failed
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.
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.
Troubleshooting
Continue with API Integration for every request and response field, Events for the payload schema, and Errors for API error handling.