API

DigitalWallet

A card in a digital wallet: Apple Pay and Google Pay provisioning, and payment tokens.

Operations

Every route this entity exposes. Each route links to its own reference on this page.

Method Route SDK operation Returns
POST /spend/profiles/{profileId}/cards/{cardToken}/payment-tokens/{paymentTokenUniqueReference}/activation create No Content - Payment token have been successfully activated or declined
POST /spend/profiles/{profileId}/cards/{cardToken}/payment-tokens create Returns all the payment tokens except deactivated
POST /twcard-data/v1/push-provisioning/encrypted-payload/apple-pay create Encrypted cardholder information for Apple Pay
POST /twcard-data/v1/push-provisioning/encrypted-payload/google-pay create Encrypted cardholder information for Google Pay

Examples

One example per SDK, generated from the API model. The argument names are the parameters and fields of this entity, and the values are placeholders. The examples are not compiled or executed.

Golang

Construct client as shown in the Golang setup, then call the operations:

created, err := client.DigitalWallet(nil).Create(map[string]any{"card_token": "example", "profile_id": 1, "activation": "example"}, nil)
if err != nil {
    panic(err)
}
fmt.Println(created)

Lua

Construct client as shown in the Lua setup, then call the operations:

local created, err = client:DigitalWallet():create({ card_token = "example", profile_id = 1, activation = "example" })

PHP

Construct client as shown in the PHP setup, then call the operations:

$created = $client->DigitalWallet()->create(["card_token" => "example", "profile_id" => 1, "activation" => "example"]);

Python

Construct client as shown in the Python setup, then call the operations:

created = client.DigitalWallet().create({ "card_token": "example", "profile_id": 1, "activation": "example" })

Ruby

Construct client as shown in the Ruby setup, then call the operations:

created = client.DigitalWallet.create({ "card_token" => "example", "profile_id" => 1, "activation" => "example" })

TypeScript

Construct client as shown in the TypeScript setup, then call the operations:

const created = await client.DigitalWallet().create({ card_token: "example", profile_id: 1, activation: "example" })

Fields

Field Type Required Description
activation string Yes Approve or decline a payment token activation
paymentTokens array No Payment Tokens
walletNames array No List of supported wallet types.

create

POST /spend/profiles/{profileId}/cards/{cardToken}/payment-tokens/{paymentTokenUniqueReference}/activation

Operation ID: digitalWalletActivatePaymentToken.

