Initiate Payment

Using this API, you can initiate the payment request from customers in your purchase flow. In the message payload, you can add a specific business Virtual Payment Address (VPA) in which you want to receive the payment. If you do not pass the value in the vpa field, the default VPA (added during merchant onboarding) will receive the payment.

To initiate the payment, make the following POST request to the API:

  POST 
  
 https 
 : 
 // 
 nbupayments 
 . 
 googleapis 
 . 
 com 
 / 
 v1 
 / 
 merchantPayments 
 : 
 initiate 
 { 
  
 // 
  
 googleMerchantId 
  
 should 
  
 be 
  
 set 
 . 
  
 This 
  
 ID 
  
 is 
  
 globally 
  
 unique 
  
 across 
  
 all 
  
 Google 
  
 Pay 
  
 merchants 
 . 
  
  
 merchantInfo 
 ”: 
  
 { 
  
  
 googleMerchantId 
 ”: 
  
  
 BREKJWNFNFLS 
  
  
 } 
 , 
  
  
 userInfo 
 ”: 
  
 { 
  
 // 
  
 Phone 
  
 no 
 . 
  
 of 
  
 the 
  
 payer 
  
 in 
  
 E 
 .164 
  
 format 
  
  
 phoneNumber 
 ”: 
  
  
 + 
 919876543210 
  
  
 } 
 , 
  
  
 merchantTransactionDetails 
 ”: 
  
 { 
  
 // 
  
 Transaction 
  
 ID 
  
 from 
  
 Google 
  
 Pay 
  
 partner 
 . 
  
 This 
  
 must 
  
 be 
  
 unique 
  
 for 
  
 every 
  
 transaction 
  
 done 
  
 by 
  
 the 
  
 partner 
  
 and 
  
 should 
  
 be 
  
 in 
  
 accordance 
  
 with 
  
 the 
  
 syntax 
  
 agreed 
  
 upon 
  
 with 
  
 the 
  
 merchant 
  
 PSP 
 . 
  
  
 transactionId 
 ”: 
  
  
 transactionId 
  
 , 
  
 // 
  
 Amount 
  
 to 
  
 be 
  
 paid 
  
 by 
  
 user 
  
  
 amountPayable 
 ”: 
  
 { 
  
 // 
  
 The 
  
 3 
 - 
 letter 
  
 currency 
  
 code 
  
 defined 
  
 in 
  
 ISO 
  
 4217. 
  
  
 currencyCode 
 ”: 
  
  
 INR 
  
 , 
  
 // 
  
 The 
  
 whole 
  
 units 
  
 of 
  
 the 
  
 amount 
 . 
  
 // 
  
 For 
  
 example 
  
 if 
  
 currencyCode 
  
 is 
  
 "INR" 
 , 
  
 then 
  
 1 
  
 unit 
  
 is 
  
 one 
  
 rupee 
 . 
  
  
 units 
 ”: 
  
 100 
 , 
  
 // 
  
 Number 
  
 of 
  
 nano 
  
 ( 
 10 
 ^- 
 9 
 ) 
  
 units 
  
 of 
  
 the 
  
 amount 
 . 
  
  
 nanos 
 ”: 
  
 0 
  
 } 
 , 
  
 // 
  
 Description 
  
 for 
  
 the 
  
 transaction 
 . 
  
  
 description 
 ”: 
  
  
 Sample 
  
 description 
  
  
 // 
  
 UPI 
  
 Payment 
  
 Details 
  
 of 
  
 the 
  
 merchant 
 . 
  
  
 upiPaymentDetails 
 ”: 
  
 { 
  
 // 
  
 VPA 
  
 where 
  
 the 
  
 payment 
  
 needs 
  
 to 
  
 be 
  
 done 
 . 
  
 Need 
  
 to 
  
 be 
  
 specified 
  
 only 
  
 if 
  
 it 
  
 is 
  
 different 
  
 from 
  
 the 
  
 default 
  
 VPA 
 . 
  
  
 vpa 
 ”: 
  
  
 abc 
 @xyz 
  
  
 } 
  
 // 
  
 Details 
  
 about 
  
 GST 
 . 
  
 "gst" 
 : 
  
 { 
  
 // 
  
 Merchant 
  
 GSTIN 
  
 ( 
 Goods 
  
 and 
  
 Services 
  
 Tax 
  
 Identification 
  
 Number 
 ). 
  
 "gstin" 
 : 
  
 "29ABCDE1234F2Z5" 
  
 "gstBreakUp" 
 : 
  
 { 
  
 // 
  
 Goods 
  
 and 
  
 Services 
  
 Tax 
 . 
  
 "gst" 
 : 
  
 { 
  
 // 
  
 The 
  
 3 
 - 
 letter 
  
 currency 
  
 code 
  
 defined 
  
 in 
  
 ISO 
  
 4217. 
  
  
 currencyCode 
 ”: 
  
  
 INR 
  
 , 
  
 // 
  
 The 
  
 whole 
  
 units 
  
 of 
  
 the 
  
 amount 
 . 
  
 // 
  
 For 
  
 example 
  
 if 
  
 currencyCode 
  
 is 
  
 "INR" 
 , 
  
 then 
  
 1 
  
 unit 
  
 is 
  
 one 
  
 rupee 
 . 
  
  
 units 
 ”: 
  
 10 
 , 
  
 // 
  
 Number 
  
 of 
  
 nano 
  
 ( 
 10 
 ^- 
 9 
 ) 
  
 units 
  
 of 
  
 the 
  
 amount 
 . 
  
  
 nanos 
 ”: 
  
 0 
  
 } 
  
 // 
  
 Central 
  
 Goods 
  
 and 
  
 Services 
  
 Tax 
 . 
  
 "cgst" 
 : 
  
 { 
  
 // 
  
 The 
  
 3 
 - 
 letter 
  
 currency 
  
 code 
  
 defined 
  
 in 
  
 ISO 
  
 4217. 
  
  
 currencyCode 
 ”: 
  
  
 INR 
  
 , 
  
 // 
  
 The 
  
 whole 
  
 units 
  
 of 
  
 the 
  
 amount 
 . 
  
 // 
  
 For 
  
 example 
  
 if 
  
 currencyCode 
  
 is 
  
 "INR" 
 , 
  
 then 
  
 1 
  
 unit 
  
 is 
  
 one 
  
 rupee 
 . 
  
  
 units 
 ”: 
  
 5 
 , 
  
 // 
  
 Number 
  
 of 
  
 nano 
  
 ( 
 10 
 ^- 
 9 
 ) 
  
 units 
  
 of 
  
 the 
  
 amount 
 . 
  
  
 nanos 
 ”: 
  
 0 
  
 } 
  
 // 
  
 State 
  
 Goods 
  
 and 
  
 Services 
  
 Tax 
 . 
  
 "sgst" 
 : 
  
 { 
  
 // 
  
 The 
  
 3 
 - 
 letter 
  
 currency 
  
 code 
  
 defined 
  
 in 
  
 ISO 
  
 4217. 
  
  
 currencyCode 
 ”: 
  
  
 INR 
  
 , 
  
 // 
  
 The 
  
 whole 
  
 units 
  
 of 
  
 the 
  
 amount 
 . 
  
 // 
  
 For 
  
 example 
  
 if 
  
 currencyCode 
  
 is 
  
 "INR" 
 , 
  
 then 
  
 1 
  
 unit 
  
 is 
  
 one 
  
 rupee 
 . 
  
  
 units 
 ”: 
  
 3 
 , 
  
 // 
  
 Number 
  
 of 
  
 nano 
  
 ( 
 10 
 ^- 
 9 
 ) 
  
 units 
  
 of 
  
 the 
  
 amount 
 . 
  
  
 nanos 
 ”: 
  
 0 
  
 } 
  
 // 
  
 Integrated 
  
 Goods 
  
 and 
  
 Services 
  
 Tax 
 . 
  
 "igst" 
 : 
  
 { 
  
 // 
  
 The 
  
 3 
 - 
 letter 
  
 currency 
  
 code 
  
 defined 
  
 in 
  
 ISO 
  
 4217. 
  
  
 currencyCode 
 ”: 
  
  
 INR 
  
 , 
  
 // 
  
 The 
  
 whole 
  
 units 
  
 of 
  
 the 
  
 amount 
 . 
  
 // 
  
 For 
  
 example 
  
 if 
  
 currencyCode 
  
 is 
  
 "INR" 
 , 
  
 then 
  
 1 
  
 unit 
  
 is 
  
 one 
  
 rupee 
 . 
  
  
 units 
 ”: 
  
 1 
 , 
  
 // 
  
 Number 
  
 of 
  
 nano 
  
 ( 
 10 
 ^- 
 9 
 ) 
  
 units 
  
 of 
  
 the 
  
 amount 
 . 
  
  
 nanos 
 ”: 
  
 0 
  
 } 
  
 // 
  
 GST 
  
 compensation 
  
 cess 
 . 
  
 "cess" 
 : 
  
 { 
  
 // 
  
 The 
  
 3 
 - 
 letter 
  
 currency 
  
 code 
  
 defined 
  
 in 
  
 ISO 
  
 4217. 
  
  
 currencyCode 
 ”: 
  
  
 INR 
  
 , 
  
 // 
  
 The 
  
 whole 
  
 units 
  
 of 
  
 the 
  
 amount 
 . 
  
 // 
  
 For 
  
 example 
  
 if 
  
 currencyCode 
  
 is 
  
 "INR" 
 , 
  
 then 
  
 1 
  
 unit 
  
 is 
  
 one 
  
 rupee 
 . 
  
  
 units 
 ”: 
  
 1 
 , 
  
 // 
  
 Number 
  
 of 
  
 nano 
  
 ( 
 10 
 ^- 
 9 
 ) 
  
 units 
  
 of 
  
 the 
  
 amount 
 . 
  
  
 nanos 
 ”: 
  
 0 
  
 } 
  
 } 
  
 } 
  
 "invoice" 
 : 
  
 { 
  
 "invoiceNumber" 
 : 
  
 "Invoice456" 
  
 // 
  
 The 
  
 time 
  
 of 
  
 invoice 
  
 in 
  
 RFC 
  
 3339 
  
 format 
 . 
  
 Eg 
 , 
  
 2017 
 - 
 02 
 - 
 15 
 T16 
 : 
 20 
 : 
 30 
 + 
 05 
 : 
 30 
  
 for 
  
 IST 
  
 timezone 
 ; 
  
 2017 
 - 
 02 
 - 
 15 
 T10 
 : 
 50 
 : 
 30 
 Z 
  
 for 
  
 UTC 
 . 
  
 "invoiceTime" 
 : 
  
  
 2017 
 - 
 02 
 - 
 15 
 T10 
 : 
 50 
 : 
 30 
 Z 
  
  
 } 
  
 } 
 , 
  
 // 
  
 The 
  
 time 
  
 at 
  
 which 
  
 the 
  
 request 
  
 expires 
  
 in 
  
 RFC 
  
 3339 
  
 format 
 . 
  
 Eg 
 , 
  
 2017 
 - 
 02 
 - 
 15 
 T16 
 : 
 20 
 : 
 30 
 + 
 05 
 : 
 30 
  
 for 
  
 IST 
  
 timezone 
 ; 
  
 2017 
 - 
 02 
 - 
 15 
 T10 
 : 
 50 
 : 
 30 
 Z 
  
 for 
  
 UTC 
 . 
  
  
 expiryTime 
 ”: 
  
  
 2017 
 - 
 02 
 - 
 15 
 T10 
 : 
 50 
 : 
 30 
 Z 
  
 , 
  
 // 
  
 The 
  
 platform 
  
 at 
  
 which 
  
 the 
  
 request 
  
 is 
  
 originating 
  
  
 originatingPlatform 
 ”: 
  
  
 ANDROID_APP 
  
 } 
 

