Shift4 Cards API

The Cards API from Shift4 — 2 operation(s) for cards.

Operations 2

POST /cards/verify Verify Card with Processor #
POST /cards/identify Identify Card Type #

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-cards-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-cards-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.7.57
  title: Shift4 Payment Cards 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: Cards
paths:
  /cards/verify:
    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
    post:
      tags:
      - Cards
      summary: Verify Card with Processor
      operationId: cardsverify
      security:
      - AccessToken: []
      description: 'This function is used to request card validation by going online to verify the card information with the processor. If Address Verification System (AVS) and/or Card Security Code (CSC) data are sent in the request, that information will also be validated.


        To process an Account Name Inquiry request the `USEANI` API Option and `customer.lastName` must be sent in the request. `customer.firstName` and `customer.middleName` are optional. Account Name Inquiry requests are currently limited to Visa cards.


        **Integration Methods:**

        - Host Direct

        - Commerce Engine For On Premise

        - Commerce Engine For Cloud

        - 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.


        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/cards_verify_comengdevice'
              - $ref: '#/components/schemas/cards_verify_comengcloud'
              - $ref: '#/components/schemas/cards_verify_utgdevice'
              - $ref: '#/components/schemas/cards_verify_token_gtv'
              - $ref: '#/components/schemas/cards_verify_token_legacy'
              - $ref: '#/components/schemas/cards_verify_p2pe_idtech'
              - $ref: '#/components/schemas/cards_verify_p2pe_tdesdukpt_emv'
              - $ref: '#/components/schemas/cards_verify_p2pe_tdesdukpt_msr'
              - $ref: '#/components/schemas/cards_verify_p2pe_onguardsde_emv'
              - $ref: '#/components/schemas/cards_verify_p2pe_onguardsde_msr'
              - $ref: '#/components/schemas/cards_verify_unencryptedcard'
      responses:
        '200':
          description: Request was processed
          content:
            application/json:
              schema:
                properties:
                  result:
                    type: array
                    items:
                      type: object
                      properties:
                        dateTime:
                          $ref: '#/components/schemas/DateTime'
                        customer:
                          $ref: '#/components/schemas/Customer'
                        card:
                          type: object
                          properties:
                            expirationDate:
                              $ref: '#/components/schemas/CardExpirationDateResponse'
                            number:
                              $ref: '#/components/schemas/CardMaskedNumber'
                            type:
                              $ref: '#/components/schemas/CardTypeResp'
                            securityCode:
                              $ref: '#/components/schemas/CardSecurityCode'
                            token:
                              $ref: '#/components/schemas/CardTokenResponse'
                        device:
                          $ref: '#/components/schemas/DeviceOnlyTIDResponse'
                        merchant:
                          $ref: '#/components/schemas/MerchantResponse'
                        transaction:
                          type: object
                          properties:
                            authorizationCode:
                              $ref: '#/components/schemas/TransactionAuthorizationCode'
                            responseCode:
                              $ref: '#/components/schemas/TransactionResponseCodeCardsVerify'
                            avs:
                              $ref: '#/components/schemas/AVS'
                            cardOnFile:
                              $ref: '#/components/schemas/CardOnFile'
                        server:
                          $ref: '#/components/schemas/Server'
                        accountNameInquiry:
                          $ref: '#/components/schemas/AccountNameInquiryResponse'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        '504':
          $ref: '#/components/responses/TimeoutResponse'
  /cards/identify:
    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
    post:
      tags:
      - Cards
      summary: Identify Card Type
      operationId: cardsidentify
      security:
      - AccessToken: []
      description: "This function is used to request and return the card type.\n\n**Integration Methods:**\n- Host Direct\n- Locally Installed UTG\n\nSee 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.\n\nSee the [JSON Body Schemas](/guides/quickstart#json-body-schemas) for more details on the various JSON body formats.  \n"
      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/cards_identify_utgdevice'
              - $ref: '#/components/schemas/cards_identify_token_gtv'
              - $ref: '#/components/schemas/cards_identify_token_legacy'
              - $ref: '#/components/schemas/cards_identify_p2pe_idtech'
              - $ref: '#/components/schemas/cards_identify_p2pe_tdesdukpt_emv'
              - $ref: '#/components/schemas/cards_identify_p2pe_tdesdukpt_msr'
              - $ref: '#/components/schemas/cards_identify_p2pe_onguardsde_emv'
              - $ref: '#/components/schemas/cards_identify_p2pe_onguardsde_msr'
              - $ref: '#/components/schemas/cards_identify_unencryptedcard'
      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/CardResponseIdentify'
                        device:
                          $ref: '#/components/schemas/DeviceOnlyTIDResponse'
                        merchant:
                          $ref: '#/components/schemas/MerchantResponse'
                        server:
                          $ref: '#/components/schemas/Server'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        '504':
          $ref: '#/components/responses/TimeoutResponse'
