BharatPe merchant QR, UPI and settlement data API
BharatPe for Business is the merchant app from Resilient Innovations Private Limited (BharatPe) for Indian kiranas, restaurants and other UPI-accepting shops. Shopkeepers print or download a static QR, take inbound UPI collections, hear each payment on a Soundbox with TTS, and settle proceeds to a linked bank account or keep them in a BharatPe account that can also send money out. Easy Loans sits behind the same login for eligible merchants. The product is India-only and competes with Paytm for Business and PhonePe Business for the same neighbourhood shops.
UPI inbound rows name the payer as payerhandle and stamp the bank as bankRefNo (alternate utr). Settlement batches add settlementId and a destination utr against the linked account / ifsc. The shop identity sits on mid, vpa / fullVpa, qrstring and profile qr_layer vpas.
BharatPe-account current_balance and today_collection sit beside the home-card Amount and the day's todayCollectionAmount / netSettlement. Outbound send-money rows keep bp_txn_id and the wire-typo benefiaciary_name; Easy Loans rows keep edi_amount and paid_principle.
Reconcilers join collections to settlement UTRs, investigators map a kirana from its mid and VPA, and payout bots drain the BharatPe account. openData Studio turns those fields into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Request login OTP
POST
/v1/merchant/login/otp/requestosintStarts merchant OTP login and returns the uuid later posted with the OTP.
Auth: Unauthenticated; body carries mobileNumber and SMS hashKey
- mobileNumber
- hashKey
- uuid
- isOtpScreen
- status
- msg
POST /v1/merchant/login/otp/request HTTP/1.1 Content-Type: application/json { "mobileNumber": "9876543210", "hashKey": "AbCdEfGhIjK" }{ "status": true, "msg": "OTP sent", "data": { "uuid": "8f2c1a90-4b11-4d22-9e33-aa44bb55cc66", "isOtpScreen": true } }OTP login
POST
/v1/merchant/login/otp/verifyosintExchanges a verified OTP for accessToken, refreshToken, mid and fullVpa.
Auth: Unauthenticated; body carries otp, txnId, uuid, deviceInfo, fcmtoken
- otp
- txnId
- uuid
- deviceInfo
- fcmtoken
- accessToken
- refreshToken
- mid
- fullVpa
- deepLink
- existingUser
- hardUpdate
- softUpdate
- isApp
POST /v1/merchant/login/otp/verify HTTP/1.1 Content-Type: application/json { "otp": "482913", "txnId": "TXN-OTP-9912", "uuid": "8f2c1a90-4b11-4d22-9e33-aa44bb55cc66", "deviceInfo": "android-14", "fcmtoken": "<fcm_token>" }{ "status": true, "data": { "accessToken": "<access_token>", "refreshToken": "<refresh_token>", "mid": "BP12345678", "fullVpa": "shop@bharatpe", "deepLink": "bharatpe://home", "existingUser": true, "hardUpdate": false, "softUpdate": false, "isApp": true } }Merchant profile
GET
/v1/merchant/meopendataLoads the signed-in merchant's mid, VPA, settlement account and QR string.
Auth: Session token header plus Deviceinfo JSON
- mid
- vpa
- merchantname
- businessname
- acno
- ifsc
- bank_name
- qrstring
- mobile
- settlement
- isTTSEnabled
GET /v1/merchant/me HTTP/1.1 token: <access_token> Deviceinfo: {"os":"android","appversion":"7.5.7.2"}{ "status": true, "data": { "mid": "BP12345678", "vpa": "shop@bharatpe", "merchantname": "Sharma Kirana", "businessname": "Sharma Kirana Store", "acno": "XXXXXXXX1234", "ifsc": "HDFC0001234", "bank_name": "HDFC Bank", "qrstring": "upi://pay?pa=shop@bharatpe&pn=Sharma%20Kirana", "mobile": "9876543210", "settlement": true, "isTTSEnabled": true } }Inbound UPI transactions
GET
/v1/collectionsopenfinanceLists inbound UPI collections with payer handle and bank reference / UTR.
Auth: Authenticated session; token header
- totalAmount
- totalCount
- transactions
- amount
- payerhandle
- payerName
- bankRefNo
- paymentTimeStamp
- status
- vpaType
GET /v1/collections HTTP/1.1 token: <access_token>{ "status": true, "data": { "totalAmount": 12450.00, "totalCount": 18, "transactions": [ { "amount": 350.00, "payerhandle": "rahul@okaxis", "payerName": "Rahul Sharma", "bankRefNo": "AXIxxxxxxxx1234", "paymentTimeStamp": 1729123456, "status": "SUCCESS", "vpaType": "UPI" } ] } }Settlements
GET
/v1/settlementsopenfinanceReturns settlement batches with destination account and bank UTR.
Auth: Authenticated session; token header
- totalAmount
- totalCount
- settlement
- amount
- settlementId
- settlementDate
- settleTo
- utr
- status
- timestamp
GET /v1/settlements HTTP/1.1 token: <access_token>{ "status": true, "data": { "totalAmount": 48200.00, "totalCount": 3, "settlement": [ { "amount": 16400.00, "settlementId": "STL-20261017-01", "settlementDate": "2026-10-17", "settleTo": "HDFC0001234", "utr": "HDFCxxxxxxxx7788", "status": "SUCCESS", "timestamp": 1729200000 } ] } }Settlement bank settings
GET
/v1/settlements/bank-accountopenbankingReads the linked settlement bank account, IFSC and instant-settlement flag.
Auth: Session token header
- account
- ifsc
- beneficiaryName
- branch
- instantSettlement
- disableSettlementButton
- ifscLogo
GET /v1/settlements/bank-account HTTP/1.1 token: <access_token>{ "status": true, "data": { "account": "XXXXXXXX1234", "ifsc": "HDFC0001234", "beneficiaryName": "Sharma Kirana", "branch": "Karol Bagh", "instantSettlement": true, "disableSettlementButton": false, "ifscLogo": "https://cdn.example/ifsc/hdfc.png" } }Today collection breakup
GET
/v1/collections/today/summaryopenfinanceSplits today's inbound total into net settlement, BharatPe spend and EDI options.
Auth: Authenticated session; token header
- todayCollection
- todayCollectionAmount
- netSettlement
- spentOnBharatPe
- edis
GET /v1/collections/today/summary HTTP/1.1 token: <access_token>{ "status": true, "todayCollection": { "todayCollectionAmount": 12450.00, "title": "Today's collection" }, "netSettlement": { "amount": 11800.00 }, "spentOnBharatPe": [], "edis": [] }Home BP card balance
GET
/v1/wallet/dashboard-cardopenbankingLoads the home-page BharatPe card Amount shown on the merchant dashboard.
Auth: Authenticated session; token header
- Balance
- Amount
- Title
- IsOrder
- BPBItems
- XCard
GET /v1/wallet/dashboard-card HTTP/1.1 token: <access_token>{ "status": true, "data": { "Balance": { "Amount": 184250.50, "Title": "BharatPe Balance", "IsOrder": false }, "BPBItems": [], "XCard": null } }BharatPe account
GET
/v1/accounts/primaryopenbankingReads BharatPe-account current_balance, interest and withdrawal cap.
Auth: Authenticated session; token header; query balanceInfo
- balance_info
- current_balance
- current_interest
- total_interest
- current_principal
- loan_due_amount
- max_withdrawal_amount
- max_principal_limit
- today_collection
- consent_taken
- auto_settlement
- earning_active
GET /v1/accounts/primary?balanceInfo=true HTTP/1.1 token: <access_token>{ "status": true, "data": { "balance_info": { "current_balance": 184250.50, "current_interest": 12.40, "total_interest": 890.00, "current_principal": 150000.00, "loan_due_amount": 0, "max_withdrawal_amount": 184250.50, "max_principal_limit": 200000.00, "today_collection": 12450.00 }, "consent_taken": true, "auto_settlement": true, "earning_active": true } }Create send-money transaction
POST
/v1/merchant/supplier-transfersopenfinanceCreates an outbound send-money txn and returns bp_txn_id plus optional deeplink.
Auth: Session token header
- common_params
- params
- amount
- device_id
- install_id
- source
- txn_note
- bp_txn_id
- deeplink
- otp_flow
- is_redirect
POST /v1/merchant/supplier-transfers HTTP/1.1 token: <access_token> Content-Type: application/json { "common_params": {}, "params": { "amount": 2500.00, "device_id": "<device_id>", "install_id": "<install_id>", "source": "send_money", "txn_note": "Supplier payout" } }{ "status": true, "data": { "bp_txn_id": "BP-SM-778812", "deeplink": "upi://pay?pa=vendor@okicici", "otp_flow": false, "is_redirect": false, "source": "send_money" } }Send-money transactions
GET
/v1/merchant/supplier-transfers/logopenfinanceLists outbound send-money rows including the wire-typo benefiaciary_name field.
Auth: Session token header
- txns
- amount
- benefiaciary_name
- bp_txn_id
- mode
- status
- status_text
- timestamp
GET /v1/merchant/supplier-transfers/log HTTP/1.1 token: <access_token>{ "status": true, "data": { "txns": [ { "amount": 2500.00, "benefiaciary_name": "Vendor Traders", "bp_txn_id": "BP-SM-778812", "mode": "UPI", "status": "SUCCESS", "status_text": "Paid", "timestamp": 1729129999 } ] } }Download QR
GET
/v1/merchant/qr/imageopendataReturns the printable merchant QR image url and qrStatus.
Auth: Authenticated session; token header
- url
- msg
- qrStatus
GET /v1/merchant/qr/image HTTP/1.1 token: <access_token>{ "status": true, "data": { "url": "https://cdn.example/qr/BP12345678.png", "msg": "OK", "qrStatus": true } }Merchant UI profile
GET
/v1/merchant/profile-cardopendataLoads qr_layer VPAs with qr_string and download_url for the profile QR card.
Auth: Authenticated session; token header
- qr_layer
- merchant_status
- beneficiary_name
- business_name
- deeplink
- vpas
- download_url
- qr_string
- status
- bp_protect
- cohortId
GET /v1/merchant/profile-card HTTP/1.1 token: <access_token>{ "success": true, "response_code": 200, "data": { "qr_layer": { "merchant_status": "ACTIVE", "beneficiary_name": "Sharma Kirana", "business_name": "Sharma Kirana Store", "deeplink": "bharatpe://qr", "vpas": [ { "download_url": "https://cdn.example/qr/shop.png", "qr_string": "upi://pay?pa=shop@bharatpe", "status": "ACTIVE" } ] }, "bp_protect": {}, "cohortId": "c-merchant-in" } }Merchant loans
GET
/v1/credit/loansopenfinanceLists Easy Loans rows with EDI due amounts and the wire-typo paid_principle field.
Auth: Authenticated session; token header
- success
- message
- loadDetailDeeplink
- payEdiDeeplink
- loans
- loan_amount
- edi_amount
- due_amount
- pending_amount
- paid_principle
- status
GET /v1/credit/loans HTTP/1.1 token: <access_token>{ "success": true, "message": "OK", "loadDetailDeeplink": "bharatpe://loan/detail", "payEdiDeeplink": "bharatpe://loan/edi", "loans": [ { "loan_amount": 50000.00, "edi_amount": 4200.00, "due_amount": 4200.00, "pending_amount": 21000.00, "paid_principle": 29000.00, "status": "ACTIVE" } ] }
Data categories
- balances
- transactions
- merchant-profile
- settlements
- qr
- lending
Where teams use this data
Settlement UTR reconciliation
Nightly finance jobs join inbound payerhandle rows to settlement utr batches so shops can match bank credits without waiting for the next Soundbox day.
Collection OSINT for a mid
Investigators pull merchantname, fullVpa and today's todayCollectionAmount for a known mid when mapping a kirana's UPI intake.
Supplier payout from BharatPe account
ERP bots read current_balance then post create-txn rows and poll bp_txn_id / benefiaciary_name until status is SUCCESS.
Easy Loans EDI calendar
Lending stacks ingest due_amount and edi_amount so a shop's next Easy Loans installment can sit next to same-day UPI collections.
Frequently asked questions
Which identifier ties a BharatPe shop to its VPA?
Login returns mid and fullVpa; merchant info repeats mid, vpa, merchantname and qrstring for the same shop.
How are inbound UPI payments identified?
Each collection row carries payerhandle, payerName, amount and bankRefNo (also accepted as utr).
Where do settlement UTRs appear?
Settlement batches expose settlementId, settleTo, amount and utr; bank settings add account, ifsc and beneficiaryName.
Can outbound payouts be tracked?
Send-money lists return bp_txn_id, benefiaciary_name, mode, status and timestamp after a create-txn call.
Apps similar to BharatPe for Business
- Paytm for Business — Paytm for Business is One97 Communications' merchant app for Indian shops, covering All-in-One QR, Soundbox voice alerts, card POS machines, and daily bank settlements.
- PhonePe Business — PhonePe Business is PhonePe's merchant app for Indian shops to order in-store QR stickers, hear payments on a SmartSpeaker, and accept cards and UPI on a POS machine.
- Razorpay POS — Razorpay POS supplies Indian merchants with swipe terminals, Growth DQR codes, and Bharat Soundbox devices that take UPI and card payments in store.
- Pine Labs — Pine Labs sells Android POS terminals and Mini devices that combine POS, QR and a Soundbox so Indian retailers can take UPI and card payments at the counter.
- Mswipe — Mswipe is an RBI-approved payment aggregator whose Wisepos terminals and Boombox soundboxes let Indian shops accept cards, dynamic UPI QR and payment links.
- Google Pay for Business — Google Pay for Business is Google's India merchant console for collecting UPI payments, including QR-based acceptance and settlement account management.
- PayU — PayU offers Indian merchants Bharat QR for in-store and doorstep UPI collections plus POS and a payment gateway covering cards, UPI and net banking.
Topics
- BharatPe
- BharatPe for Business
- merchant UPI
- settlement UTR
- payerhandle
- fullVpa
- India merchant QR
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