Migrating to Google UPP
What to change in your Lithic integration to move Google in-app push provisioning to UPP.
Google is replacing its legacy in-app push provisioning with UPP (Unified Push Provisioning). Google uses UPP for both web and in-app provisioning, and Lithic's Web Push Provisioning integration already runs on it. This page covers what changes in your in-app integration with Lithic.
Google is ending support for legacy in-app push provisioning at the end of 2026. Every app with an in-app "Add to Google Wallet" button must be migrated before then.
What changes
-
Lithic returns a second payload.
-
Today a Google Pay provision request returns one payload, and it produces a device token so the cardholder can tap to pay.
-
UPP adds a second payload carrying the FPAN (Funding Primary Account Number), which Google saves to the cardholder's Google Account so the card can also be used for online payments.
Parameter Produces provisioning_payloadThe device token used for contactless payments google_provisioning_payloadThe card saved to the cardholder's Google Account for online payments
-
-
You call Lithic at a different point in the flow.
- Today your app requests a payload from Lithic and then hands it to Google.
- Under UPP your app starts provisioning first, and Google calls back into your app for the payment credentials. Your Lithic request belongs inside that callback.
Where the Lithic call happens
Today your app calls Lithic before it hands anything to Google:
- Your app calls
/cards/{card_token}/provision, sendingdigital_wallet,client_wallet_account_id, andclient_device_id. Lithic returnsprovisioning_payload. - Your app passes that payload to Google's SDK to start provisioning.
Under UPP, provisioning starts first and Google calls back into your app for the payment credentials. Your Lithic call goes inside that callback:
- Your app starts provisioning through Google's SDK, with no payload.
- Google calls back into your app for the payment credentials, supplying a session identifier when it wants the FPAN payload.
- From inside that callback, your app calls
/cards/{card_token}/provisionwith theapi-version: 2026-07-01header, addingserver_session_idandgoogle_opc_requested. Lithic returnsprovisioning_payloadandgoogle_provisioning_payload. - Your app returns both payloads to Google's SDK.
Lithic API changes
The endpoint and method are unchanged.
POST https://api.lithic.com/v1/cards/{card_token}/provisionSend the api-version: 2026-07-01 header alongside your Authorization header. On this API version, all Google Pay in-app push provisioning uses UPP.
| Parameter | Change |
|---|---|
server_session_id | New. The session identifier Google supplies in the credentials callback |
google_opc_requested | New. Set from the value Google supplies in the credentials callback |
client_device_id | Now optional for Google Pay, so you can omit it when Google does not supply one |
google_provisioning_payload | New response parameter, present on every Google Pay response on this API version |
For the full parameter reference see Provision card (Digital Wallet) and the parameter table on In-App Push Provisioning.
Errors
- Sending
google_opc_requestedastruewithoutserver_session_idreturns a400. The request is not downgraded to a response carrying onlyprovisioning_payload. - If
google_provisioning_payloadcannot be generated, the whole request fails. There is no partial response to handle.
Testing
Google Pay UPP is not currently available in the sandbox environment.
As with web push provisioning, after your integration is finished Lithic will work with you to complete the required wallet provider launch test cases, then work with the wallet provider to review the testing and schedule a go-live date.
Migration checklist
- Move your
/cards/{card_token}/provisioncall inside Google's payment credentials callback. - Add the
api-version: 2026-07-01header to that request. - Send
server_session_idandgoogle_opc_requested, using the values Google supplies in the callback. - Read
google_provisioning_payloadfrom the response and return both payloads to Google's SDK. - Handle the
400returned whengoogle_opc_requestedistrueandserver_session_idis absent.
Google's requirements
Google has its own client-side requirements for UPP, including changes to your app beyond the Lithic request, functional test cases, and a launch approval process. Google distributes its documentation for upgrading to UPP under access control; request access from Google.
Updated 6 days ago
