Skip to main content

πŸ”„ Complete API Integration Flow

Choose your integration path and follow our comprehensive guide from authentication to transaction completion. Each step includes direct links to API documentation for seamless integration.

πŸ’°

On-Ramp Flow

Fiat to Crypto conversion - Enable users to buy digital assets with traditional payment methods including Bank Transfer and UPI

πŸ’³

Off-Ramp Flow

Crypto to Fiat conversion - Enable users to sell digital assets and receive traditional currency directly to their bank account


πŸ’° On-Ramp Integration Flow​

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


πŸ“‹ Step-by-Step On-Ramp 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 on-ramp 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 β†’


πŸ“Š On-Ramp 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

🎯 Feature Comparison​

πŸ’°

On-Ramp Features

  • Direction: Fiat β†’ Crypto
  • Payment: Bank Transfer & UPI
  • Verification: UTR Submission
  • Delivery: Crypto to Wallet
πŸ’³

Off-Ramp Features

  • Direction: Crypto β†’ Fiat
  • Payment: Bank Transfer
  • Verification: TX Hash Submission
  • Delivery: Fiat to 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 on-ramp transactions:

  • INR_UPI method: UPI addition required via Link UPI ID API
  • INR_IMPS method: Bank account addition required via Link Bank Account API
  • Off-Ramp: Bank addition mandatory to receive fiat payouts in user's account
⏱️
Order Expiration

On-Ramp 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.