Overview
Thiqwave lets you receive value as fiat deposits or convert incoming fiat directly to stablecoins. Both flows start the same way — a pay-in request. Whether you’re collecting fiat deposits or on-ramping to stablecoins, the process begins with creating a pay-in request. From there, your customers deposit funds, and Thiqwave handles the rest.Receiving Fiat Deposits
Accept incoming fiat payments and hold them as deposits in your Thiqwave account.Customer deposits funds
Your customer transfers funds to the bank account details provided in the pay-in response.
Creating a Pay-In
To create a pay-in request, POST to the/v1/payins endpoint with the customer’s deposit amount and corridor.
Pay-In Response
The API returns a pay-in object with bank details and a unique reference for the deposit:On-Ramping: Fiat to Stablecoin
Convert incoming fiat deposits directly to stablecoins in a single integrated flow.Getting a Quote
Start by fetching a quote for your on-ramp. Specify the source fiat currency, destination stablecoin, amount, and blockchain network.Quote Response
The quote returns the exact amount you’ll receive in stablecoins, along with a quote ID valid for a limited time:Creating an On-Ramp
Once you have a valid quote, create an on-ramp request with the destination wallet address and network:On-Ramp Response
The on-ramp object contains the fiat deposit details and stablecoin destination:Payment Methods
Available payment methods depend on your corridor and local regulations. Each corridor supports different deposit methods:| Corridor | Payment Methods |
|---|---|
| UAE | Bank transfers, instant payment networks, mobile wallets |
| Saudi Arabia | Bank transfers, instant payment networks |
| Egypt | Bank transfers, mobile money |
| Additional corridors | Bank transfers (primary method) |
Payment method support varies by corridor and may change based on local regulatory requirements. Check the corridor-specific documentation for the most current options.
Tracking Status
Monitor pay-ins and on-ramps throughout their lifecycle using status updates and webhooks.Status Lifecycle
Both pay-ins and on-ramps progress through defined states:| Status | Description |
|---|---|
pending | Request created, awaiting customer deposit |
processing | Deposit received and being verified |
completed | Fiat credited (pay-in) or stablecoins delivered (on-ramp) |
failed | Deposit failed verification or transaction rejected |
Webhook Events
Subscribe to webhooks to receive real-time status notifications:payin.completed— Fiat deposit successfully creditedpayin.failed— Pay-in request failedbridge.completed— On-ramp stablecoins deliveredbridge.failed— On-ramp request failed
Best Practices
Follow these recommendations to ensure smooth payment flows:Use webhooks for notifications
Subscribe to webhook events instead of polling the API. This ensures you’re notified immediately when deposits arrive or on-ramps complete.
Implement idempotency keys
Include idempotency keys in pay-in and on-ramp requests to prevent duplicate transactions if requests are retried.
Validate amounts before submission
Check that the deposit amount meets your minimum requirements and doesn’t exceed any limits before creating a request.
Handle quote expiry
For on-ramps, create the on-ramp request promptly after receiving a quote. Quotes expire after 30 minutes.
Next Steps
Sending Payments
Send fiat transfers or bridge stablecoins to wallets.
Webhooks
Set up real-time event notifications.
Pay-ins API
Full API reference for pay-in requests.
Bridging API
Full API reference for on-ramp and bridge operations.