BharatPe for Business icon

BharatPe merchant QR, UPI and settlement data API

Resilient Innovations Private Limited · Payments

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

  • BharatPe for Business screenshot 1
  • BharatPe for Business screenshot 2
  • BharatPe for Business screenshot 3
  • BharatPe for Business screenshot 4

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/request osint

    Starts 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/verify osint

    Exchanges 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/me opendata

    Loads 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/collections openfinance

    Lists 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/settlements openfinance

    Returns 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-account openbanking

    Reads 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/summary openfinance

    Splits 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-card openbanking

    Loads 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/primary openbanking

    Reads 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-transfers openfinance

    Creates 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/log openfinance

    Lists 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/image opendata

    Returns 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-card opendata

    Loads 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/loans openfinance

    Lists 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

Get a quote