udaan retailer data API
udaan is the B2B wholesale app Indian kirana stores, chemists and HoReCa buyers use to source branded staples, tap Hiveloop trade credit at checkout and pay from a built-in e-wallet. It is one of India's largest B2B marketplaces, connecting small retailers with brands and distributors across FMCG, pharma and lifestyle categories.
As a data source, the app exposes the full retailer workflow: business profiles with gstin and kycStatus, catalog listings carrying mrpPaise and sellerOrgId, per-seller carts, order shipments with awbNumber, credit facilities with availableCreditPaise and outstandingAmount, plus wallet balances and saved payout accounts. Integrators build restock bots, credit reconciliation, GST/KYC onboarding and payout routing on top of it.
udaan is Hiveloop Technology's B2B wholesale marketplace app for India, where kirana stores, chemists and HoReCa buyers browse branded FMCG catalogs, fill a multi-seller cart, check out on trade credit or an e-wallet, and track deliveries. Behind those screens sits a rich retailer dataset: shop profiles with GSTIN and KYC state, catalog listings with MRP, per-seller carts and orders, credit lines with invoice-linked drawdowns, wallet balances and payout bank accounts. That data serves restock automation, working-capital reconciliation, GST/KYC onboarding checks and payout integrations.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Phone login and terms accept
POST
/v1/auth/otp-sessionopendataOpens the signed-in retailer session after OTP. The returned refresh token plus the session cookie attach to every later catalog, cart, credit and KYC call.
Auth: Unauthenticated bootstrap. A client id on the query string identifies the Android app; the response Set-Cookie is the session sent on every later call.
- orgId
- orgUnitId
- userId
- phoneNumber
- refreshToken
- isSignupUser
- appFlavour
POST /v1/auth/otp-session?cid=android-client HTTP/1.1 Content-Type: application/json x-app-flavour: kirana { "phoneNumber": "9876543210", "otp": "482193", "deviceId": "a1b2c3d4e5f6", "acceptTnc": true }{ "orgId": "org_7c11ab", "orgUnitId": "ou_91f2", "userId": "usr_44aa", "phoneNumber": "9876543210", "refreshToken": "rt_8f21c0", "isSignupUser": false, "appFlavour": "kirana" }Reconstructed from the app's phone-OTP sign-in flowCompanion calls refresh the session and record terms acceptance
Retailer organisation profile
GET
/v1/organisation/profileosintReturns the signed-in buying organisation — shop name, GSTIN, FSSAI licence and KYC flag — that the account and checkout screens stamp on orders.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- orgId
- orgUnitId
- shopName
- businessName
- gstin
- gstinNumber
- fssai
- pincode
- kycStatus
GET /v1/organisation/profile HTTP/1.1 Cookie: session=<session> x-app-flavour: kirana{ "orgId": "org_7c11ab", "orgUnitId": "ou_91f2", "shopName": "Sharma Kirana Store", "businessName": "Sharma Traders", "gstin": "29AABCU9603R1ZX", "gstinNumber": "29AABCU9603R1ZX", "fssai": "11223344556677", "pincode": "560001", "kycStatus": "VERIFIED" }Mirrors the business details shown on the account and checkout screensRelated calls return the organisation unit and a compact profile with location
Catalog category groups
GET
/v1/catalog/browse-groupsopendataFeeds the market-home category rails: group and category ids, listing title, MRP in paise, and the seller organisation behind each card.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- categoryGroupId
- categoryId
- brandName
- listingTitle
- listingId
- mrpPaise
- sellerOrgId
- sellerName
GET /v1/catalog/browse-groups HTTP/1.1 Cookie: session=<session> x-app-flavour: kirana{ "categoryGroups": [{ "categoryGroupId": "cg_fmcg", "categoryId": "cat_staples", "brandName": "Aashirvaad", "listingTitle": "Aashirvaad Atta 10 kg", "listingId": "lst_9k21", "mrpPaise": 42500, "sellerOrgId": "org_seller_11", "sellerName": "Karnataka Staples Hub" }] }Mirrors the market-home category rails the app renders after loginRelated calls resolve per-flavour product lists and brand pages
Search facets
GET
/v1/search/refineopendataReturns faceted search hits for the in-app search box — brand, category, listing id and MRP — used by the product search and filter chips.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- searchType
- q
- brandId
- brandName
- categoryId
- listingId
- mrpPaise
- qty
GET /v1/search/refine?q=atta&brandId=br_aashirvaad HTTP/1.1 Cookie: session=<session> x-app-flavour: kirana{ "searchType": "product", "q": "atta", "facets": [{ "brandId": "br_aashirvaad", "brandName": "Aashirvaad", "categoryId": "cat_staples", "listingId": "lst_9k21", "mrpPaise": 42500, "qty": 24 }] }Backs the in-app search box and its filter chipsRelated calls suggest brands and pharma auto-completions
Seller cart snapshot
GET
/v1/basket/snapshotopendataReads the per-seller cart the retailer is about to check out: line qty, MRP and payable amount in paise, plus any applied promotion.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- cartId
- resource_id
- sellerOrgId
- promotionId
- cartLineId
- listingId
- qty
- mrpPaise
- amountPaise
- payableAmount
GET /v1/basket/snapshot?resource_id=org_seller_11 HTTP/1.1 Cookie: session=<session> x-app-flavour: kirana{ "cartId": "cart_88c1", "resource_id": "org_seller_11", "sellerOrgId": "org_seller_11", "promotionId": "promo_dotd", "lines": [{ "cartLineId": "cl_01", "listingId": "lst_9k21", "qty": 4, "mrpPaise": 42500, "amountPaise": 170000 }], "payableAmount": 170000 }Matches the per-seller cart the checkout screen readsCompanion calls add lines and read the seller-level basket
Prepare checkout order form
POST
/v1/checkout/draft-orderopendataBuilds the checkout form from the current cart: delivery slot, expected date, payable paise and the payment methods (UdaanPay, CreditBuy, UPI) the retailer can pick.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- orderFormId
- cartId
- deliverySlotId
- expectedDeliveryDate
- payableAmount
- amountInPaise
- paymentMethods
POST /v1/checkout/draft-order HTTP/1.1 Cookie: session=<session> Content-Type: application/json x-app-flavour: kirana { "cartId": "cart_88c1", "orgId": "org_7c11ab", "orgUnitId": "ou_91f2", "deliverySlotId": "slot_thu_am" }{ "orderFormId": "of_3310", "cartId": "cart_88c1", "deliverySlotId": "slot_thu_am", "expectedDeliveryDate": "2026-10-02", "payableAmount": 170000, "amountInPaise": 170000, "paymentMethods": ["UDAAN_PAY", "CREDIT_BUY", "UPI"] }Reconstructed from the checkout flow that turns a cart into a payable orderCompanion calls list payment methods and delivery slots
List retailer orders
GET
/v1/orders/historyopendataPages the Your Orders list with invoice, shipment, AWB and expected-delivery fields that the order-detail and tracking screens render.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- orderId
- invoiceId
- sellerOrgId
- shipmentId
- orderDate
- expectedDeliveryDate
- shipmentStatus
- awbNumber
- payableAmount
GET /v1/orders/history HTTP/1.1 Cookie: session=<session> x-app-flavour: kirana{ "orders": [{ "orderId": "ord_5e20", "invoiceId": "inv_4411", "sellerOrgId": "org_seller_11", "shipmentId": "shp_19aa", "orderDate": "2026-09-28", "expectedDeliveryDate": "2026-10-02", "shipmentStatus": "OUT_FOR_DELIVERY", "awbNumber": "UDEX123456789", "payableAmount": 170000 }] }Pages the Your Orders list behind the order-detail and tracking screensRelated calls page closed orders, upcoming deliveries and order details
Trade-credit lines
GET
/v1/financing/credit-linesopenfinanceLists Hiveloop trade-credit facilities on the Credit tab: sanctioned and available limits in paise, used limit and outstanding payable.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- creditLineId
- creditLineName
- availableCreditPaise
- availableLimit
- creditLimitPaise
- creditLimitUsed
- sanctionedAmount
- outstandingAmount
GET /v1/financing/credit-lines HTTP/1.1 Cookie: session=<session> x-app-flavour: kirana{ "creditLines": [{ "creditLineId": "cln_88", "creditLineName": "Hiveloop Trade Credit", "availableCreditPaise": 25000000, "availableLimit": 250000, "creditLimitPaise": 50000000, "creditLimitUsed": 25000000, "sanctionedAmount": 50000000, "outstandingAmount": 25000000 }] }Matches the facility cards on the app's Credit tabRelated calls page payment details and repayment options
CreditBuy ledger
GET
/v1/financing/bnpl-ledgeropenfinancePages the CreditBuy passbook — invoice-linked drawdowns, outstanding paise and repayment due date — that the financing / invoices-to-pay screen shows.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- page_num
- creditLineId
- invoiceId
- drawdownIds
- amountPaise
- outstandingAmount
- repaymentDueDate
- status
GET /v1/financing/bnpl-ledger?page_num=1 HTTP/1.1 Cookie: session=<session> x-app-flavour: kirana{ "page_num": 1, "entries": [{ "creditLineId": "cln_88", "invoiceId": "inv_4411", "drawdownIds": ["dd_102"], "amountPaise": 170000, "outstandingAmount": 170000, "repaymentDueDate": "2026-10-15", "status": "OPEN" }] }Reconstructed from the invoices-to-pay passbook flowRelated calls list pending drawdowns and recent statements
E-wallet summary
GET
/v1/wallet/snapshotopenbankingReturns the UdaanPay e-wallet snapshot — balance in paise, coin balance and VPA — used by the prepayment wallet tile and collection footer.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- walletBalanceInPaise
- udaanCoins
- orgId
- vpa
- currency
GET /v1/wallet/snapshot HTTP/1.1 Cookie: session=<session> x-app-flavour: kirana{ "walletBalanceInPaise": 125000, "udaanCoins": 340, "orgId": "org_7c11ab", "vpa": "sharma@udaan", "currency": "INR" }Backs the wallet tile and the collection footerA companion call moves wallet funds out to a bank account
Shop KYC status
GET
/v1/compliance/kyc-stateosintReads the shop KYC state the onboarding wizard gates on: GSTIN, PAN, Aadhaar mask and market type, matching the Shop KYC status screen.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- kycStatus
- gstin
- panNumber
- aadhaar
- shopName
- marketTypes
GET /v1/compliance/kyc-state HTTP/1.1 Cookie: session=<session> x-app-flavour: kirana{ "kycStatus": "VERIFIED", "gstin": "29AABCU9603R1ZX", "panNumber": "AABCU9603R", "aadhaar": "masked", "shopName": "Sharma Kirana Store", "marketTypes": ["KIRANA", "FMCG"] }Matches the onboarding wizard's Shop KYC status screenRelated calls read the KYC profile, market types and PAN upload state
Rewards month ledger
GET
/v1/rewards/monthly-ledgeropendataPages the monthly Udaan Coin ledger tied to target schemes — coins credited per listing qty — that the rewards / target-scheme screens show.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- page
- udaanCoins
- targets_definition_id
- listingId
- qty
- status
GET /v1/rewards/monthly-ledger?page=1 HTTP/1.1 Cookie: session=<session> x-app-flavour: kirana{ "page": 1, "udaanCoins": 340, "entries": [{ "targets_definition_id": "tgt_sep26", "listingId": "lst_9k21", "qty": 4, "udaanCoins": 20, "status": "CREDITED" }] }Pages the monthly coin ledger behind the rewards screensRelated calls detail target schemes and ledger offers
Saved bank accounts
GET
/v1/payouts/bank-accountsopenbankingLists the payout bank accounts on Manage Bank Accounts — IFSC, masked account number and beneficiary — used for wallet-to-bank and CreditBuy repayments.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- ifscCode
- bankName
- accountNumber
- accountHolderName
- beneficiaryName
- orgId
GET /v1/payouts/bank-accounts HTTP/1.1 Cookie: session=<session> x-app-flavour: kirana{ "accounts": [{ "ifscCode": "HDFC0000123", "bankName": "HDFC Bank", "accountNumber": "XXXXXX3210", "accountHolderName": "Ravi Sharma", "beneficiaryName": "Ravi Sharma", "orgId": "org_7c11ab" }] }Lists the Manage Bank Accounts screen's payout destinationsRelated calls cover wallet-to-bank transfers and invoice details
Buyer returns summary
GET
/v1/returns/buyer-summaryopendataSummarises open buyer returns — qty, reason, refund in paise and RVP pickup slot — for the returns-summary and return-detail screens.
Auth: Cookie session minted by the phone-OTP login; a client id rides on the query string and an app-flavour request header on later calls.
- returnId
- orderId
- listingId
- returnQty
- returnReason
- refundAmountPaise
- pickupSlot
GET /v1/returns/buyer-summary HTTP/1.1 Cookie: session=<session> x-app-flavour: kirana{ "returns": [{ "returnId": "ret_77c", "orderId": "ord_5e20", "listingId": "lst_9k21", "returnQty": 1, "returnReason": "Damaged pack", "refundAmountPaise": 42500, "pickupSlot": "2026-10-03T09:00:00+05:30" }] }Summarises the open buyer returns on the returns screenRelated calls fetch return-policy config and return detail
Data categories
- catalog
- cart
- orders
- trade-credit
- ewallet
- kyc
- rewards
- bank-accounts
- returns
Where teams use this data
Kirana restock from catalog and cart
A store-ops bot pulls /v1/catalog/browse-groups and /v1/search/refine for MRP and listingId, then reads /v1/basket/snapshot to confirm qty and payableAmount before the retailer places the order.
CreditBuy working-capital reconciliation
A bookkeeper nightly reads /v1/financing/credit-lines (availableCreditPaise, outstandingAmount) and pages /v1/financing/bnpl-ledger for invoiceId drawdowns so the shop ledger matches the financier's books.
GST and shop KYC onboarding check
An onboarding desk calls /v1/organisation/profile for gstin and fssai, then /v1/compliance/kyc-state for kycStatus and panNumber before raising the retailer's first credit line.
Wallet payout to the shop bank account
Finance reads /v1/wallet/snapshot (walletBalanceInPaise) and /v1/payouts/bank-accounts (ifscCode, accountNumber) to confirm the destination before a wallet-to-bank transfer.
Frequently asked questions
Which catalog fields does the udaan app load?
GET /v1/catalog/browse-groups returns categoryGroupId, listingId, listingTitle, mrpPaise, sellerOrgId and sellerName for the market-home rails. Search refinement at /v1/search/refine adds brandId and qty.
How does trade credit show up on the Credit tab?
GET /v1/financing/credit-lines lists creditLineId, availableCreditPaise, creditLimitPaise, sanctionedAmount and outstandingAmount. Invoice-level drawdowns page through /v1/financing/bnpl-ledger.
How does the retailer session authenticate?
Phone OTP login at POST /v1/auth/otp-session mints a session cookie; later calls send that cookie plus a client-id query parameter and an app-flavour header. These are first-party endpoints used after login, not a public developer API.
Where is the UdaanPay wallet balance?
GET /v1/wallet/snapshot returns walletBalanceInPaise, udaanCoins and vpa. Saved payout accounts (ifscCode, accountNumber, beneficiaryName) come from /v1/payouts/bank-accounts.
Apps similar to udaan: B2B for Retailers
- IndiaMART — IndiaMART is India's largest online B2B marketplace, where retailers discover suppliers and request quotes across every product category rather than buying from a managed wholesale catalog.
- Jumbotail — Jumbotail runs a full-stack B2B grocery wholesale platform for kirana stores, operating its own warehousing and next-day delivery with no minimum order value.
- Flipkart Wholesale — Flipkart Wholesale is the Walmart-backed B2B marketplace that serves kirana and small retailers after Flipkart acquired Walmart India's Best Price cash-and-carry business.
- Amazon Business — Amazon Business brings Amazon's fulfilment infrastructure to Indian B2B buying with GST-compliant invoicing and bulk pricing across categories.
- ElasticRun — ElasticRun operates an asset-light FMCG distribution network that extends national brands' reach into rural Indian retail outlets.
- Badho — Badho is an FMCG B2B ordering app for kirana stores that works with existing distributors instead of bypassing them in general trade.
- JioMart Digital — JioMart Digital is Reliance's B2B grocery and FMCG wholesale arm, leveraging the group's retail supply chain to stock neighbourhood stores.
More E-commerce apps
Topics
- udaan api
- udaan b2b
- kirana wholesale
- trade credit
- creditbuy ledger
- udaanpay ewallet
- shop kyc gstin
- hiveloop capital
- category group catalog
- retailer orders
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use