Google Pay

By integrating Google Pay into your website or Android application, your customers can securely make one-touch payments using any credit or debit card connected to their Google account.

To start processing Google Pay™ payments, you must first register with Google. Once the integration is complete, you can add the 'Google Pay™' button to your checkout page and start requesting your customers' encrypted payment information.

For information on integrating with Google Pay, first, refer to the Google Pay API guide, Google Pay Web integration checklist, Google Pay Web Brand Guidelines, Google Pay Android integration checklist and Google Pay Android brand guidelines.

When you submit a payment data request to the Google API, be sure to include the following parameters:

'gateway': 'solid'
'gatewayMerchantId': '<replace with key from SOLID>'

Google Pay Web Request Sample

	apiVersion: 2,
	apiVersionMinor: 0,
	allowedPaymentMethods: [{
		type: 'CARD',
		parameters: {
			allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],
			allowedCardNetworks: ['AMEX', 'DISCOVER', 'MASTERCARD', 'VISA']
		tokenizationSpecification: {
			parameters: {
				'gateway': 'solid',
				'gatewayMerchantId': ''

To receive the key you must send a request for your account manager.



    Google Pay Request Body Parameters

order_idyesstring(100)Order ID specified in the merchant system.1526915864
amountyesintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents.2000
currencyyesstring(3)Order currency. 3 letter currency code under ISO-4217.USD
order_descriptionyesstring(255)Order description in UTF-8 code.

Example description


customer_emailyesstring(100)Customer email.


ip_addressyesstring(50)Customer IP (only public ones).
platformyesstring(6)Customer platform at the moment of payment. Available values: WEB- desktop, MOB - mobile version, APP - application.WEB
geo_countrynostring(3)Customer country subject to ISO 3166-1 alpha-3.GBR
order_datenostring(50)Date of order creation in format YYYY-MM-DD-HH-MM-SS.2015-12-21 11:21:30
order_itemsnostring(255)Order description in UTF-8 code.item 1, item 2
customer_account_idnostring(100)Customer ID in the merchant's system. Required for Subscription Payments 4dad42f808
customer_first_namenostring(100)Customer first name.John
customer_last_namenostring(100)Customer last name.Snow
customer_phonenostring(50)Customer phone number.380111111111
customer_date_of_birthnostring(50)Birthdate in YYYY-MM-DD format.2000-11-21
geo_citynostring(100)Customer City.New Castle
languagenostring(2)Customer language settings. Available values: RU - Russian, EN - English.en
fraudulentnobooleanCustomer is detected by the merchant system to be suspicious one. The payment will be effected via 3DS.TRUE
callback_urlnostring(255)URL of merchant page, where response with payment result will be sent via a host-to-host connection.



chargeback_notification_urlnostring(255)URL of merchant page, where the notification of chargeback will be sent.



alert_chargeback_notification_urlnostring(255)URL of merchant page, where the notification of chargeback alerts will be senthttp://merchant.example/chargeback_alerts
verifiednobooleanThe user was verified on the shop side.TRUE
retry_attemptnointegerA number of retry payment.1
traffic_sourcenostring(255)Source of traffic.facebook
transaction_sourcenostring(255)Source of transactions on site.main_menu
user_agentnostringUser-agent of the customer.

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36


order_numbernointegerA number of payments by the user.1
addressnostring(100)User billing addressNew York, 10005, 15 William St
statenostring(255)User billing stateWA
zip_codenostring(10)User billing zip code.  (mandatory parameter for USA location)10005
citynostring(100)User billing city New York

A serialized JSON string containing the encryptedMessage, ephemeralPublicKey, and tag. To simplify the signature verification process, this value is serialized.



Identifies which encryption/signing scheme this message has been created. In this way, the protocol can evolve over time if needed. If it is not set, assume ECv0.



Verifies the message came from Google. The signature is created using ECDSA.


deviceNostringDevice of the customer.

iPhone 8 iOS 12.0



Status URL on which user will be redirected after confirming payment.


websiteNostring(255)Website from which transaction took

Google Pay Request Sample

	"order_id": "1530101603341",
	"amount": 2000,
	"currency": "USD",
	"order_description": "Example description",
	"customer_email": "",
	"ip_address": "",
	"platform": "WEB",
	"geo_country": "CAN",
	"order_date": "2015-12-21 11:21:30",
	"order_items": "item 1, item 2",
	"customer_account_id": "4dad42f808",
	"customer_first_name": "John",
	"customer_last_name": "Snow",
	"customer_phone": "380111111111",
	"customer_date_of_birth": "2000-11-21",
	"geo_city": "New Castle",
	"language": "en",
	"fraudulent": true,
	"chargeback_notification_url": "http://merchant.example/chargebacka",
	"verified": true,
	"retry_attempt": 1,
	"traffic_source": "googlePay",
	"transaction_source": "main_menu",
	"user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
	"order_number": 1,
	"signedMessage": "{S4pvoy+1bCgGkKC4j/3/n5T0CSITOPFkFdV/m0KWkytlc1SLlYs1+OVToxjSNTfdc/pyZ8/7mjqDPrGzi86uJenRYrgadPNw3hwM3rkxKDcHAZswKC2WEvRnU4BnF9LSnSxYslgq+pSzp+BsUBFKGPjMo1ZsdCQLqlavj+VbxQKg4cgknACwWQrnll+gk+dir3BN/jJB/uJwPKglCG79gAge2jeViJUob1NAyFfInEDbVEYiQovCZO3yuwDrNVaL1uAufpB/eogIQQz6LYjW07v3Xni1As9GjGWVZvkmjLUyY9aX02ecEqhCTKFTd4crMsX4Nm8vjgejzUGKvLWcU7vVS3xtVBNp87k3D5NJ6V3tuPJdIHeH0kEq43IQTgTQIku+RnBkU/8KLBWPNWW7FRNm0AGVL8ZcE1ym3f2avl6CkQEWv311NEkbC/NEVFBh/ZFqzezqLyyzaUgepGFD3RbclihwLGvx0WXwe7RPTVh3raCJpDJOofjHg2mMNNL8xSQOWtmZWrxyClp10atxNdrPdcB3YVmbEpWR1d48eOW+AgEDc3bmUg5}",
	"protocolVersion": "ECv1",
	"signature": "MEQCIHZ8oOEXz0DzZTO3uU+zdMfmihpb3OMr3pQQ0HHgVLyiAiBmWqUzv3FuTGQCLyZA20awLfydQiR0IcOUBJlj/ZlaHQ=="

Google 3DS going through a few steps :

1) Google request
2) Redirect to URL 3DS verification

Please, note, `verify_url` can be received from the following  requests: Status or Notification.


    Google Pay Response Body Parameters 

transactionobjectAn object with information of transactions. 
transaction:idobjectTransaction identification within the order. It contains an object with detailed information about the specified transaction. Order can have several transactions.15301021459245b33818384a4e
transaction:operationstringTransaction type. Transaction types are described in respective
transaction:statusstringTransaction status within the order. Transaction statuses are described in respective directory.created
transaction:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents.100
transaction:currencystringTransaction currencyUSD
transactions:<transaction_id>:card:card token:tokenstringCard token551c1d70374af08b92cf6e91...087bc05
orderobjectObject with order information. 
order:order_idstringOrder ID specified in the merchant system.1530102145924
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents.100
order:currencystringOrder currency (3 letter code under ISO 4217).USD
order:refunded amountintegerAmount of refund0
order:fraudulentbooleanThe customer was detected on the merchant end to be suspicious one.true
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting.100
order:marketing_currencystringThe currency of order amount for marketing analytics.USD
order:statusstringStatus of payment processed. Types of order statuses are described in the respective directory.processing

Google Pay Response Example

	"order": {
		"order_id": "155446XXXXXX5742",
		"status": "processing",
		"amount": 100,
		"refunded_amount": 0,
		"currency": "USD",
		"marketing_amount": 100,
		"marketing_currency": "USD",
		"fraudulent": true
	"transaction": {
		"id": "155446XXXXXX7425ca743d4db1a1",
		"operation": "google-pay",
		"status": "created",
		"amount": 100,
		"currency": "USD"