--- title: "Token" slug: "token" updated: 2026-10-14T14:52:37Z published: 2026-10-14T14:52:37Z canonical: "developer.upgrade.com/token" --- > ## Documentation Index > Fetch the complete documentation index at: https://developer.upgrade.com/llms.txt > Use this file to discover all available pages before exploring further. # Token ### Callback Handler - Token The **token** key in the Callback handler response contains the Flex Pay payment details the merchant needs to process the payment in full. The structure of the token depends on the payout type: - **Direct settle:** the token includes the `order_id` and the `payout_type`, which is used to complete the direct settle transaction. - **Virtual credit card (VCC):** the token includes the card details and billing contact information required to charge the virtual card as you would any other credit card. See the samples below for each payout type. **Virtual Credit Card (VCC)** ```json {  "card_number": "string",  "card_ccv": "string",  "card_type": "string", // enum: "VISA", "MASTERCARD" or "UATP"  "expiration_month": "integer",  "expiration_year": "4-digit integer",  "name_on_card": "string",  "contact": {    "postal_code": "string",    "email": "string",    "first_name": "string",    "phone": "string",    "city": "string",    "region": "string", // short region name. e.g. "FL" for "Florida"    "last_name": "string",    "street_address": "string",    "country": "string" // two-letter country code e.g. US, CA (Canada)  } } ``` How to correctly retrieve the billing contact information? ⚠️Please make sure to use the data under the **contact** object instead of any other billing information provided by the user. ⚠️ It is highly recommended to process the payment directly without filling the on screen/hidden payment input form, however if for some reason you need to fill the hidden payment input form, please ensure the following security guidelines: 1. Users cannot see the virtual card information displayed on the partner payment input form or in the console. Please validate this by switching the payment options. 2. If there is any error during payment processing, make sure to use the payment input form to process the payment and validate that you are indeed cleaning the regular payment input form. **Direct Settle (Transactions API)** ```json {  "order_id": "string", // UUID  "payout_type": "string" // enum: "direct_settle" } ``` ⚠Token is NULL Please review the [Response Reason Code](/v1/docs/response-reason-code) details if the **token** value is **NULL**.