- For a quick start, see the Quickstart guide.
- For the interactive API explorer, use the individual endpoint pages in the sidebar.
Base URL
Existing v1 integrations use the same path names with base URL
https://api.paycrest.io/v1. See the Legacy (v1) tab in the API Reference.Authentication
All API requests require authentication using an API key. Include your API key in the request header:Getting Your API Key
- Register at app.paycrest.io
- Complete KYB verification (required for compliance)
- Access your API key in your dashboard
Your API key should be kept secure and never shared publicly. It’s used to authenticate all API requests and identify your account.
API Endpoints
The Paycrest API is organized into three main categories:Sender Endpoints
For entities that create payment orders:POST /sender/orders- Create a new payment order (off-ramp or on-ramp)GET /sender/orders- List payment orders with filteringGET /sender/orders/{id}- Get a specific payment orderGET /sender/stats- Get sender statistics
Provider Endpoints
For liquidity providers that fulfill orders:GET /provider/orders- List orders available for fulfillmentGET /provider/orders/{id}- Get a specific orderGET /provider/rates/{token}/{fiat}- Get market rate bands (buy/sellsides)GET /provider/stats- Get provider statisticsGET /provider/node-info- Get provision node information
General Endpoints
For protocol information and utilities:GET /currencies- List supported fiat currenciesGET /institutions/{currency_code}- List supported institutionsGET /tokens- List supported tokens and contract addressesGET /rates/{network}/{from}/{amount}/{to}- Get public buy/sell rate quotes (token+fiat or fiat+fiat via USDC on a network; no API key)GET /pubkey- Get aggregator public keyPOST /verify-account- Verify bank or mobile money account details before creating an order (mobile MSISDN normalized server-side; see Verify Account)GET /orders/{chain_id}/{id}- Get order status by onchain Gateway IDGET /reindex/{network}/{tx_hash_or_address}- Reindex a transaction or address
Request Format
All requests should include the following headers:Example Request
- cURL
- JavaScript
- Python
- Go
Response Format
All API responses follow a consistent format:Error Responses
Error responses include detailed information:Rate Limiting
API requests are rate-limited to ensure fair usage. Authenticated requests have a significantly higher limit than unauthenticated ones. If you hit the limit, the API returns429 Too Many Requests — back off and retry after a short delay.
Pagination
List endpoints support pagination with the following parameters:page- Page number (default: 1)pageSize- Items per page (default: 20, max: 100)
Example
- cURL
- JavaScript
- Python
- Go
Webhooks
Set up webhooks to receive real-time updates:Webhook Events
payment_order.deposited- Deposit detected on the receive addresspayment_order.pending- Order matched and awaiting provider fulfillmentpayment_order.validated- Provider confirmed fiat deliverypayment_order.settling- Settlement transaction broadcast onchainpayment_order.settled- Settlement confirmed onchainpayment_order.refunding- Refund transaction initiatedpayment_order.refunded- Deposit refunded to sender (fulfillment failed)payment_order.expired- Order expired with no deposit receivedpayment_order.compliance_hold- On-ramp fiat received, but settlement is held pending compliance review. Unlike the events above, this one is not named after a status: the order stayspending, sodata.statusreportspending
Webhook Payload
Webhook signatures use HMAC-SHA256 over the exact raw request body. Do not re-serialize parsed JSON (key ordering differs). TheX-Paycrest-Signature header is a hex string — compare using timing-safe equality on the UTF-8 bytes of the hex strings (see the Sender API integration guide).
Delivery logs & retry
Every webhook send is recorded as a delivery. Failed deliveries — transport errors and non-2xx responses — are retried automatically with exponential backoff for a 24-hour window, then markedexpired. You can audit and replay deliveries yourself:
- List Webhook Deliveries — newest first, filter by
status,event,event_id,order_id, or date range. - Get Webhook Delivery — full record including request payload and response body.
- Retry Webhook Delivery — replay a delivery (
?sync=truefor an inline result, otherwise queued).
For detailed webhook implementation guide including signature verification, retry logic, and best practices, see the Sender API Integration Guide.
Testing
Paycrest supports very low minimum orders (as little as $0.50) and uses cost-effective EVM L2s, making it perfect for testing with real transactions. Start small and scale up as you gain confidence.There is no sandbox environment at the moment. All testing should be done on production using small amounts.
Support
Need help with the API?- Documentation: Browse our comprehensive guides
- Telegram: Join our developer community at t.me/+Stx-wLOdj49iNDM0
- GitHub: Report issues at github.com/paycrest
- Email: Contact support at [email protected]