Parameters

The following data parameter for the userInfo object must be passed in the API request:

Parameters Type of value Description Required/Optional
phonenumber
String User mobile number in E.164 format. Required

Merchant info

The following data parameter for the merchantInfo object must be passed in the API request:

Parameters Type of value Description Required/Optional
googleMerchantId
String Google assigned merchant ID (Generated at onboarding time). Required

Merchant transaction details

The following data parameters for the merchantTransactionDetails object must be passed in the API request:

Parameters Type of value Description Required/Optional
transactionId
String A unique transaction ID generated by the partner for every transaction. This ID should be in accordance with the syntax agreed upon with the merchant PSP. Required
description
String Description for a transaction. Optional

UPI payment details

To add a specific VPA, you can pass the following data parameter in the upiPaymentDetails object.

Parameters Type of value Description Required/Optional
vpa
String Business Virtual Payment Address (VPA) that receives the payment. Specify only if the VPA is different from the default one. Optional

Amount payable

The following are the data parameters to pass into the amountPayable object nested under the merchantTransactionDetails object.

Parameters Type of value Description Required/Optional
currencyCode
String The currency in which you want to make payment. Required
units
Number Amount to be paid. Required
nanos
Number Number of nano (10^-9) units of the amount. Required

Set expiry time

Pass the time at which the payment request expires in the expiryTime key. The time must be defined in the RFC 3339 format (example 2018-06-02T11:50:30Z). This field is optional.

