Payments with Customer Tokens
The customer token represents customer-related information including details for a payment card or electronic check, billing address, shipping address, and merchant defined data. You can make a payment using an existing customer token or create one. To make a payment using a new customer token, you must include token creation in the authorization request. To process a payment using an existing customer token, you must include the customer token ID as the value in the paymentInformation.customer.id field.
Authorize a Payment with a Customer Token
This section provides the information you need to authorize a payment with a customer token.
Endpoint
POST /pts/v2/payments
POST /pts/v2/payments
Example
{ "clientReferenceInformation": { "code": "12345678" }, "paymentInformation": { "customer": { "id": "F45FB3E443AC3C57E053A2598D0A9CFF" } }, "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.00" } }}{ "_links": { "authReversal": { "method": "POST", "href": "/pts/v2/payments/7055928871556818104953/reversals" }, "self": { "method": "GET", "href": "/pts/v2/payments/7055928871556818104953" }, "capture": { "method": "POST", "href": "/pts/v2/payments/7055928871556818104953/captures" } }, "clientReferenceInformation": { "code": "12345678" }, "id": "7055928871556818104953", "orderInformation": { "amountDetails": { "authorizedAmount": "10.00", "currency": "USD" } }, "paymentAccountInformation": { "card": { "type": "001" } }, "paymentInformation": { "tokenizedCard": { "type": "001" }, "instrumentIdentifier": { "id": "7010000000016241111", "state": "ACTIVE" }, "shippingAddress": { "id": "0F35F0D99AD088B5E063A2598D0AE066" }, "paymentInstrument": { "id": "0F35E9CFEA463E34E063A2598D0A3FC2" }, "card": { "type": "001" }, "customer": { "id": "B21E6717A6F03479E05341588E0A303F" } }, "pointOfSaleInformation": { "terminalId": "111111" }, "processorInformation": { "approvalCode": "888888", "networkTransactionId": "123456789619999", "transactionId": "123456789619999", "responseCode": "100", "avs": { "code": "X", "codeRaw": "I1" } }, "reconciliationId": "67467352CRIISD1G", "status": "AUTHORIZED", "submitTimeUtc": "2024-01-18T15:48:07Z"}The request response returns the payment instrument and shipping address IDs that are used as the customer's defaults.
Network Token Variant
The following example authorizes a payment using a customer token that is linked to a network token.
{ "clientReferenceInformation": { "code": "12345678" }, "paymentInformation": { "customer": { "id": "F60328413BAB09A4E053AF598E0A33DB" } }, "orderInformation": { "amountDetails": { "totalAmount": "102.21", "currency": "USD" } }}{ "_links": { "authReversal": { "method": "POST", "href": "/pts/v2/payments/6778647071126384904953/reversals" }, "self": { "method": "GET", "href": "/pts/v2/payments/6778647071126384904953" }, "capture": { "method": "POST", "href": "/pts/v2/payments/6778647071126384904953/captures" } }, "clientReferenceInformation": { "code": "TC50171_3" }, "id": "6778647071126384904953", "issuerInformation": { "responseRaw": "0110322000000E100002000....." }, "orderInformation": { "amountDetails": { "authorizedAmount": "102.21", "currency": "USD" } }, "paymentAccountInformation": { "card": { "type": "002" } }, "paymentInformation": { "tokenizedCard": { "type": "002" }, "instrumentIdentifier": { "id": "7020000000010603216", "state": "ACTIVE" }, "shippingAddress": { "id": "F60328413BAE09A4E053AF598E0A33DB" }, "paymentInstrument": { "id": "F6032841BE33098EE053AF598E0AB0A5" }, "card": { "type": "002" }, "customer": { "id": "F60328413BAB09A4E053AF598E0A33DB" } }, "pointOfSaleInformation": { "terminalId": "08244117" }, "processingInformation": { "paymentSolution": "014" }, "processorInformation": { "paymentAccountReferenceNumber": "50015OU4U5UYXLV127XTONYN49CL1", "merchantNumber": "000844028303882", "approvalCode": "831000", "networkTransactionId": "0602MCC603474", "transactionId": "0602MCC603474", "responseCode": "00", "avs": { "code": "Y", "codeRaw": "Y" } }, "reconciliationId": "EUHW1EMHIZ3O", "status": "AUTHORIZED", "submitTimeUtc": "2023-03-03T17:31:48Z"}The request response returns the payment instrument and shipping address IDs that are used as the customer's defaults.
Create a Customer Token with Validated Payment Details
This section describes how to create a customer with validated payment details.
Endpoint
POST /pts/v2/payments
POST /pts/v2/payments
Example
{ "clientReferenceInformation": { "code": "TC50171_3" }, "processingInformation": { "commerceIndicator": "internet", "actionList": [ "TOKEN_CREATE" ], "actionTokenTypes": [ "customer", "paymentInstrument", "shippingAddress" ] }, "orderInformation": { "billTo": { "country": "US", "lastName": "Deo", "address2": "Address 2", "address1": "201 S. Division St.", "postalCode": "48104-2201", "locality": "Ann Arbor", "administrativeArea": "MI", "firstName": "John", "phoneNumber": "999999999", "district": "MI", "buildingNumber": "123", "company": "Visa", "email": "{% t key="test-email" /%}" }, "shipTo": { "country": "US", "lastName": "Deo", "address2": "Address 2", "address1": "201 S. Division St.", "postalCode": "48104-2201", "locality": "Ann Arbor", "administrativeArea": "MI", "firstName": "John", "phoneNumber": "999999999", "district": "MI", "buildingNumber": "123", "company": "Visa", "email": "{% t key="test-email" /%}" }, "amountDetails": { "totalAmount": "102.00", "currency": "USD" } }, "paymentInformation": { "card": { "expirationYear": "2031", "number": "4895379987X11515", "securityCode": "089", "expirationMonth": "12" } }}{ "_links": { "authReversal": { "method": "POST", "href": "/pts/v2/payments/6760630088136127303955/reversals" }, "self": { "method": "GET", "href": "/pts/v2/payments/6760630088136127303955" }, "capture": { "method": "POST", "href": "/pts/v2/payments/6760630088136127303955/captures" } }, "clientReferenceInformation": { "code": "TC50171_3" }, "id": "6760630088136127303955", "orderInformation": { "amountDetails": { "authorizedAmount": "102.00", "currency": "USD" } }, "paymentAccountInformation": { "card": { "type": "001" } }, "paymentInformation": { "tokenizedCard": { "type": "001" }, "card": { "type": "001" } }, "pointOfSaleInformation": { "terminalId": "111111" }, "processorInformation": { "paymentAccountReferenceNumber": "V0010013019326121174070050420", "approvalCode": "888888", "networkTransactionId": "123456789619999", "transactionId": "123456789619999", "responseCode": "100", "avs": { "code": "X", "codeRaw": "I1" } }, "reconciliationId": "69816012FDTK35GM", "status": "AUTHORIZED", "submitTimeUtc": "2023-02-10T21:03:29Z", "tokenInformation": { "instrumentidentifierNew": false, "instrumentIdentifier": { "state": "ACTIVE", "id": "7030000000014911515" }, "shippingAddress": { "id": "F45FB3E443AF3C57E053A2598D0A9CFF" }, "paymentInstrument": { "id": "F45FC6785E3C31A2E053A2598D0A5346" }, "customer": { "id": "F45FB3E443AC3C57E053A2598D0A9CFF" } }}| Field | Type | Description |
|---|---|---|
orderInformation.amountDetails.currency | string | The currency for the order. Use the three-character ISO Standard Currency Code. |
orderInformation.amountDetails.totalAmount | string | The total amount for the order. |
orderInformation.billTo.address1 | string | The first line of the billing street address. |
orderInformation.billTo.administrativeArea | string | State or province in the billing address. |
orderInformation.billTo.country | string | Country of the billing address. Use the two-character ISO Standard Country Code. |
orderInformation.billTo.email | string | The customer's billing email address. |
orderInformation.billTo.firstName | string | The customer's first name. |
orderInformation.billTo.lastName | string | The customer's last name. |
orderInformation.billTo.locality | string | City in the billing address. |
orderInformation.billTo.postalCode | string | ZIP or postal code in the billing address. |
paymentInformation.card.expirationMonth | string | Card expiration month in two-digit format. For example, 12. |
paymentInformation.card.expirationYear | string | Card expiration year in four-digit format. For example, 2031. |
paymentInformation.card.number | string | The customer's card number. |
processingInformation.actionList | string | Set to TOKEN_CREATE. |
processingInformation.actionTokenTypes | string | Set to customer. |
Optional Fields
| Field | Type | Description |
|---|---|---|
paymentInformation.card.type | string | The card type code. For example, 001 for Visa. |
Make a Credit with a Customer Token
This section describes how to make a credit with a customer token.
Endpoint
POST /pts/v2/credits
POST /pts/v2/credits
Example
{ "clientReferenceInformation": { "code": "12345678" }, "paymentInformation": { "customer": { "id": "F45FB3E443AC3C57E053A2598D0A9CFF" } }, "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.00" } }}{ "_links": { "void": { "method": "POST", "href": "/pts/v2/credits/7055967677826132904951/voids" }, "self": { "method": "GET", "href": "/pts/v2/credits/7055967677826132904951" } }, "clientReferenceInformation": { "code": "12345678" }, "creditAmountDetails": { "currency": "USD", "creditAmount": "10.00" }, "id": "7055967677826132904951", "orderInformation": { "amountDetails": { "currency": "USD" } }, "paymentAccountInformation": { "card": { "type": "001" } }, "paymentInformation": { "tokenizedCard": { "type": "001" }, "instrumentIdentifier": { "id": "7030000000014831523", "state": "ACTIVE" }, "shippingAddress": { "id": "F45FD8DE51B99E9CE053A2598D0AFDFA" }, "paymentInstrument": { "id": "F45FE45E7993C7DBE053A2598D0AED19" }, "card": { "type": "001" }, "customer": { "id": "F45FB3E443AC3C57E053A2598D0A9CFF" } }, "processorInformation": { "paymentAccountReferenceNumber": "V0010013019326121538313096266", "approvalCode": "888888", "responseCode": "100" }, "reconciliationId": "67444961BRIL0BB8", "status": "PENDING", "submitTimeUtc": "2024-01-18T16:52:48Z"}| Field | Type | Description |
|---|---|---|
clientReferenceInformation.code | string | Unique reference code for the transaction. |
orderInformation.amountDetails.currency | string | The currency for the order. Use the three-character ISO Standard Currency Code. |
orderInformation.amountDetails.totalAmount | string | The total amount for the order. |
paymentInformation.customer.id | string | The ID of the customer token to use for the credit. |
To process a payment using a payment instrument token, include the customer token ID as the value in the paymentInformation.paymentInstrument.id field. You can make payments using non-default payment instruments associated with the customer.
Authorize a Payment with a Non-Default Payment Instrument
Authorize a payment using a non-default payment instrument.
Endpoint
POST /pts/v2/payments
POST /pts/v2/payments
Example
{ "clientReferenceInformation": { "code": "12345678" }, "paymentInformation": { "paymentInstrument": { "id": "0F3BB131F8143A58E063A2598D0AB921" } }, "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.00" } }}{ "_links": { "authReversal": { "method": "POST", "href": "/pts/v2/payments/7055952648586653304951/reversals" }, "self": { "method": "GET", "href": "/pts/v2/payments/7055952648586653304951" }, "capture": { "method": "POST", "href": "/pts/v2/payments/7055952648586653304951/captures" } }, "clientReferenceInformation": { "code": "12345678" }, "id": "7055952648586653304951", "orderInformation": { "amountDetails": { "authorizedAmount": "10.00", "currency": "USD" } }, "paymentAccountInformation": { "card": { "type": "001" } }, "paymentInformation": { "tokenizedCard": { "type": "001" }, "instrumentIdentifier": { "id": "7010000000016241111", "state": "ACTIVE" }, "paymentInstrument": { "id": "0F3BB131F8143A58E063A2598D0AB921" }, "card": { "type": "001" } }, "pointOfSaleInformation": { "terminalId": "111111" }, "processorInformation": { "approvalCode": "888888", "networkTransactionId": "123456789619999", "transactionId": "123456789619999", "responseCode": "100", "avs": { "code": "X", "codeRaw": "I1" } }, "reconciliationId": "67468244CRIL0U0Y", "status": "AUTHORIZED", "submitTimeUtc": "2024-01-18T16:27:45Z"}| Field | Type | Description |
|---|---|---|
paymentInformation.paymentInstrument.id | string | The customer token ID of the non-default payment instrument. |
orderInformation.amountDetails.totalAmount | string | The total amount for the order. |
orderInformation.amountDetails.currency | string | The currency for the order. Use the three-character ISO Standard Currency Code. |
Make a Credit with a Non-Default Payment Instrument
Process a credit (refund) using a non-default payment instrument.
Endpoint
POST /pts/v2/credits
POST /pts/v2/credits
Example
{ "clientReferenceInformation": { "code": "12345678" }, "paymentInformation": { "paymentInstrument": { "id": "0F3BB131F8143A58E063A2598D0AB921" } }, "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.00" } }}{ "_links": { "void": { "method": "POST", "href": "/pts/v2/credits/7055968581386446104953/voids" }, "self": { "method": "GET", "href": "/pts/v2/credits/7055968581386446104953" } }, "clientReferenceInformation": { "code": "12345678" }, "creditAmountDetails": { "currency": "USD", "creditAmount": "10.00" }, "id": "7055968581386446104953", "orderInformation": { "amountDetails": { "currency": "USD" } }, "paymentAccountInformation": { "card": { "type": "001" } }, "paymentInformation": { "tokenizedCard": { "type": "001" }, "instrumentIdentifier": { "id": "7010000000016241111", "state": "ACTIVE" }, "paymentInstrument": { "id": "0F3BB131F8143A58E063A2598D0AB921" }, "card": { "type": "001" } }, "processorInformation": { "approvalCode": "888888", "responseCode": "100" }, "reconciliationId": "67445196PRILCQCN", "status": "PENDING", "submitTimeUtc": "2024-01-18T16:54:18Z"}| Field | Type | Description |
|---|---|---|
paymentInformation.paymentInstrument.id | string | The customer token ID of the non-default payment instrument. |
orderInformation.amountDetails.totalAmount | string | The total amount for the order. |
orderInformation.amountDetails.currency | string | The currency for the order. Use the three-character ISO Standard Currency Code. |
Thanks for your feedback!
Last published: September 29, 2026