Google Pay for Business icon

Google Pay for Business merchant QR, settlement and insights data API

Google LLC · Payments

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

  • Google Pay for Business screenshot 1
  • Google Pay for Business screenshot 2
  • Google Pay for Business screenshot 3
  • Google Pay for Business screenshot 4
  • Google Pay for Business screenshot 5
  • Google Pay for Business screenshot 6
  • Google Pay for Business screenshot 7
  • Google Pay for Business screenshot 8

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

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

    Reads 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/list openbanking

    Pages 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/rollup opendata

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

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

    Reads 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/list openbanking

    Lists 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/export openbanking

    Exports 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/insights opendata

    Loads 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/stats opendata

    Returns 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/insights opendata

    Loads 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/status opendata

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

    Loads 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/verification osint

    Returns 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

Get a quote