Integration Flow:
- Fetch available assets (fiat, crypto, and payment methods).
- Use those to fetch real-time quotes. Include the destination wallet when requesting a Binance BUY quote.
- Create a transaction using the selected provider. Supply
wallet_addressto lock the BUY destination with the providers listed below; Binance BUY transactions require it. - Redirect users to the checkout URL.
- Handle asynchronous transaction updates through webhooks. Use the transaction retrieval endpoints for fallback reconciliation when needed.
Authenticate API requests with your partner API key in the
X-ORKI-API-KEY header.Base URLs
All endpoints in this guide use the
/api/v1/partner base path. Use the same paths with the base URL for your intended environment.
Use an API key created in the sandbox Terminal with the sandbox base URL. Sandbox integrations use the provider’s test environment where one is available, so lifecycle coverage varies by provider. Stripe supports a complete sandbox lifecycle, including checkout completion, provider status callbacks, Orki transaction updates, and outgoing partner webhook delivery without moving real funds. See Sandbox testing for the complete setup and test flow.
End-to-end sandbox testing
Stripe supports the complete sandbox path from quote and checkout through transaction completion and outgoing webhook delivery. A known test route is:
Other providers may support only part of the sandbox lifecycle, such as quote discovery or checkout-session creation. If a provider does not issue sandbox completion callbacks, its transaction cannot progress through the remaining webhook lifecycle in Orki sandbox.
API request logs
Authenticated requests to/api/v1/partner endpoints are recorded in the API Logs view in the Terminal after the API key and account’s Partner API access have been validated.
Each entry contains the request path, HTTP method, response status code, success or failure state, and timestamp. Request parameters, request bodies, response bodies, and API key values are not included in these log entries.
Logs are environment-specific: sandbox requests appear only in the sandbox account data, while production requests appear only in production. API logging does not change an endpoint’s request or response structure.
Destination wallets for BUY transactions
Setwallet_address when creating a BUY transaction to use your chosen destination wallet. For the following providers, Orki automatically locks that address so the buyer cannot change it during checkout:
The same locking behavior applies in sandbox and production. No additional lock parameter or setting is required from your integration.
Include
wallet_address in the POST /api/v1/partner/transactions request, even if you already supplied it when requesting quotes. A quote request alone does not set the destination for a later transaction.
Coinify and Wert are not included in this confirmed list. We will inform integrators in writing when their wallet locking has been verified and is ready to use.
For other providers, a supplied wallet may prefill checkout; the buyer may still need to enter or confirm it. For Binance BUY transactions, wallet_address remains required during both quote discovery and transaction creation.
Orki does not configure a partner-level destination wallet or custody the purchased crypto. The selected provider sends it directly to the destination for that transaction.
Recipient address in transaction results
For new BUY transactions created withwallet_address, recipient_address remains populated on success. A nonblank destination reported by the provider takes precedence. If the provider omits the address or returns it as null, empty, or whitespace, Orki preserves the wallet submitted for that transaction.
This applies to transaction retrieval and outgoing webhooks in both environments. Transactions created without a wallet, including older records that did not save one, may still have a null recipient address when the provider omits it.
Creating an Orki transaction only creates a tracking record and checkout link. No purchase or crypto delivery occurs until the buyer completes the provider’s payment and KYC flow.
1. Get Supported Crypto Currencies
Endpoint:GET /api/v1/partner/crypto-currencies
Description: Returns the cryptocurrencies and networks supported for the requested transaction type.
Pass type=BUY for assets available to purchase or type=SELL for assets available to sell. If omitted, type defaults to BUY. Quote discovery remains the authoritative check for a complete route because availability can also depend on fiat currency, payment method, amount, location, and provider status.
Example Request:
2. Get Supported Fiat Currencies
Endpoint:GET /api/v1/partner/fiat-currencies
Description: Lists our supported fiat currencies for transactions.
Each currency includes Orki’s broad supported range for the selected transaction type. min_amount is the minimum supported amount and max_amount is the maximum. The providers object contains the available amount bounds for each provider.
Orki rejects amounts outside the aggregate range before requesting provider quotes. A payment method, asset, network, customer location, or selected provider can impose a narrower range, so quote discovery remains authoritative for the complete route.
Optional Query Parameters:
Example Request:
3. Get Payment Methods
Endpoint:GET /api/v1/partner/payment-methods
Description: Returns all supported payment methods for buying or selling crypto.
Required Query Parameters:
Response Example:
4. Get Quotes
Endpoint:GET /api/v1/partner/quotes
Description: Fetches exchange rate quotes from all supported providers.
Amounts below the fiat currency’s min_amount or above its max_amount are rejected before quote discovery. Requests within those broad bounds can still be unavailable when the selected payment method, asset, network, location, or provider has a stricter limit.
Required Query Parameters:
Optional Query Parameters:
Example Request:
5. Create Transaction
Endpoint:POST /api/v1/partner/transactions
Description: Creates a new transaction and returns a checkout URL for the user to complete payment.
JSON Body:
Example Request:
6. Handle Webhooks
Description: Receive updates for transaction status changes. Sample Payload:client_fee is the partner fee and orki_fee is Orki’s platform fee; both are denominated in USD. Provider and network fee denominations vary by provider and route, so use the corresponding currency field rather than inferring a fee denomination from the transaction currencies.
fiat_amount is the provider-reported base fiat transaction amount before separately itemized fees. Fees are not subtracted from this field. For example, a 100.00 EUR transaction with a 2.50 EUR provider fee returns fiat_amount: "100.00" and provider_fee: "2.50".
REST transaction responses and webhook payloads use provider_transaction_id for the provider’s transaction identifier.
recipient_address is always included in webhook data. For a new BUY transaction created with wallet_address, it contains the nonblank provider-reported destination, or preserves the submitted wallet when the provider omits it or returns it blank. It is null when no blockchain recipient applies, such as a fiat payout, or when neither the provider nor the transaction supplies an address.
Events:
transaction.successtransaction.failed
✅ When to Use
- You want full control of UX and transaction logic.
- You’re integrating crypto buy/sell within your product flow.
- You need flexibility in pricing, routing, or KYC handling.
🚀 Next Steps
- Obtain your API key from the Partner Dashboard.
- Review the OpenAPI Reference for detailed request/response models.
- Review Errors and Rate limits before implementing retries.
- Set up Webhooks to monitor transaction lifecycle.