Authentication: bearer token (UserToken) or bearer token (ClientCredentialsToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID
cardToken path string (uuid) Yes The card token
paymentTokenUniqueReference path string Yes The payment token unique reference issued by the scheme token service
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
activation enum: APPROVE, DECLINE Yes Approve or decline a payment token activation

Example request body:

{
  "activation": "APPROVE"
}

Responses

204: No Content - Payment token have been successfully activated or declined
400: Invalid request

application/json

Property Type Required Description
errors array of object No A list of specific validation failures.
errors[].code string No A specific code for the validation failure type.
errors[].detail string No A detailed description of the validation failure.
errors[].ref string No A reference to the field that failed validation.
instance string No The uri the triggered a validation error
status string No The HTTP status error code
title string No A validation type exception
type string (uri-reference) No Validation type error
403: Forbidden request

application/problem+json

Property Type Required Description
code string No A specific application-level code
detail string No A detailed description of the validation failure
instance string No The uri the triggered a validation error
status string No The HTTP status error code
title string No The title of the exception
type string No An access type exception
404: Not found

application/problem+json

Property Type Required Description
code string No A specific application-level code
detail string No A detailed description of the validation failure
instance string No The uri the triggered a validation error
status string No The HTTP status error code
title string No The title of the exception
type string No An domain type exception
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

500: Server side error

application/problem+json

Property Type Required Description
detail string No A detailed description of the validation failure
instance string No The uri the triggered a validation error
status string No The HTTP status error code
title string No The title of the exception
type string No An server type exception

POST /spend/profiles/{profileId}/cards/{cardToken}/payment-tokens

Operation ID: pushProvisioningPaymentTokensList.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID.
cardToken path string (uuid) Yes The card token.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
walletNames array of enum: APPLE_PAY, GOOGLE_PAY No List of supported wallet types.

Responses

200: Returns all the payment tokens except deactivated

application/json

Property Type Required Description
paymentTokens array of object No
paymentTokens[].cardToken string No Card token.
paymentTokens[].creationTime string (date-time) No Time when the payment token was created.
paymentTokens[].modificationTime string (date-time) No Time when the payment token was last modified.
paymentTokens[].panUniqueReference string No Unique reference of the PAN.
paymentTokens[].paymentTokenUniqueReference string No Unique reference of the payment token.
paymentTokens[].provisioningStatus enum: ACTIVE, SUSPENDED, INACTIVE, DEACTIVATED No Payment token status. - ACTIVE , The token is active and available for payments - SUSPENDED , The token has been temporarily suspended - INACTIVE , The token is in the active wallet, but requires additional user authentication for use - DEACTIVATED , The status will not be visible, you can safely ignore it
paymentTokens[].walletName enum: GOOGLE_PAY, APPLE_PAY No Wallet name.

Example response:

{
  "paymentTokens": [
    {
      "cardToken": "a3f90c98-1cd1-4488-9050-2e32c696f8fa",
      "creationTime": "2025-02-06T15:34:23.877041000Z",
      "modificationTime": "2025-02-06T15:34:23.877343000Z",
      "panUniqueReference": "FSHRMC000025538959679bc73c9d4fdc8031b20fa91d0e3b",
      "paymentTokenUniqueReference": "DSHRMC0000255389d1106783179b420aa5b5ca09ba2f12b8",
      "provisioningStatus": "ACTIVE",
      "walletName": "GOOGLE_PAY"
    },
    {
      "cardToken": "a3f90c98-1cd1-4488-9050-2e32c696f8fa",
      "creationTime": "2025-06-25T22:05:47.116016000Z",
      "modificationTime": "2025-06-25T22:05:47.116077000Z",
      "panUniqueReference": "",
      "paymentTokenUniqueReference": "DSHRMC0000255389e2f7133754ab4e2f87fc323730fdfd8e",
      "provisioningStatus": "INACTIVE",
      "walletName": "GOOGLE_PAY"
    },
    {
      "cardToken": "a3f90c98-1cd1-4488-9050-2e32c696f8fa",
      "creationTime": "2025-08-19T21:28:28.434472000Z",
      "modificationTime": "2025-08-19T21:28:28.434738000Z",
      "panUniqueReference": "FAPLMC0000255389d7df244df7244803aa2c4ce2a29c242a",
      "paymentTokenUniqueReference": "DAPLMC000025538967ea1d7972414a93a6544a07dae27a8c",
      "provisioningStatus": "ACTIVE",
      "walletName": "APPLE_PAY"
    },
    {
      "cardToken": "a3f90c98-1cd1-4488-9050-2e32c696f8fa",
      "creationTime": "2025-08-04T01:37:30.658315000Z",
      "modificationTime": "2025-08-04T01:37:30.658552000Z",
      "panUniqueReference": "FAPLMC0000255389d7df244df7244803aa2c4ce2a29c242a",
      "paymentTokenUniqueReference": "DAPLMC0000255389c25cd65bf8084c168dbc4aa59708841a",
      "provisioningStatus": "SUSPENDED",
      "walletName": "APPLE_PAY"
    }
  ]
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /twcard-data/v1/push-provisioning/encrypted-payload/apple-pay

Operation ID: pushProvisioningApplePayGet.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
x-tw-twcard-card-token header string (uuid) Yes The card token identifying which card to retrieve push provisioning data for.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
certificates array of string Yes DER encoded X.509 ECC leaf and sub CA certificates, each encoded in Base64.
nonce string Yes One time use nonce generated by Apple Servers and HEX encoded on iOS app.
nonceSignature string Yes The device and account specific signature of the nonce generated by Apple and HEX encoded on iOS app.

Responses

200: Encrypted cardholder information for Apple Pay

application/json

Property Type Required Description
activationData string No Encrypted activation data following card scheme and wallet provider specifications. The response is encoded in Base64.
encryptedPassData string No Encrypted authentication data following card scheme and wallet provider specifications. The response is encoded in Base64.
ephemeralKey string No Ephemeral key used to encrypt authentication data. The response is encoded in Base64.
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /twcard-data/v1/push-provisioning/encrypted-payload/google-pay

Operation ID: pushProvisioningGooglePayGet.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
x-tw-twcard-card-token header string (uuid) Yes The card token identifying which card to retrieve push provisioning data for.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
clientDeviceId string Yes Stable device identification set by Wallet Provider. Could be computer identifier or ID tied to hardware such as TEE_ID or SE_ID. This field must match the clientDeviceId wallet provider will send in token provision request.
clientWalletAccountId string Yes Client-provided consumer ID that identifies the Wallet Account Holder entity.

Responses

200: Encrypted cardholder information for Google Pay

application/json

Property Type Required Description
cardDisplayName string No Default card name that will be displayed in wallet.
cardLastDigits string No Last 4 digits of the card PAN.
cardNetwork enum: CARD_NETWORK_VISA, CARD_NETWORK_MASTERCARD No Card network.
opaquePaymentCard string No Encrypted authentication and activation data following card scheme and wallet provider specifications. The response is encoded in Base64.
tokenServiceProvider enum: TOKEN_PROVIDER_VISA, TOKEN_PROVIDER_MASTERCARD No Token service provider.
userAddress object No Entire address and phone number associated with the card.
userAddress.addressLine1 string No First line of the address.
userAddress.addressLine2 string No Second line of the address.
userAddress.administrativeArea string No State or administrative area.
userAddress.countryCode string No Country code.
userAddress.locality string No City or locality.
userAddress.name string No Cardholder name.
userAddress.phoneNumber string No Phone number associated with the card.
userAddress.postalCode string No Postal code.
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.