components:
  schemas:
    P2PEType0102IDTECH:
      type: object
      required:
      - data
      - format
      properties:
        data:
          $ref: '#/components/schemas/P2PEData'
        format:
          $ref: '#/components/schemas/P2PEFormatIDTech'
    cards_verify_p2pe_idtech:
      type: object
      title: P2PE - ID TECH - EMV/MSR/Manual
      required:
      - dateTime
      - p2pe
      properties:
        dateTime:
          $ref: '#/components/schemas/DateTime'
        p2pe:
          $ref: '#/components/schemas/P2PEType0102IDTECH'
        transaction:
          type: object
          properties:
            cardOnFile:
              $ref: '#/components/schemas/CardOnFile'
            purchaseCard:
              type: object
              properties:
                customerReference:
                  $ref: '#/components/schemas/PurchaseCardCustomerReference'
        customer:
          $ref: '#/components/schemas/Customer'
        currencyCode:
          $ref: '#/components/schemas/CurrencyCode'
        apiOptions:
          $ref: '#/components/schemas/ApiOptions'
      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'
    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**

        '
    AVSPostalCodeVerified:
      type: string
      minLength: 1
      maxLength: 1
      example: Y
      enum:
      - Y
      - N
      description: 'Identifies whether the ZIP/postal code was verified (‘Y’) or not (‘N’) in an AVS check with a processor.

        '
    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'
    cards_verify_comengdevice:
      type: object
      title: Commerce Engine For On Premise
      required:
      - dateTime
      properties:
        dateTime:
          $ref: '#/components/schemas/DateTime'
        device:
          type: object
          properties:
            terminalId:
              $ref: '#/components/schemas/DeviceTerminalId'
        transaction:
          type: object
          properties:
            cardOnFile:
              $ref: '#/components/schemas/CardOnFile'
            purchaseCard:
              type: object
              properties:
                customerReference:
                  $ref: '#/components/schemas/PurchaseCardCustomerReference'
        customer:
          $ref: '#/components/schemas/Customer'
        currencyCode:
          $ref: '#/components/schemas/CurrencyCode'
        apiOptions:
          $ref: '#/components/schemas/ApiOptions'
        ui:
          type: object
          properties:
            language:
              $ref: '#/components/schemas/UILanguageRequest'
            mode:
              $ref: '#/components/schemas/UIMode'
            suppressFinalResult:
              $ref: '#/components/schemas/UISuppressFinalResult'
      example:
        dateTime: '2025-11-06T09:18:23.283-07:00'
    CardBin:
      type: string
      readOnly: true
      maxLength: 8
      example: '541333'
      description: 'The first 6 or 8 digits of the card.

        '
    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.

        '
    CardOnFile:
      type: object
      description: '**Conditional: Send this object when the transaction being performed is using a card on file or when the request will result in storing a card on file.**


        See the [Card On File Transactions](/guides/advanced-concepts/card-on-file-transactions) section for more information.

        '
      properties:
        type:
          $ref: '#/components/schemas/CardOnFileType'
        recurringExpiry:
          $ref: '#/components/schemas/CardOnFileRecurringExpiry'
        recurringFrequency:
          $ref: '#/components/schemas/CardOnFileRecurringFrequency'
        transactionId:
          $ref: '#/components/schemas/CardOnFileTransactionId'
        transactionLinkId:
          $ref: '#/components/schemas/CardOnFileTransactionLinkId'
    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.**

        '
    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.

        '
    cards_verify_token_legacy:
      title: Legacy TrueToken
      type: object
      required:
      - dateTime
      - card
      properties:
        dateTime:
          $ref: '#/components/schemas/DateTime'
        card:
          type: object
          required:
          - token
          properties:
            token:
              $ref: '#/components/schemas/CardTokenRequiredLegacy'
            expirationDate:
              $ref: '#/components/schemas/CardExpirationDate'
            securityCode:
              $ref: '#/components/schemas/CardSecurityCode'
        transaction:
          type: object
          properties:
            cardOnFile:
              $ref: '#/components/schemas/CardOnFile'
            purchaseCard:
              type: object
              properties:
                customerReference:
                  $ref: '#/components/schemas/PurchaseCardCustomerReference'
        customer:
          $ref: '#/components/schemas/Customer'
        currencyCode:
          $ref: '#/components/schemas/CurrencyCode'
        apiOptions:
          $ref: '#/components/schemas/ApiOptions'
      example:
        dateTime: '2021-04-15T09:18:23.283-07:00'
        card:
          token:
            value: 11191pn83hbkkety
            serialNumber: '123456'
          expirationDate: 1225
    MerchantName:
      type: string
      maxLength: 22
      example: Merchant XYZ
      description: 'The merchant’s business name as configured with Shift4.

        '
    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.

        '
    cards_identify_p2pe_onguardsde_msr:
      title: P2PE - On-Guard SDE - MSR/Manual
      type: object
      allOf:
      - type: object
        required:
        - dateTime
        - card
        - device
        - p2pe
        properties:
          dateTime:
            $ref: '#/components/schemas/DateTime'
          card:
            type: object
            required:
            - entryMode
            properties:
              entryMode:
                $ref: '#/components/schemas/CardEntryMode'
          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/P2PEType03OnguardSDEMSR'
      example:
        dateTime: 2023-124-13T09:18:23.283-07:00
        card:
          entryMode: '2'
        device:
          manufacturer: Ingenico
          model: Axium DX8000
          serialNumber: 20ACCD801843
          capability:
            contactlessEMV: Y
            contactlessMSR: N
            EMV: Y
            manualEntry: Y
            magstripe: Y
            PIN: Y
            quickChip: Y
            signature: Y
        p2pe:
          data: FFFF495A0000000200000005:4:0128:F48C880DE0DAF549E642C5CC25E65ADF9947E7EB0636DB80C4A490B4C0930AEF64B7201505343CED533A2AE9AFABFE6453875F705519A8109362197CA3BD8DA0FE90DB3F954B9CDA0DB58BDA3330862ADD28CB31EFDA7C641575E33D395D8BFF72EBF0B1FF9630DB0EAB080FE8C9B2FAC28127CDC48CA9F7D532D5BDE4CCE270
          format: '03'
    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.

        '
    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.

        '
    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'
    PurchaseCardCustomerReference:
      type: string
      maxLength: 25
      example: D019D09309F2
      description: 'A unique value used to identify the consumer or transaction. If a merchant has a significant amount of revenue from purchasing card customers, the interface would use this field to collect the consumer’s purchase order or employee identification number. In lodging transactions, this may be unique transaction details, such as a reservation code or third-party booking source.  This field is part of Level 2 card data.

        '
    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.

        '
    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.

        '
    CardSecurityCode:
      type: object
      description: '**Conditional: Send only when card data is manually entered. This object should not be specified when using an encrypted device. This object should be sent for initial card on file request but is not required for subsequent merchant initiated  charges.**

        '
      required:
      - indicator
      - value
      properties:
        indicator:
          $ref: '#/components/schemas/CardSecurityCodeIndicator'
        result:
          $ref: '#/components/schemas/CardSecurityCodeResult'
        valid:
          $ref: '#/components/schemas/CardSecurityCodeValid'
        value:
          $ref: '#/components/schemas/CardSecurityCodeValue'
    MerchantMID:
      type: number
      maxLength: 10
      example: 15877
      description: 'The merchant ID associated with the merchant account.

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

        '
    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.

        '
    cards_verify_unencryptedcard:
      type: object
      title: Card Number Unencrypted
      required:
      - dateTime
      - card
      properties:
        dateTime:
          $ref: '#/components/schemas/DateTime'
        card:
          type: object
          required:
          - number
          - expirationDate
          properties:
            number:
              $ref: '#/components/schemas/CardNumber'
            expirationDate:
              $ref: '#/components/schemas/CardExpirationDate'
            securityCode:
              type: object
              properties:
                indicator:
                  $ref: '#/components/schemas/CardSecurityCodeIndicator'
                value:
                  $ref: '#/components/schemas/CardSecurityCodeValue'
        transaction:
          type: object
          properties:
            cardOnFile:
              $ref: '#/components/schemas/CardOnFile'
            purchaseCard:
              type: object
              properties:
                customerReference:
                  $ref: '#/components/schemas/PurchaseCardCustomerReference'
        customer:
          $ref: '#/components/schemas/Customer'
        currencyCode:
          $ref: '#/components/schemas/CurrencyCode'
        apiOptions:
          $ref: '#/components/schemas/ApiOptions'
      example:
        dateTime: '2021-04-15T09:18:23.283-07:00'
        card:
          number: '4321000000001119'
          expirationDate: 1230
          securityCode:
            indicator: '1'
            value: '333'
        customer:
          addressLine1: 65 Easy St
          firstName: John
          lastName: Smith
          postalCode: '65144'
    cards_verify_utgdevice:
      type: object
      title: UTG Controlled Device
      required:
      - dateTime
      - device
      properties:
        dateTime:
          $ref: '#/components/schemas/DateTime'
        device:
          type: object
          required:
          - terminalId
          properties:
            terminalId:
              $ref: '#/components/schemas/DeviceTerminalId'
            promptPostalCode:
              $ref: '#/components/schemas/DevicePromptPostalCode'
            promptCardSecurityCode:
              $ref: '#/components/schemas/DevicePromptCardSecurityCode'
            promptStreetNumber:
              $ref: '#/components/schemas/DevicePromptStreetNumber'
        transaction:
          type: object
          properties:
            cardOnFile:
              $ref: '#/components/schemas/CardOnFile'
            purchaseCard:
              type: object
              properties:
                customerReference:
                  $ref: '#/components/schemas/PurchaseCardCustomerReference'
        customer:
          $ref: '#/components/schemas/Customer'
        currencyCode:
          $ref: '#/components/schemas/CurrencyCode'
        apiOptions:
          $ref: '#/components/schemas/ApiOptions'
      example:
        dateTime: '2021-04-15T09:18:23.283-07:00'
        device:
          terminalId: '1742'
    cards_identify_utgdevice:
      type: object
      title: UTG Controlled Device
      allOf:
      - type: object
        required:
        - dateTime
        - device
        properties:
          dateTime:
            $ref: '#/components/schemas/DateTime'
          device:
            type: object
            required:
            - terminalId
            properties:
              terminalId:
                $ref: '#/components/schemas/DeviceTerminalId'
              promptPostalCode:
                $ref: '#/components/schemas/DevicePromptPostalCode'
              promptCardSecurityCode:
                $ref: '#/components/schemas/DevicePromptCardSecurityCode'
              promptStreetNumber:
                $ref: '#/components/schemas/DevicePromptStreetNumber'
      example:
        dateTime: '2021-04-15T09:18:23.283-07:00'
        device:
          terminalId: '1742'
    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\nMC   | Mastercard\nNS   | Discover/JCB/Novus\nPL   | Private Label\nSC   | Sears Canada\nVS   | Visa\nWP   | WeChat Pay\nYC   | IT’S YOUR CARD\n"
    CustomerFirstName:
      type: string
      maxLength: 30
      example: John
      description: 'Specifies a consumer’s first 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.

        '
    TransactionResponseCodeCardsVerify:
      type: string
      minLength: 1
      maxLength: 1
      readOnly: true
      example: A
      enum:
      - A
      - D
      - e
      - f
      description: "Code indicating the Shift4 host response.        \n\nValue  | Description                                                      | Details\n-------|------------------------------------------------------------------|--------\nA      | Approved                                                         | The card was successfully verified.\nD      | Declined                                                         | The card failed verification.\ne      | [Error](/guides/appendices/error-codes)                          | There is an error condition.\nf      | [AVS or CSC failure](/guides/response-handling/understanding-avs-and-csc-verification)| An AVS or CSC failure has occurred (credit card only). **Note: This value will only be returned if the [POSHANDLEAVSFAIL Api Option](/guides/appendices/api-options#poshandleavsfail) was sent in the request.**\n"
    DateTime:
      type: string
      format: ISO 8601
      example: '2024-05-21T09:18:23.283-07:00'
      description: 'The date and time in ISO 8601 format including the timezone offset (yyyy-mm-ddThh:mm:ss.nnn+hh:mm).


        Must be sent as the local date/time of the merchant. For example, a request processed at a merchant in the Pacific time zone at 9:18am on April 15th 2021 would be sent as 2021-04-15T09:18:23.283-07:00

        '
    ErrorLongText:
      type: string
      maxLength: 255
      readOnly: true
      example: Card type not recognized
      description: 'Extended error message that is returned if an error condition exists.

        '
    cards_verify_p2pe_tdesdukpt_msr:
      type: object
      title: P2PE - TDES DUKPT - MSR/Manual
      required:
      - dateTime
  

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