Guide

Sending assets

Send gold or silver out of your own wallet to any user by mobile number. Ideal for rewards, cashback and payouts.

Send is a partner → user transfer. The assets leave your balance, so there is no payment to collect and no OTP to chase. If instead you want one of your users to gift another user, see user-to-user gifting.

1. Fund your wallet

Every send draws down your own gold or silver balance, so top it up first from the Wallet page — buy via Cashfree or bank transfer and the balance updates in seconds. See Wallet & ledger for the balance and ledger endpoints.

Sending from your own inventory does not earn commission — you already own the assets. Commission is only paid on buys by users attributed to you; see Attribution & commission.

2. Check the receiver

Optional but recommended — confirm the mobile number resolves to the person you expect before you move value.

GET/partner/receiver/checkreceiver
FieldTypeDescription
mobilestringrequired10-digit Indian mobile number, passed as a query parameter.
FieldTypeDescription
mobilestringThe number you asked about, normalised.
existsbooleanWhether an OroPocket account already exists for this mobile.
namestringAccount holder's name when the account exists, otherwise null.
mobile_verifiedbooleanWhether that account has a verified mobile number.
curl "https://api.oropocket.com/partner/receiver/check?mobile=9876543210" \
  -H "Authorization: Bearer oro_live_xxx"

A receiver who has never used OroPocket is created automatically at confirm time — you never have to register them first.

3. Quote the send

Quoting locks a rate and shows exactly what leaves your balance versus what lands in theirs. Nothing moves until you confirm.

POST/partner/send/quotesend
FieldTypeDescription
receiver_mobilestringrequiredWho receives the assets (10 digits). Created automatically if they are new to OroPocket.
asset_typestringrequiredEither "gold" or "silver" — those two only. Send does not support btc.
amount_inrnumberoptionalRupee value to send. Provide this OR amount_grams, not both.
amount_gramsnumberoptionalExact grams to send. Provide this OR amount_inr. Note the field is amount_grams, not grams.
price_basisstringoptionalWhich side of the spread prices the send — "sell" (default) or "buy".
price_basisMeaning
sellDefault. The send is priced at the sell rate — the rate the receiver would realise if they cashed out.
buyThe send is priced at the buy rate, matching what the receiver would have paid to acquire the same metal.
FieldTypeDescription
quote_idstringPass this to /partner/send/confirm.
expires_atstringISO timestamp. Quotes live for 10 minutes; after that confirm returns QUOTE_EXPIRED.
receiverobject{ mobile, name, exists, will_be_created } — will_be_created is true when the account does not exist yet.
asset_typestring"gold" or "silver", echoed back.
breakdownobjectFull costing for the send — see the table below.

Inside breakdown:

FieldTypeDescription
rate_per_gramnumberLocked rate used for this quote.
price_basisstringWhich side of the spread was used — "sell" or "buy".
receiver_gets_inrnumberRupee value landing with the receiver.
receiver_gets_gramsnumberGrams credited to the receiver.
partner_pays_gramsnumberGrams debited from your wallet — receiver grams plus the fee.
partner_pays_inr_equivalentnumberRupee equivalent of what you pay, at the locked rate.
fee_gramsnumberPlatform fee expressed in grams.
fee_inrnumberThe same fee in rupees.
fee_percentagenumber0.25 — the fee is 0.25% of the send.
curl -X POST https://api.oropocket.com/partner/send/quote \
  -H "Authorization: Bearer oro_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"receiver_mobile":"9876543210","asset_type":"gold","amount_inr":250}'

4. Confirm the send

Confirm moves the assets. Send an Idempotency-Key header so a network timeout can be retried without a double send.

POST/partner/send/confirmsend
FieldTypeDescription
quote_idstringrequiredThe quote_id returned by /partner/send/quote, confirmed within its 10-minute window.
Idempotency-KeyheaderoptionalStrongly recommended. Any string up to 100 characters — a UUID is ideal. Retrying with the same key replays the original response.
FieldTypeDescription
transaction_idstringIdentifier for this send. Look it up later via /partner/transactions/:id.
statusstringOutcome of the transfer.
asset_typestring"gold" or "silver".
receiverobject{ mobile, name, existed, created } — created is true when we opened a new OroPocket account for them.
receiver_amount_inrnumberRupee value credited to the receiver.
receiver_gramsnumberGrams credited to the receiver.
partner_debit_gramsnumberGrams actually taken out of your wallet, fee included.
fee_inrnumberFee charged, in rupees.
fee_gramsnumberThe same fee in grams.
rate_usednumberRate the send settled at.
new_partner_balance_gramsnumberYour remaining balance for that asset after the debit.
created_atstringISO timestamp of the transfer.
curl -X POST https://api.oropocket.com/partner/send/confirm \
  -H "Authorization: Bearer oro_live_xxx" \
  -H "Idempotency-Key: 8f14e45f-cea1-4b2c-9d3a-1f2e3d4c5b6a" \
  -H "Content-Type: application/json" \
  -d '{"quote_id":"sqt_xxx"}'

5. Track your sends

GET/partner/transactionstransactions
FieldTypeDescription
pagenumberoptionalPage number. Defaults to 1.
limitnumberoptionalRows per page, 1 to 100. Defaults to 20.
asset_typestringoptionalFilter to "gold" or "silver".
GET/partner/transactions/:idtransactions

Fetch a single send by its transaction_id, or subscribe to webhooks to be told when one completes instead of polling.