Google Pay for Business merchant QR, settlement and insights data API
Google Pay for Business is Google's merchant app for Indian kiranas, restaurants, clinics and other UPI-accepting shops that collect on a Bharat QR / UPI QR, a GPay Soundbox and, for larger merchants, UPI credit-card and wallet rails. Shopkeepers sign in with a Google account, pin a static QR at the till, hear each inbound payment announced, and open the Transactions and Settlements tabs to see today's take and the bank credit that follows. Instant or scheduled daily settlement lands in a linked savings or current account identified by IFSC; the same login hosts Google Ads for the shop, a Google Business Profile on Maps, staff QR access, and a loan hub for eligible merchants. The product is India-first (UPI, Aadhaar/CKYC, GSTIN, PAN) and sits next to PhonePe Business, Paytm for Business and BharatPe for Business for the same neighbourhood stores, while consumer Google Pay (Tez) remains the buyer-side counterpart.
Inbound UPI rows stamp googleTransactionId and receivedAmount against the shop's upiId. Batch payouts add settlementAmount, settlementStatus and the destination maskedAccountNumber plus ifscCode. The till QR returns qrCodeString and bharatQrDetails for the plate taped at the counter.
The merchant card carries merchantDisplayName, gstin and Aadhaar/CKYC flags (hasAadhaar, ckycReferenceNumber). Daily aggregations roll aggregatedDebitCreditOneDay and amountReceivedThisMonth; Maps ratings surface averageRating. Soundbox dues expose pendingDuesAmount and soundboxDeviceState.
Reconcilers join collections to IFSC credits, lenders score shops from the loan-hub credit profile, and store-ops map physical QR plates onto a merchantId. 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.
Get merchant profile
POST
/v1/shops/profileosintLoads the signed-in shop's merchantId, display and registered names, GSTIN and KYC flags used to seed the home drawer after login.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- merchantId
- merchantExternalId
- merchantEntityId
- merchantActorId
- merchantDisplayName
- businessDisplayName
- businessRegisteredName
- merchantCategory
- gstin
- hasGstin
- hasPan
- hasAadhaar
POST /v1/shops/profile HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90" }{ "merchantId": "merchant:IN:8f2c1a90", "merchantExternalId": "GP4B-IN-10482937461", "merchantEntityId": "ent-7c21", "merchantActorId": "actor:8f2c1a90", "merchantDisplayName": "Verma General Store", "businessDisplayName": "Verma General Store", "businessRegisteredName": "RAJ VERMA", "merchantCategory": "GROCERY", "gstin": "07AABCU9603R1ZX", "hasGstin": true, "hasPan": true, "hasAadhaar": true }Get collection balance
POST
/v1/shops/balanceopenbankingReads the shop's unsettled collection balance in amountInMicros for the home bank-balance card.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- currentBalance
- amountInMicros
- currencyCode
- instrumentId
- defaultCollectionInstrumentId
POST /v1/shops/balance HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90" }{ "currentBalance": { "amountInMicros": 124305000000, "currencyCode": "INR" }, "instrumentId": "instr-axis-4821", "defaultCollectionInstrumentId": "instr-axis-4821" }List merchant transactions
POST
/v1/shops/payments/listopenbankingPages inbound UPI collections for the Transactions tab: payer, amount, UPI id and settlement state per row.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- transactionId
- googleTransactionId
- displayVendorTransactionId
- receivedAmount
- payerName
- payerActorIds
- upiId
- settlementStatus
- isSettled
- settledTime
- creditAmount
- debitAmount
POST /v1/shops/payments/list HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90", "pageSize": 20 }{ "transactions": [ { "transactionId": "txn-9c41e2", "googleTransactionId": "GPay:2026-10-20:9c41e2", "displayVendorTransactionId": "AXIS482193847561", "receivedAmount": { "amountInMicros": 350000000, "currencyCode": "INR" }, "payerName": "ANITA SHARMA", "payerActorIds": ["actor:payer-441"], "upiId": "anita@okaxis", "settlementStatus": "SETTLED", "isSettled": true, "settledTime": "2026-10-20T13:12:04Z", "creditAmount": { "amountInMicros": 350000000, "currencyCode": "INR" } } ], "nextPageToken": "CggIARAC" }Get transaction summary
POST
/v1/shops/payments/rollupopendataReturns 1-day / 7-day / 30-day debit-credit rollups that power the Transactions summary insight cards.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- aggregatedDebitCreditOneDay
- aggregatedDebitCreditSevenDays
- aggregatedDebitCreditOneMonth
- amountReceivedThisMonth
- totalTransactionsCount
- firstTransactionTimestamp
- dailyAggregations
- aggregatedMonetaryValue
POST /v1/shops/payments/rollup HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90" }{ "aggregatedDebitCreditOneDay": { "creditAmount": {"amountInMicros": 18450000000, "currencyCode": "INR"}, "debitAmount": {"amountInMicros": 0, "currencyCode": "INR"} }, "aggregatedDebitCreditSevenDays": { "creditAmount": {"amountInMicros": 112300000000, "currencyCode": "INR"} }, "aggregatedDebitCreditOneMonth": { "creditAmount": {"amountInMicros": 486700000000, "currencyCode": "INR"} }, "amountReceivedThisMonth": {"amountInMicros": 486700000000, "currencyCode": "INR"}, "totalTransactionsCount": 1284, "firstTransactionTimestamp": "2024-03-11T08:02:11Z", "dailyAggregations": [], "aggregatedMonetaryValue": {"amountInMicros": 486700000000, "currencyCode": "INR"} }Get merchant QR code
POST
/v1/shops/codes/primaryopenbankingReturns the till QR payload (UPI intent plus Bharat QR EMV) shown on the home QR card and exportable plate.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- merchantQrCode
- qrCodeString
- upiId
- upiIds
- bharatQrDetails
- applicationQrCodeString
POST /v1/shops/codes/primary HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90" }{ "merchantQrCode": { "qrCodeString": "upi://pay?pa=verma.store@okaxis&pn=Verma%20General%20Store&cu=INR", "upiId": "verma.store@okaxis", "upiIds": ["verma.store@okaxis"], "bharatQrDetails": { "qrCodeString": "0002010102112637..." }, "applicationQrCodeString": "upi://pay?pa=verma.store@okaxis&pn=Verma%20General%20Store&cu=INR" } }Get settlement bank account
POST
/v1/shops/payout-accountopenbankingReads the linked settlement instrument: masked account, IFSC, bank name and name-on-account used on the bank-accounts settings card.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- bankAccountDetails
- maskedAccountNumber
- bankAccountLastFourDigits
- ifscCode
- bankName
- accountType
- nameOnAccount
- bankSettlementTime
POST /v1/shops/payout-account HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90", "instrumentId": "instr-axis-4821" }{ "bankAccountDetails": { "maskedAccountNumber": "********7305", "bankAccountLastFourDigits": "7305", "ifscCode": "UTIB0000123", "bankName": "Axis Bank", "accountType": "CURRENT", "nameOnAccount": "RAJ VERMA", "bankSettlementTime": "2026-10-20T13:05:00Z" } }List batch settlements
POST
/v1/shops/payouts/listopenbankingLists instant and scheduled payout batches for the Settlements tab, including remaining manual-trigger credits.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- scheduledBatchSettlements
- settlementType
- settlementStatus
- settlementAmount
- totalAmountToSettle
- expectedSettlementTime
- settlementCompletionTime
- settlementCutoffTime
- numberOfSettlementTriggersRemaining
- relatedBatchSettlement
POST /v1/shops/payouts/list HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90", "pageSize": 10 }{ "scheduledBatchSettlements": [ { "settlementType": "INSTANT", "settlementStatus": "SETTLED", "settlementAmount": {"amountInMicros": 18450000000, "currencyCode": "INR"}, "totalAmountToSettle": {"amountInMicros": 18450000000, "currencyCode": "INR"}, "expectedSettlementTime": "2026-10-20T13:00:00Z", "settlementCompletionTime": "2026-10-20T13:04:22Z", "settlementCutoffTime": "2026-10-20T12:55:00Z", "numberOfSettlementTriggersRemaining": 2, "relatedBatchSettlement": "batch-20261020-1300" } ] }Export transactions
POST
/v1/shops/payments/exportopenbankingExports a date-range statement / MDR report whose CSV columns are transactionId, payerName, paidVia, amount and settlementAmount.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- transactionId
- creationTime
- payerName
- paidVia
- amount
- settlementAmount
- type
POST /v1/shops/payments/export HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90", "dateRange": { "startDate": "2026-10-01", "endDate": "2026-10-20" } }{ "rows": [ { "transactionId": "txn-9c41e2", "creationTime": "2026-10-20T09:14:03Z", "payerName": "ANITA SHARMA", "paidVia": "UPI", "amount": {"amountInMicros": 350000000, "currencyCode": "INR"}, "settlementAmount": {"amountInMicros": 350000000, "currencyCode": "INR"}, "type": "CREDIT" } ] }Get customer insights
POST
/v1/shops/audience/insightsopendataLoads the analytics dashboard tiles for new versus repeat payers and unique transacting users.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- customerInsights
- transactedUniqueUsersCountRange
- totalTransactionsCount
- amountReceivedThisMonth
POST /v1/shops/audience/insights HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90" }{ "customerInsights": { "transactedUniqueUsersCountRange": "100-500", "totalTransactionsCount": 1284, "amountReceivedThisMonth": {"amountInMicros": 486700000000, "currencyCode": "INR"} } }Get Google Ads stats
POST
/v1/shops/promotions/statsopendataReturns local Google Ads performance for the in-app ads management screen: impressions, clicks, call clicks and cost per conversion.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- campaignId
- adsDisplayStatus
- impressions
- clicks
- callsClicksCounts
- costPerConversion
POST /v1/shops/promotions/stats HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90", "campaignId": "camp-4412" }{ "campaignId": "camp-4412", "adsDisplayStatus": "LIVE", "impressions": 18420, "clicks": 612, "callsClicksCounts": 48, "costPerConversion": {"amountInMicros": 12500000, "currencyCode": "INR"} }Get Google Business Profile insights
POST
/v1/shops/listing/insightsopendataLoads Maps / Google Business Profile insight cards (views, searches, ratings) bound to the linked GBP location.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- gmbInsights
- averageRating
- gbpPhoneNumber
POST /v1/shops/listing/insights HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90" }{ "gmbInsights": { "averageRating": 4.6, "gbpPhoneNumber": "+91-98765-43210" } }Get Soundbox device details
POST
/v1/shops/speaker/statusopendataReads Soundbox subscription state, pending dues and shipment AWB for the device-status and order-tracking screens.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- soundboxDeviceState
- soundboxDisplayDetails
- pendingDuesAmount
- currentPlanServiceFee
- awbNumber
POST /v1/shops/speaker/status HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90" }{ "soundboxDeviceState": "ACTIVE", "soundboxDisplayDetails": { "pendingDuesAmount": {"amountInMicros": 199000000, "currencyCode": "INR"}, "currentPlanServiceFee": {"amountInMicros": 199000000, "currencyCode": "INR"} }, "awbNumber": "GD123456789IN" }Get loan offer
POST
/v1/shops/credit/offeropenfinanceLoads the loan-hub offer and repayment consent objects shown to eligible merchants.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- loanData
- creditProfile
- merchantCreditData
- loanRepaymentInfo
- pendingDuesAmount
POST /v1/shops/credit/offer HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90" }{ "loanData": { "creditProfile": {}, "merchantCreditData": {}, "loanRepaymentInfo": { "pendingDuesAmount": {"amountInMicros": 0, "currencyCode": "INR"} } } }Get Aadhaar verification status
POST
/v1/shops/identity/verificationosintReturns Aadhaar eKYC / CKYC and PAN verification state used by the onboarding and settings verification screens.
Auth: OAuth 2.0 Bearer token of the signed-in Google account, sent in the Authorization header.
- hasAadhaar
- aadhaarConsentRecordDetails
- ckycReferenceNumber
- panId
- registeredPan
- hasPan
- hasCkyc
POST /v1/shops/identity/verification HTTP/1.1 Authorization: Bearer <oauth_access_token> Content-Type: application/json { "merchantId": "merchant:IN:8f2c1a90" }{ "hasAadhaar": true, "aadhaarConsentRecordDetails": {}, "ckycReferenceNumber": "CKYC-IN-998877", "panId": "ABCDE1234F", "registeredPan": "ABCDE1234F", "hasPan": true, "hasCkyc": true }
Data categories
- merchant-profile
- transactions
- settlements
- qr
- kyc
- bank-accounts
- ads
- business-profile
- loans
Where teams use this data
UPI collection to IFSC recon
Nightly finance jobs join payment-list rows (googleTransactionId, receivedAmount, payerName, upiId) to payout-batch records (settlementAmount, settlementCompletionTime, relatedBatchSettlement) and the destination maskedAccountNumber plus ifscCode so a kirana can match instant and scheduled credits without waiting for the next Soundbox day.
QR plate inventory
Store-ops tools pull qrCodeString, upiId and bharatQrDetails from the till-QR call, then bind a scanned physical plate onto merchantId / merchantExternalId.
Shop OSINT from merchantId
Investigators resolve merchantId to merchantDisplayName, businessRegisteredName, gstin and maskedAccountNumber when mapping a shop that collects on a Google Pay Bharat QR.
Lending from till mix
Receivables-backed lenders read aggregatedDebitCreditOneMonth, amountReceivedThisMonth, transactedUniqueUsersCountRange and the loan-hub creditProfile / loanRepaymentInfo before quoting working capital.
Frequently asked questions
Which identifier ties a Google Pay for Business shop to its QR?
The shop profile returns merchantId (and merchantExternalId); the QR call repeats that shop on qrCodeString, upiId and bharatQrDetails for the till plate.
How are inbound UPI collections identified?
Each payment-list row carries googleTransactionId, displayVendorTransactionId, receivedAmount, payerName, upiId and settlementStatus.
Where do settlement bank details appear?
The payout-account call exposes maskedAccountNumber, ifscCode, bankName and nameOnAccount; the payout-batch list adds settlementAmount, settlementCompletionTime and remaining instant-settlement triggers.
Does the surface include ads, Maps and Soundbox?
Yes. The promotion-stats call returns campaignId, impressions, clicks and costPerConversion; the listing-insights call returns averageRating for the linked Google Business Profile; the speaker-status call returns soundboxDeviceState and pendingDuesAmount.
Apps similar to Google Pay for Business
- Paytm for Business — Paytm for Business is One97's India merchant app for All-in-One QR, SoundBox voice alerts, card machines, payment links and bank settlements — the same in-store UPI collection job as Google Pay for Business.
- PhonePe Business — PhonePe Business is PhonePe's merchant app for Indian shops, with Scan and Pay QR stickers, SmartSpeaker audio confirmations, and a POS that takes cards and UPI at the counter.
- BharatPe for Business — BharatPe for Business is Resilient Innovations' merchant app for Indian shops, with BharatPe QR, Speaker voice alerts, Swipe card terminals and settlement of UPI collections.
- Razorpay POS — Razorpay POS supplies Indian retailers with in-store swipe machines, Growth DQR codes, and Tap & Scan / Bharat Soundbox devices that take UPI and card payments.
- Pine Labs — Pine Labs sells in-store POS, Mini, VoicePod and UPI products so Indian retailers can take card and QR payments at the counter with audio alerts.
- Mswipe — Mswipe is an Indian payment aggregator whose Wisepos terminals and Boombox soundboxes let shops accept cards, dynamic UPI QR and payment links, with a merchant app for settlements.
- 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
- Google Pay for Business
- GPay merchant QR
- UPI settlement
- googleTransactionId
- ifscCode
- qrCodeString
- India merchant UPI
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