Set originating platform

You must set the originating platform by passing the enum value for originatingPlatform key. This field is required. The following are the possible values for originatingPlatform key.

  • ANDROID_APP
  • ANDROID_WEB
  • IOS_APP
  • IOS_WEB
  • INSTORE_POS
  • DESKTOP
  • IVR
  • OTHER

Gst

The following are the data parameters to pass into the gst object nested under the merchantTransactionDetails object.

Parameters Type of value Description Required/Optional
gstin
String Merchant GSTIN (Goods and Services Tax Identification Number). Optional

Gst

The following are the data parameters to pass into the gst object nested under the gstBreakup object.

Parameters Type of value Description Required/Optional
currencyCode
String The currency in which you want to make payment. Required
units
Number GST amount Required
nanos
Number Number of nano (10^-9) units of the amount. Required

Cgst

The following are the data parameters to pass into the cgst object nested under the gstBreakup object.

Parameters Type of value Description Required/Optional
currencyCode
String The currency in which you want to make payment. Required
units
Number CGST amount Required
nanos
Number Number of nano (10^-9) units of the amount. Required

Igst

The following are the data parameters to pass into the igst object nested under the gstBreakup object.

Parameters Type of value Description Required/Optional
currencyCode
String The currency in which you want to make payment. Required
units
Number IGST amount Required
nanos
Number Number of nano (10^-9) units of the amount. Required

