Shift4 Tokens API

The Tokens API from Shift4 — 5 operation(s) for tokens.

Operations 5

POST /tokens/add TokenStore Add #
POST /tokens/duplicate TokenStore Duplicate #
POST /tokens/delete TokenStore Delete #
GET /tokens/universaltoken Universal Token #
POST /tokens/4words Get Four Words #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/shift4-tokens-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

shift4-tokens-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.7.57
  title: Shift4 Payment Tokens API
  contact:
    url: https://www.shift4.com/contact-us/
servers:
- url: https://api.shift4test.com/api/rest/v1
  description: Host Direct Test URL
- url: https://api.shift4api.net/api/rest/v1
  description: Host Direct Production URL
tags:
- name: Tokens
paths:
  /tokens/add:
    servers:
    - url: https://api.shift4test.com/api/rest/v1
      description: Host Direct Test URL
    - url: https://api.shift4api.net/api/rest/v1
      description: Host Direct Production URL
    - url: https://192.168.1.10:277/api/rest/v1
      description: Locally Installed UTG URL
    - url: https://192.168.1.20:8085/api/rest/v1
      description: Commerce Engine For On Premise URL
    - url: https://api.shift4test.com/api/rest/v1
      description: Commerce Engine For Cloud Test URL
    - url: https://api.shift4api.net/api/rest/v1
      description: Commerce Engine For Cloud Production URL
    post:
      tags:
      - Tokens
      summary: TokenStore Add
      operationId: tokensadd
      security:
      - AccessToken: []
      description: 'This function requests that CHD be added to the Global Token Vault and that a card token be returned for future use. This function cannot be used for EMV processing.


        **Integration Methods:**

        - Host Direct

        - Locally Installed UTG

        - Commerce Engine For On Premise

        - Commerce Engine For Cloud


        See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option.


        See the [JSON Body Schemas](/guides/quickstart#json-body-schemas) for more details on the various JSON body formats.

        '
      parameters:
      - $ref: '#/components/parameters/InterfaceVersion'
      - $ref: '#/components/parameters/InterfaceName'
      - $ref: '#/components/parameters/CompanyName'
      - $ref: '#/components/parameters/AccessToken'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/tokens_add_comengdevice'
              - $ref: '#/components/schemas/tokens_add_comengcloud'
              - $ref: '#/components/schemas/tokens_add_utgdevice'
              - $ref: '#/components/schemas/tokens_add_p2pe_idtech'
              - $ref: '#/components/schemas/tokens_add_p2pe_tdesdukpt_emv'
              - $ref: '#/components/schemas/tokens_add_p2pe_tdesdukpt_msr'
              - $ref: '#/components/schemas/tokens_add_p2pe_onguardsde_emv'
              - $ref: '#/components/schemas/tokens_add_p2pe_onguardsde_msr'
              - $ref: '#/components/schemas/tokens_add_p2pe_aes_mce'
              - $ref: '#/components/schemas/tokens_add_unencryptedcard'
              - $ref: '#/components/schemas/tokens_add_ach'
      responses:
        '200':
          description: Request was processed
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/tokens_add_response_card'
                - $ref: '#/components/schemas/tokens_add_response_ach'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        '504':
          $ref: '#/components/responses/TimeoutResponse'
  /tokens/duplicate:
    servers:
    - url: https://api.shift4test.com/api/rest/v1
      description: Host Direct Test URL
    - url: https://api.shift4api.net/api/rest/v1
      description: Host Direct Production URL
    - url: https://192.168.1.10:277/api/rest/v1
      description: Locally Installed UTG URL
    post:
      tags:
      - Tokens
      summary: TokenStore Duplicate
      operationId: tokensduplicate
      security:
      - AccessToken: []
      description: 'This function requests that a new card token be generated using an existing card token. This request can be used to deposit a card token into a Global TokenStore or as a means to continue using a token that is about to expire. The card’s short-term data (if sent by the interface) will be stored until it is used or for the period configured in the merchant’s [Lighthouse Transaction Manager](https://ltm.shift4test.com/) account.


        **Note: This request only works for Legacy TrueToken style tokens. It will not work for Global Token Vault style tokens.**


        **Integration Methods:**

        - Host Direct

        - Locally Installed UTG


        See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option.

        '
      parameters:
      - $ref: '#/components/parameters/InterfaceVersion'
      - $ref: '#/components/parameters/InterfaceName'
      - $ref: '#/components/parameters/CompanyName'
      - $ref: '#/components/parameters/AccessToken'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - dateTime
              - card
              properties:
                dateTime:
                  $ref: '#/components/schemas/DateTime'
                apiOptions:
                  $ref: '#/components/schemas/ApiOptions'
                card:
                  type: object
                  required:
                  - token
                  properties:
                    token:
                      type: object
                      required:
                      - value
                      properties:
                        serialNumber:
                          $ref: '#/components/schemas/CardTokenSerialNumber'
                        value:
                          $ref: '#/components/schemas/CardTokenValue'
                customer:
                  $ref: '#/components/schemas/Customer'
                device:
                  type: object
                  properties:
                    terminalId:
                      $ref: '#/components/schemas/DeviceTerminalId'
            example:
              dateTime: '2021-04-15T09:18:23.283-07:00'
              card:
                token:
                  serialNumber: '266'
                  value: 1119eqetd26hfne4
      responses:
        '200':
          description: Request was processed
          content:
            application/json:
              schema:
                properties:
                  result:
                    type: array
                    items:
                      type: object
                      properties:
                        dateTime:
                          $ref: '#/components/schemas/DateTime'
                        card:
                          type: object
                          properties:
                            expirationDate:
                              $ref: '#/components/schemas/CardExpirationDateResponse'
                            number:
                              $ref: '#/components/schemas/CardMaskedNumber'
                            type:
                              $ref: '#/components/schemas/CardTypeResp'
                            token:
                              $ref: '#/components/schemas/CardToken'
                        merchant:
                          $ref: '#/components/schemas/MerchantResponse'
                        server:
                          $ref: '#/components/schemas/Server'
                        universalToken:
                          $ref: '#/components/schemas/UniversalToken'
              example:
                result:
                - dateTime: '2022-05-10T06:34:25.049-07:00'
                  card:
                    expirationDate: 1230
                    number: XXXXXXXXXXXX1119
                    type: VS
                    token:
                      value: 1119djw7fh2jwo4r
                  merchant:
                    mid: 15877
                    name: Merchant XYZ
                  server:
                    name: TM01CE
                  universalToken:
                    value: 97032276-5944-00000001-16985FD179D
        '400':
          $ref: '#/components/responses/CardTokenErrorResponse'
        '504':
          $ref: '#/components/responses/TimeoutResponse'
  /tokens/delete:
    servers:
    - url: https://api.shift4test.com/api/rest/v1
      description: Host Direct Test URL
    - url: https://api.shift4api.net/api/rest/v1
      description: Host Direct Production URL
    - url: https://192.168.1.10:277/api/rest/v1
      description: Locally Installed UTG URL
    post:
      tags:
      - Tokens
      summary: TokenStore Delete
      operationId: tokensdelete
      security:
      - AccessToken: []
      description: 'This function requests that a token be deleted from the TrueToken vault. This process is irreversible. Once the token is deleted, there is no way to recover it.


        **Note: This request only works for Legacy TrueToken style tokens. It will not work for Global Token Vault style tokens.**


        **Integration Methods:**

        - Host Direct

        - Locally Installed UTG


        See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option.

        '
      parameters:
      - $ref: '#/components/parameters/InterfaceVersion'
      - $ref: '#/components/parameters/InterfaceName'
      - $ref: '#/components/parameters/CompanyName'
      - $ref: '#/components/parameters/AccessToken'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - dateTime
              - card
              properties:
                dateTime:
                  $ref: '#/components/schemas/DateTime'
                card:
                  type: object
                  required:
                  - token
                  properties:
                    token:
                      type: object
                      required:
                      - value
                      properties:
                        value:
                          $ref: '#/components/schemas/CardTokenValue'
            example:
              dateTime: '2021-04-15T09:18:23.283-07:00'
              card:
                token:
                  value: 1119eqetd26hfne4
      responses:
        '200':
          description: Request was processed
          content:
            application/json:
              schema:
                properties:
                  result:
                    type: array
                    items:
                      type: object
                      properties:
                        dateTime:
                          $ref: '#/components/schemas/DateTime'
                        card:
                          type: object
                          properties:
                            token:
                              $ref: '#/components/schemas/CardToken'
                        merchant:
                          $ref: '#/components/schemas/MerchantResponse'
                        server:
                          $ref: '#/components/schemas/Server'
              example:
                result:
                - dateTime: '2022-05-10T06:34:25.049-07:00'
                  card:
                    token:
                      value: 1119eqetd26hfne4
                  merchant:
                    mid: 15877
                    name: Merchant XYZ
                  server:
                    name: TM01CE
        '400':
          $ref: '#/components/responses/CardTokenErrorResponse'
        '504':
          $ref: '#/components/responses/TimeoutResponse'
  /tokens/universaltoken:
    servers:
    - url: https://api.shift4test.com/api/rest/v1
      description: Host Direct Test URL
    - url: https://api.shift4api.net/api/rest/v1
      description: Host Direct Production URL
    - url: https://192.168.1.10:277/api/rest/v1
      description: Locally Installed UTG URL
    - url: https://192.168.1.20:8085/api/rest/v1
      description: Commerce Engine For On Premise URL
    - url: https://api.shift4test.com/api/rest/v1
      description: Commerce Engine For Cloud Test URL
    - url: https://api.shift4api.net/api/rest/v1
      description: Commerce Engine For Cloud Production URL
    get:
      tags:
      - Tokens
      summary: Universal Token
      operationId: tokensuniversaltoken
      security:
      - AccessToken: []
      description: 'This function requests that the existing universal token for a card be returned.


        *Note: The GET request does not support a request body. Sending an empty request body may result in an error.*


        **Integration Methods:**

        - Host Direct

        - Locally Installed UTG

        - Commerce Engine For On Premise

        - Commerce Engine For Cloud


        See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option.

        '
      parameters:
      - $ref: '#/components/parameters/InterfaceVersion'
      - $ref: '#/components/parameters/InterfaceName'
      - $ref: '#/components/parameters/CompanyName'
      - $ref: '#/components/parameters/AccessToken'
      - $ref: '#/components/parameters/CardNumber'
      - $ref: '#/components/parameters/P2PEData'
      - $ref: '#/components/parameters/P2PEFormat'
      - $ref: '#/components/parameters/P2PEKsn'
      - $ref: '#/components/parameters/TokenSerialNumber'
      - $ref: '#/components/parameters/TokenValue'
      - $ref: '#/components/parameters/TrackData'
      responses:
        '200':
          description: Request was processed
          content:
            application/json:
              schema:
                properties:
                  result:
                    type: array
                    items:
                      type: object
                      properties:
                        dateTime:
                          $ref: '#/components/schemas/DateTime'
                        merchant:
                          $ref: '#/components/schemas/MerchantResponse'
                        server:
                          $ref: '#/components/schemas/Server'
                        universalToken:
                          $ref: '#/components/schemas/UniversalToken'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        '504':
          $ref: '#/components/responses/TimeoutResponse'
  /tokens/4words:
    servers:
    - url: https://api.shift4test.com/api/rest/v1
      description: Host Direct Test URL
    - url: https://api.shift4api.net/api/rest/v1
      description: Host Direct Production URL
    - url: https://192.168.1.10:277/api/rest/v1
      description: Locally Installed UTG URL
    post:
      tags:
      - Tokens
      summary: Get Four Words
      operationId: tokens4words
      security:
      - AccessToken: []
      description: 'This function is used to generate a unique combination of four words that can be used to reference cardholder data (CHD).


        **Note: This functionality is supported with Legacy TrueTokens only. It is not supported with GTV tokens.**


        **Integration Methods:**

        - Host Direct

        - Locally Installed UTG


        See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option.

        '
      parameters:
      - $ref: '#/components/parameters/InterfaceVersion'
      - $ref: '#/components/parameters/InterfaceName'
      - $ref: '#/components/parameters/CompanyName'
      - $ref: '#/components/parameters/AccessToken'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - dateTime
              - card
              properties:
                dateTime:
                  $ref: '#/components/schemas/DateTime'
                card:
                  type: object
                  required:
                  - token
                  properties:
                    token:
                      $ref: '#/components/schemas/CardToken'
            example:
              dateTime: '2021-04-15T09:18:23.283-07:00'
              card:
                token:
                  value: '8048471746471119'
      responses:
        '200':
          description: Request was processed
          content:
            application/json:
              schema:
                properties:
                  result:
                    type: array
                    items:
                      type: object
                      properties:
                        dateTime:
                          $ref: '#/components/schemas/DateTime'
                        card:
                          $ref: '#/components/schemas/CardResponseFourWords'
                        merchant:
                          $ref: '#/components/schemas/MerchantResponse'
                        server:
                          $ref: '#/components/schemas/Server'
        '400':
          $ref: '#/components/responses/CardTokenErrorResponse'
        '504':
          $ref: '#/components/responses/TimeoutResponse'
components:
  schemas:
    P2PEType0102IDTECH:
      type: object
      required:
      - data
      - format
      properties:
        data:
          $ref: '#/components/schemas/P2PEData'
        format:
          $ref: '#/components/schemas/P2PEFormatIDTech'
    tokens_add_p2pe_idtech:
      title: P2PE - ID TECH - EMV/MSR/Manual
      type: object
      required:
      - dateTime
      - p2pe
      properties:
        dateTime:
          $ref: '#/components/schemas/DateTime'
        p2pe:
          $ref: '#/components/schemas/P2PEType0102IDTECH'
        apiOptions:
          $ref: '#/components/schemas/ApiOptions'
        customer:
          $ref: '#/components/schemas/Customer'
      example:
        dateTime: '2021-04-15T09:18:23.283-07:00'
        p2pe:
          data: 027101801F2D1E00939B%*432100******1119^VS/DUAL TRACK^2212******?*;432100******1119=2212******?*CECE3FCE7781142BEC8D0E267AE89F5D3C7E235BF1A70E637951E8D93003E5A2586C336CA4A3B31F6639B04005BB12A716D8BC4D3AB125C27AB11A9DDC02816569D42A20B036EE5E2C71CB70565FB43B000000000000000000000000000000000000000000000000000000000000000000000000000000003434345434363138343962994950010038200415953903
          format: '01'
        apiOptions:
        - RETURNEXPDATE
    CustomerPostalCode:
      type: string
      minLength: 1
      maxLength: 9
      example: '65144'
      description: 'Cardholder’s ZIP/postal code from their billing statement. This field is used in AVS. Do not include special characters.


        **Note: This field only allows alphanumeric characters (a-z, A-Z, 0-9). Special characters including - are not allowed. If you are sending in zip+4 you must not include the dash so 89134-1234 would be sent as 891341234**

        '
    DeviceCapability:
      type: object
      writeOnly: true
      description: '**Conditional: Required when using a non-UTG-controlled device.**

        '
      properties:
        contactlessEMV:
          $ref: '#/components/schemas/DeviceCapabilityContactlessEMV'
        contactlessMSR:
          $ref: '#/components/schemas/DeviceCapabilityContactlessMSR'
        EMV:
          $ref: '#/components/schemas/DeviceCapabilityEMV'
        manualEntry:
          $ref: '#/components/schemas/DeviceCapabilityManualEntry'
        magstripe:
          $ref: '#/components/schemas/DeviceCapabilityMagstripe'
        PIN:
          $ref: '#/components/schemas/DeviceCapabilityPIN'
        quickChip:
          $ref: '#/components/schemas/DeviceCapabilityQuickChip'
        signature:
          $ref: '#/components/schemas/DeviceCapabilitySignature'
    CardResponseFourWords:
      type: object
      properties:
        entryMode:
          $ref: '#/components/schemas/CardEntryMode'
        fourWords:
          $ref: '#/components/schemas/CardFourWords'
        number:
          $ref: '#/components/schemas/CardMaskedNumberGC'
    P2PEType03OnguardSDEMSR:
      type: object
      description: 'See [P2PE Format 03 Ingenico On-Guard SDE](/guides/core-concepts/p2pe-format#ingenico-on-guard-sde---format-03) for more information.

        '
      required:
      - data
      - format
      properties:
        data:
          $ref: '#/components/schemas/P2PEDataOnguardSDEMSR'
        format:
          $ref: '#/components/schemas/P2PEFormatOnguardSDE'
    UISuppressFinalResult:
      type: boolean
      example: 'true'
      description: 'When `true`, the terminal suppresses the final transaction result screen.

        '
    DevicePromptStreetNumber:
      type: string
      minLength: 1
      maxLength: 1
      enum:
      - Y
      - N
      example: Y
      description: 'When using a UTG-controlled PIN pad:


        Value|Description

        -----|-----------

        Y    | Force the PIN pad to prompt the consumer for the street number of their billing address.

        N    | Do not force the PIN pad to prompt the consumer for the street number of their billing address.


        **Note: Use only when you want to override MCE (Manual Card Entry) settings in UTG.**

        '
    ACHAccountHolderName:
      type: string
      maxLength: 22
      example: John Smith
      description: 'ACH account holder''s name

        '
    Error:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
        severity:
          $ref: '#/components/schemas/ErrorSeverity'
        shortText:
          $ref: '#/components/schemas/ErrorShortText'
        longText:
          $ref: '#/components/schemas/ErrorLongText'
        primaryCode:
          $ref: '#/components/schemas/ErrorPrimaryCode'
        secondaryCode:
          $ref: '#/components/schemas/ErrorSecondaryCode'
    CustomerAddressLine1:
      type: string
      maxLength: 30
      example: 65 Easy St
      description: 'Cardholder’s street address exactly as it appears on their billing statement. This field is used in AVS.

        '
    TokenTypeACH:
      type: string
      example: ACH
      readOnly: true
      enum:
      - ACH
      description: 'Specifies the type of token. Value = `ACH`

        '
    MerchantName:
      type: string
      maxLength: 22
      example: Merchant XYZ
      description: 'The merchant’s business name as configured with Shift4.

        '
    EMVEmptyCandidateList:
      type: string
      enum:
      - Y
      - N
      example: Y
      description: 'When EMV is attempted but fallback occurs due to an empty candidate list, this field should be sent as ''Y'' and `emv.fallback` should also be sent as ''Y''.  If this field is not sent, a value of ''N'' is assumed.

        '
    EMVOnguardSDE:
      type: object
      writeOnly: true
      description: '**Conditional: Required when processing an EMV transaction without using a UTG.**

        '
      required:
      - tlvData
      properties:
        emptyCandidateList:
          $ref: '#/components/schemas/EMVEmptyCandidateList'
        tlvData:
          $ref: '#/components/schemas/EMVTlvDataOnguardSDE'
    CardTokenSerialNumber:
      description: 'In requests that require the use of a shared card token that is held by another merchant account, such as in a TokenStore or TokenShare®, this field is used to specify the serial number for the account where the card token is stored.

        '
      type: string
      maxLength: 10
      example: '266'
    CustomerLastName:
      type: string
      maxLength: 30
      example: Smith
      description: 'Specifies a consumer’s last name. This field is used in AVS. If the interface sends this field, the value specified by the interface will be returned in the response, unless the API Option [USECARDNAME](/guides/appendices/api-options#usecardname) is included in the request and a Commerce Engine or UTG-controlled PIN pad is in use. If the interface does not send the `customer` object, the consumer''s name will be returned in the `customer` object if the name is present in the card''s EMV or track data.

        '
    ErrorSeverity:
      type: string
      enum:
      - Info
      - Error
      - Alert
      readOnly: true
      example: Info
      description: 'Severity level of the error.


        | Severity | Description                                                       |

        | -------- | ----------------------------------------------------------------  |

        | Info     | Action not required - Data input/formatting is incorrect          |

        | Error    | Action may be required - Communication, timeout or network issue  |

        | Alert    | Action required - System issue                                    |

        '
    P2PEType05TDESDUKPTMSR:
      type: object
      description: 'See [P2PE Format 05 TDES DUKPT](/guides/core-concepts/p2pe-format#tdes-dukpt---format-05) for more information.

        '
      required:
      - data
      - format
      - ksn
      properties:
        data:
          $ref: '#/components/schemas/P2PEData'
        format:
          $ref: '#/components/schemas/P2PEFormatType05'
        ksn:
          $ref: '#/components/schemas/P2PEKSN'
    CustomerMiddleName:
      type: string
      maxLength: 30
      example: Andrew
      description: 'Specifies a consumer’s middle name.

        '
    tokens_add_comengcloud:
      title: Commerce Engine For Cloud
      type: object
      required:
      - dateTime
      - device
      properties:
        apiOptions:
          $ref: '#/components/schemas/ApiOptions'
        customer:
          $ref: '#/components/schemas/Customer'
        dateTime:
          $ref: '#/components/schemas/DateTime'
        device:
          $ref: '#/components/schemas/DeviceCommerceEngineCloud'
        ui:
          type: object
          properties:
            language:
              $ref: '#/components/schemas/UILanguageRequest'
            mode:
              $ref: '#/components/schemas/UIMode'
            suppressFinalResult:
              $ref: '#/components/schemas/UISuppressFinalResult'
      example:
        dateTime: '2024-05-27T09:18:23.283-07:00'
        device:
          cloud: true
          manufacturer: PAX
          serialNumber: '1170301234'
    DeviceCapabilityManualEntry:
      type: string
      enum:
      - Y
      - N
      example: Y
      description: 'Specifies whether or not the device supports manual entry.  If this input method can be supported by the device, but the input method is currently disabled for all transactions on the device, then the value ''N'' should be sent.

        '
    ApiOptions:
      type: array
      items:
        type: string
      example:
      - RETURNEXPDATE
      - ALLOWPARTIALAUTH
      writeOnly: true
      description: 'API Options modify the request being made. See the [API Options](/guides/appendices/api-options.md) section for more information.

        '
    CardToken:
      type: object
      description: '**Conditional: Send this object when using a card on file.**

        '
      properties:
        value:
          $ref: '#/components/schemas/CardTokenValue'
    P2PEDataOnguardSDEEMV:
      type: string
      maxLength: 2048
      example: FFFF495A0000000200000002:E:0032:E0AB94F7704E77AB37F81A7E236A1ABC1465C6DFCE43A506240D6E7D6DDA7EA9
      description: "EMV TLV Data for tags 5A and 57 encrypted with AES 256 DUKPT. Contains the following information, separated by colons:\n  \nValue           | Description\n----------------|------------\nksn             | The key serial number (24 byte hex)\ntrack indicator | `E` indicating EMV TLV Data\nlength          | The length of the encrypted data\nencrypted data  | Encrypted TLV containing tags 57 and 5A\n\nExample: `FFFF495A0000000200000002:E:0032:E0AB94F7704E77AB37F81A7E236A1ABC1465C6DFCE43A506240D6E7D6DDA7EA9`\n"
    Server:
      type: object
      readOnly: true
      properties:
        name:
          $ref: '#/components/schemas/ServerName'
    tokens_add_p2pe_tdesdukpt_msr:
      title: P2PE - TDES DUKPT - MSR/Manual
      type: object
      required:
      - dateTime
      - device
      - p2pe
      properties:
        dateTime:
          $ref: '#/components/schemas/DateTime'
        device:
          type: object
          required:
          - manufacturer
          - model
          - serialNumber
          - capability
          properties:
            manufacturer:
              $ref: '#/components/schemas/DeviceManufacturer'
            model:
              $ref: '#/components/schemas/DeviceModel'
            serialNumber:
              $ref: '#/components/schemas/DeviceSerialNumber'
            capability:
              $ref: '#/components/schemas/DeviceCapability'
        p2pe:
          $ref: '#/components/schemas/P2PEType05TDESDUKPTMSR'
        apiOptions:
          $ref: '#/components/schemas/ApiOptions'
        customer:
          $ref: '#/components/schemas/Customer'
      example:
        dateTime: '2021-04-15T09:18:23.283-07:00'
        device:
          manufacturer: PAX
          model: A930
          serialNumber: '1170301234'
          capability:
            contactlessEMV: N
            contactlessMSR: Y
            EMV: Y
            magstripe: Y
            manualEntry: Y
            quickChip: Y
        p2pe:
          data: 44188C9A20DD2092254F7FEB0AABD531D86EA10DA37E5540C25B53658BA4FBB903828F835A7287481F6FB5C17A879ECC9768D4C12F99532A
          format: '05'
          ksn: FFFF49517300010000C9
        apiOptions:
        - RETURNEXPDATE
    DeviceCapabilityPIN:
      type: string
      enum:
      - Y
      - N
      example: Y
      description: 'Specifies whether or not the device supports PIN entry (for debit or EMV). If this input method can be supported by the device, but the input method is currently disabled for all transactions on the device, then the value ''N'' should be sent.

        '
    MerchantMID:
      type: number
      maxLength: 10
      example: 15877
      description: 'The merchant ID associated with the merchant account.

        '
    CardSecurityCodeIndicator:
      type: string
      minLength: 1
      maxLength: 1
      writeOnly: true
      example: '1'
      enum:
      - '0'
      - '1'
      - '2'
      - '9'
      description: 'This field indicates the presence of a CSC.


        Value|Description

        -----|-----------

        0    | CSC not provided by user.

        1    | CSC provided.

        2    | CSC illegible.

        9    | CSC not on card, or card did not have a CSC.

        '
    CustomerEmailAddress:
      type: string
      maxLength: 80
      example: john.smith@email.com
      description: 'Customer email address.

        '
    P2PEType07AESMCE:
      type: object
      required:
      - data
      - format
      - kid
      properties:
        data:
          $ref: '#/components/schemas/P2PEDataAESMCE'
        format:
          $ref: '#/components/schemas/P2PEFormatAES'
        kid:
          $ref: '#/components/schemas/P2PEKIDAES'
    LighthouseResponse:
      type: object
      readOnly: true
      properties:
        data:
          $ref: '#/components/schemas/LighthouseDataResponse'
    ServerName:
      type: string
      maxLength: 50
      example: TM01CE
      description: 'The name of the server that processed the request.

        '
    CardFourWords:
      type: string
      maxLength: 28
      example: cat blue washington enter
      description: 'Four words that reference cardholder data (CHD). The four words can be entered into Shift4’ 4Word® web app separated by spaces to temporarily reveal CHD. In addition, the four words can be entered during an Online Entry or Offline Entry transaction in [Lighthouse Transaction Manager](https://ltm.shift4test.com/) to securely charge the corresponding card number.

        '
    CardTypeResp:
      type: string
      enum:
      - AX
      - AP
      - BC
      - CI
      - DB
      - GC
      - JC
      - MC
      - NS
      - PL
      - SC
      - VS
      - WP
      - YC
      example: VS
      description: "An abbreviation used to specify the type of card that was used when processing a transaction.\n\nValue| Description\n-----|------------\nAX   | American Express\nAP   | Alipay\nBC   | Backed Card       \nCI   | Citgo        \nDB   | Debit card\nGC   | Gift Card\nJC   | JCB

# --- truncated at 32 KB (75 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/shift4/refs/heads/main/openapi/shift4-tokens-api-openapi.yml