udaan: B2B for Retailers icon

udaan retailer data API

Udaan.com · E-commerce

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

  • udaan: B2B for Retailers screenshot 1
  • udaan: B2B for Retailers screenshot 2
  • udaan: B2B for Retailers screenshot 3
  • udaan: B2B for Retailers screenshot 4
  • udaan: B2B for Retailers screenshot 5
  • udaan: B2B for Retailers screenshot 6
  • udaan: B2B for Retailers screenshot 7

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-session opendata

    Opens 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 flow
    • Companion calls refresh the session and record terms acceptance
  • Retailer organisation profile

    GET /v1/organisation/profile osint

    Returns 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 screens
    • Related calls return the organisation unit and a compact profile with location
  • Catalog category groups

    GET /v1/catalog/browse-groups opendata

    Feeds 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 login
    • Related calls resolve per-flavour product lists and brand pages
  • Search facets

    GET /v1/search/refine opendata

    Returns 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 chips
    • Related calls suggest brands and pharma auto-completions
  • Seller cart snapshot

    GET /v1/basket/snapshot opendata

    Reads 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 reads
    • Companion calls add lines and read the seller-level basket
  • Prepare checkout order form

    POST /v1/checkout/draft-order opendata

    Builds 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 order
    • Companion calls list payment methods and delivery slots
  • List retailer orders

    GET /v1/orders/history opendata

    Pages 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 screens
    • Related calls page closed orders, upcoming deliveries and order details
  • Trade-credit lines

    GET /v1/financing/credit-lines openfinance

    Lists 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 tab
    • Related calls page payment details and repayment options
  • CreditBuy ledger

    GET /v1/financing/bnpl-ledger openfinance

    Pages 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 flow
    • Related calls list pending drawdowns and recent statements
  • E-wallet summary

    GET /v1/wallet/snapshot openbanking

    Returns 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 footer
    • A companion call moves wallet funds out to a bank account
  • Shop KYC status

    GET /v1/compliance/kyc-state osint

    Reads 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 screen
    • Related calls read the KYC profile, market types and PAN upload state
  • Rewards month ledger

    GET /v1/rewards/monthly-ledger opendata

    Pages 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 screens
    • Related calls detail target schemes and ledger offers
  • Saved bank accounts

    GET /v1/payouts/bank-accounts openbanking

    Lists 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 destinations
    • Related calls cover wallet-to-bank transfers and invoice details
  • Buyer returns summary

    GET /v1/returns/buyer-summary opendata

    Summarises 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 screen
    • Related 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.

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

Get a quote