Sgst

The following are the data parameters to pass into the sgst object nested under the gstBreakup object.

Parameters Type of value Description Required/Optional
currencyCode
String The currency in which you want to make payment. Required
units
Number SGST amount Required
nanos
Number Number of nano (10^-9) units of the amount. Required

Cess

The following are the data parameters to pass into the cess object nested under the gstBreakup object.

Parameters Type of value Description Required/Optional
currencyCode
String The currency in which you want to make payment. Required
units
Number Cess amount Required
nanos
Number Number of nano (10^-9) units of the amount. Required

Invoice

The following are the data parameters to pass into the invoice object nested under the merchantTransactionDetails object.

Parameters Type of value Description Required/Optional
invoiceNumber
String The number on the invoice Optional
invoiceTime
String The time of invoice in RFC 3339 format. Eg, 2017-02-15T16:20:30+05:30 for IST timezone; 2017-02-15T10:50:30Z for UTC. Optional

Response

Success

If successful, the POST request returns a 200 OK HTTP status code, including an empty JSON.

Failure

The API returns the following response if the request fails:

 {
  “error”: {
    “code”: 400,
    “status”: “INVALID_ARGUMENT”,
    “message”: “Invalid phone number”
  }
} 

API specific error codes

Code Title Description
403
PERMISSION_DENIED Merchant is not authorized.
400
INVALID_ARGUMENT Request contains invalid arguments.
404
NOT_FOUND User was not found.
404
NOT_FOUND Merchant was not found.
409
ALREADY_EXISTS Duplicate transaction ID.
400
FAILED_PRECONDITION Merchant has not setup to receive payments.
Create a Mobile Website
View Site in Mobile | Classic
Share by: