Skip to main content

πŸ”„ Complete API Integration Flow


Complete flow for converting Fiat β†’ Crypto. Users deposit fiat currency and receive cryptocurrency.


πŸ“‹ Step-by-Step OnRamp Process​

1

πŸ” User Login

Authenticate user with email and generate JWT access token for all subsequent API calls. Token expires in 1 hour.

POST /api/user-login β†’

2

πŸ“‹ Fetch KYC Status

Check user's KYC verification status. If KYC is completed, proceed to link bank/UPI. Otherwise, upload KYC documents first.

POST /api/fetch-kyc-status β†’

3

πŸ“ Upload KYC

Upload user's PAN card, Aadhaar, selfie and other information for identity verification. Required for compliance.

POST /api/upload-kyc β†’

4

🏦 Fetch Linked Bank Accounts/UPI IDs

Get list of user bank accounts or UPI IDs that are already linked. If not linked then link them first.

5

🏦 Link Bank/UPI

Connect user's bank account or UPI ID if not linked already or user wants to add new for payment processing. Bank account or UPI details are verified via our verification partner and must match the user’s KYC name.

6

πŸ’± Fetch Quotation

Get real-time exchange rates and pricing for the transaction. Quotation valid for 30 seconds with live market rates.

POST /api/fetch-buy-quotation β†’

7

πŸ“ Create Order

Initialize the onramp transaction with confirmed details. Order created with status fiatPending.

POST /api/create-onramp-order β†’

8

πŸ’Έ Submit UTR

Submit payment reference (UTR) after completing bank transfer. Required to process the transaction and verify payment.

POST /api/update-utr β†’

9

⏳ Fetch Order Status

Monitor transaction progress and current state. Poll this endpoint to track order status from fiatPending to completed.

POST /api/fetch-order-status β†’


πŸ“Š OnRamp Order Status Guide​

πŸ“ˆ Order Status Flow

fiatPendingOrder created, awaiting user's fiat deposit via bank transfer or UPI
orderReceivedUser completed payment, OnMeta initiated crypto transfer to user's wallet
transferredToken transfer confirmed on blockchain, transaction irreversible
completedOrder completed successfully, user received tokens in their wallet
expiredOrder expired after 3 hours of inactivity, no payment received
cancelledOrder amount mismatch, refund initiated to user's bank account
fiatRefundInitiatedPayment from unregistered account, refund process started
refundingRefund in progress, funds being returned to user's bank account
refundedFiat successfully refunded to user's bank account

πŸ”” Important Notes​

πŸ”
KYC Requirements

KYC verification is mandatory for all users. Always check KYC status before proceeding with bank linking. Bank account details must match KYC information.

🏦
UPI/Bank Linking

UPI or Bank linking is mandatory before order creation for INR onramp transactions:

⏱️
Order Expiration

OnRamp orders expire after 3 hours if payment is not received. Ensure users complete payment and submit UTR within the validity period. If the UTR is not submitted before the order expires, the user may create a new order for the same amount and submit the previous UTR.

πŸ”„
Status Polling

Poll the order status API every 10-15 seconds to track real-time progress. Don't poll too frequently to avoid rate limiting.