Guide

Open the embed on a screen

Add a launch object when you issue a user_code, and the embed opens on that screen instead of the home dashboard — with the values you chose already filled in.

A “Buy ₹500 of gold” button in your app can land the user on the buy sheet with ₹500 already entered. A “Start a wedding SIP” banner can land them on SIP setup with the wedding goal and amount already filled in. The user still reviews and confirms everything: a launch prefills, it never pays, sells or starts a SIP on its own.

Off by default. Ask your OroPocket contact to switch on Open the embed on a screen for your account. Until then, a request with launch returns 403 LAUNCH_NOT_ENABLED — requests without it are unaffected.

1. Add launch to /partner/users/init

POST/partner/users/initembed

Everything from the Hosted embed guide stays the same. Add one optional field:

FieldTypeDescription
launchobjectoptionalWhere the embed opens, e.g. { "screen": "buy", "metal": "gold", "amount": 500 }. Omit it to open on the home dashboard.
launch.screenstringrequiredOne of the screens in the table below.
launch.metalstringoptional"gold" (default) or "silver". For buy, sell, sip and coin_store.
launch.amountnumberoptionalRupees to prefill. Limits per screen below.
launch.gramsnumberoptionalSell only, instead of amount. Up to 4 decimal places.
launch.frequencystringoptionalSIP only: "daily", "weekly" or "monthly".
launch.goalstringoptionalSIP only: emergency, phone, trip, wedding, vehicle, home, wealth or custom.
launch.goal_namestringoptionalSIP only: your own goal label (1–40 characters). Implies goal "custom"; sending it with any other goal returns INVALID_LAUNCH.
curl -X POST https://api.oropocket.com/partner/users/init \
  -H "Authorization: Bearer oro_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "flow": "embed",
    "mobile": "9876543210",
    "launch": { "screen": "buy", "metal": "gold", "amount": 500 }
  }'
Response — the launch you sent comes back, normalised
{
  "success": true,
  "request_id": "req_xxx",
  "mode": "live",
  "data": {
    "user_code": "usr_xxx",
    "embed_url": "https://connect.oropocket.com/?u=usr_yyy",
    "expires_at": "2026-09-26T09:22:00.000Z",
    "expires_in_seconds": 600,
    "user_existed": true,
    "mode": "live",
    "launch": { "screen": "buy", "metal": "gold", "amount": 500 }
  }
}

2. The screens

screenOpens on
buyThe buy sheet, with amount prefilled (₹1–₹1,00,000, rounded to whole rupees). Without amount, it opens on the user's usual amount.
sellThe sell sheet, open. amount (above ₹0, at most ₹1,00,00,000, rounded to paise) or grams (above 0, at most 1,000 g) — never both. Capped at what the user can actually sell, and ignored if they hold none.
sipSIP setup, prefilled. amount is whole rupees, ₹100–₹1,00,000. With the one-screen SIP flow switched on for you, the user lands on a single screen with metal, amount, frequency and goal already set. Otherwise: with both goal and amount they land on the amount step, and without them on the goal picker, with your values filled in.
rewardsThe rewards centre, on Refer & earn. Needs referrals enabled for your users.
spinThe rewards centre, on Spin the wheel. Needs spin enabled for your users.
transactionsThe user's transaction history.
kycKYC status, where the user can continue verification.
sipsThe user's list of SIPs.
coin_storeThe coin store for metal. Needs coin delivery enabled for your users.
giftThe Shagun gift sheet, with amount prefilled (₹1–₹1,00,000, rounded to whole rupees). Needs Shagun enabled for your users.

A field a screen doesn't take is refused, not ignored — sending amount with spin returns INVALID_LAUNCH naming the field, so a typo never silently opens the wrong thing.

3. How it behaves

  • Once. The launch belongs to the single-use link you just minted. If the user refreshes, comes back from a payment, or opens the embed again later, they land on the dashboard. Mint a new link for a new launch.
  • Only from your server. The destination is stored with the link and never read from the URL, so a user cannot change where they land or what is filled in.
  • Prefill, not submit. Every screen opens with values in place; the user still taps Pay, Sell or Start SIP, and every normal limit and check applies when they do.
  • New users first sign up. A user verifying their mobile or completing their profile does that first, then lands on your screen. If the embed cannot open the screen (for example, on a connection too slow to load it within a few seconds), they land on the dashboard instead.
  • Restrictions still win. If the account can't buy or sell right now, the user sees the same explanation they would get from tapping the button themselves.
  • Sandbox. Works with oro_test_ keys too — screens and prefills are identical; payments are blocked as usual in test mode.

4. Errors

CodeMeaning
400 INVALID_LAUNCHUnknown screen, a field that screen doesn't take, or a value out of range. error.details.field names it. Nothing was minted.
400 INVALID_LAUNCH (field: launch)launch was sent on the trusted-API flow (flow "api", or a token with users but not embed). Launches only apply to the hosted embed.
403 LAUNCH_NOT_ENABLEDOpening the embed on a screen isn't switched on for your account yet. Ask OroPocket.
403 LAUNCH_SCREEN_UNAVAILABLEThat screen's feature is off for your users (spin, coin delivery, Shagun or referrals). error.details.field is screen.
503 LAUNCH_NOT_READYTemporarily unavailable. Retry, or omit launch to open on the dashboard.
A failed launch fails the whole request — no embed_url is issued. If you'd rather always open the embed, retry without launch on a 4xx.

Walkthrough: Open the embed on the buy sheet. UPI apps and payment pages inside your WebView still need the WebView & UPI setup.