---
title: "Create single use token"
method: POST
path: "/processing-terminals/{processingTerminalId}/single-use-tokens"
tags: ["singleUseTokens"]
---

# Create single use token

`POST /processing-terminals/{processingTerminalId}/single-use-tokens`

Use this method to create a single-use token that represents a customer’s payment details.  

A single-use token expires after 30 minutes and merchants can use them only once.  

**Note:** To create a reusable permanent token, go to [Create Secure Token](https://docs.payroc.com/api/schema/tokenization/secure-tokens/create).  

In the request, send the customer’s payment details. If the request is successful, our gateway returns a token that you can use in a follow-on action, for example, [run a sale](https://docs.payroc.com/api/schema/card-payments/payments/create).

## Path parameters

- `processingTerminalId` string, required

## Headers

- `Authorization` string, required
- `Idempotency-Key` string, uuid, required

## Request body

- SingleUseTokenRequest
  - `channel` 'pos' | 'web' | 'moto', required — Channel that the merchant used to receive the payment details.
  - `operator` string — Operator who initiated the request.
  - `source` union, required — Polymorphic object that contains the payment method to tokenize. The value of the type parameter determines which variant you should use: - `ach` - Automated Clearing House (ACH) details - `pad` - Pre-authorized debit (PAD) details - `card` - Payment card details
    - object — Object that contains information about the payment details for the customer’s automated clearing house (ACH) transactions.
      - `type` 'ach', required — Discriminator value: ach
      - `accountType` 'checking' | 'savings' — Indicates the customer’s account type. **Note:** For bank account details, send a value for accountType.
      - `secCode` 'web' | 'tel' | 'ccd' | 'ppd' — Indicates how the customer authorized the ACH transaction. Send one of the following values: - `web` – Online transaction. - `tel` – Telephone transaction. - `ccd` – Corporate credit or debit entry for a business bank account. - `ppd` – Pre-arranged transaction. **Note:** This field is mandatory for ACH payments and unreferenced refunds.
      - `nameOnAccount` string, required — Customer's name.
      - `accountNumber` string, required — Customer’s bank account number. **Note:** In responses, our gateway shows only the last four digits of the account number, for example, `*****5929`.
      - `routingNumber` string, required — Nine-digit number that identifies the customer's bank.
    - object — Object that contains information about the payment details for the customer’s preauthorized electronic debit (PAD) transactions.
      - `type` 'pad', required — Discriminator value: pad
      - `accountType` 'checking' | 'savings' — Indicates the customer’s account type. **Note:** For bank account details, send a value for accountType.
      - `nameOnAccount` string, required — Customer's name.
      - `accountNumber` string, required — Customer's account number. **Note:** In responses, our gateway shows only the last four digits of the account number, for example, `*****5929`.
      - `transitNumber` string, required — Five-digit number that identifies the customer's bank branch.
      - `institutionNumber` string, required — Three-digit number that identifies the customer's bank.
    - object — Object that contains information about the customer’s payment card.
      - `type` 'card', required — Discriminator value: card
      - `accountType` 'checking' | 'savings' — Indicates the customer’s account type. **Note:** Send a value for accountType only for bank account details.
      - `cardDetails` union, required — Polymorphic object that contains payment card information. The value of the entryMethod parameter determines which variant you should use: - `raw` - Unencrypted payment data directly from the device. - `icc` - Payment data that the device captured from the chip. - `keyed` - Payment data that the merchant entered manually. - `swiped` - Payment data that the device captured from the magnetic strip.
        - object — Object that contains information about the unencrypted card details.
          - `entryMethod` 'raw', required — Discriminator value: raw
          - `downgradeTo` 'keyed' | 'swiped' — If an offline transaction is not approved using the initial entry method, reprocess the transaction using a downgraded entry method. For example, an Integrated Circuit Card (ICC) transaction can be downgraded to a swiped transaction or to a keyed transaction.
          - `device` Device, required — Object that contains information about the physical device the merchant used to capture the customer’s card details.
            - `model` 'bbposChp' | 'bbposChp2x' | 'bbposChp3x' | 'bbposRambler' | 'bbposWp' | 'bbposWp2' | 'bbposWp3' | 'genericCtlsMsr' | 'genericMsr' | 'idtechAugusta' | 'idtechMinismart' | 'idtechSredkey' | 'idtechVp3300' | 'idtechVp5300' | 'idtechVp6300' | 'idtechVp6800' | 'ingenicoAxiumDx4000' | 'ingenicoAxiumDx8000' | 'ingenicoAxiumEx8000' | 'ingenicoIct220' | 'ingenicoIpp320' | 'ingenicoIpp350' | 'ingenicoIuc285' | 'ingenicoL3000' | 'ingenicoL7000' | 'ingenicoS2000' | 'ingenicoS3000' | 'ingenicoS4000' | 'ingenicoS5000' | 'ingenicoS7000' | 'paxA80' | 'paxA920' | 'paxA920Pro' | 'paxA920Max' | 'paxE500' | 'paxE700' | 'paxE800' | 'paxIm30' | 'uic680' | 'uicBezel8', required — Model of the device that the merchant used to process the transaction.
            - `category` 'attended' | 'unattended' — Indicates if the device is attended or unattended.
            - `serialNumber` string, required — Serial number of the physical device.
            - `firmwareVersion` string — Firmware version of the physical device.
            - `config` DeviceConfig — Object that contains information about the configuration of the POS terminal.
              - …
          - `rawData` string, hexadecimal, required — Unencrypted data from the POS terminal.
          - `cardholderSignature` string — Cardholder's signature. For more information about how to format the signature, go to [How to send a signature to our gateway](https://docs.payroc.com/knowledge/basic-concepts/signature-capture).
        - object — Object that contains information about the Integrated Circuit Card (ICC).
          - `entryMethod` 'icc', required — Discriminator value: icc
          - `downgradeTo` 'keyed' | 'swiped' — If an offline transaction is not approved using the initial entry method, reprocess the transaction using a downgraded entry method. For example, an Integrated Circuit Card (ICC) transaction can be downgraded to a swiped transaction or a keyed transaction.
          - `device` EncryptionCapableDevice, required — Object that contains information about the encryption details of the POS terminal.
            - `model` 'bbposChp' | 'bbposChp2x' | 'bbposChp3x' | 'bbposRambler' | 'bbposWp' | 'bbposWp2' | 'bbposWp3' | 'genericCtlsMsr' | 'genericMsr' | 'idtechAugusta' | 'idtechMinismart' | 'idtechSredkey' | 'idtechVp3300' | 'idtechVp5300' | 'idtechVp6300' | 'idtechVp6800' | 'ingenicoAxiumDx4000' | 'ingenicoAxiumDx8000' | 'ingenicoAxiumEx8000' | 'ingenicoIct220' | 'ingenicoIpp320' | 'ingenicoIpp350' | 'ingenicoIuc285' | 'ingenicoL3000' | 'ingenicoL7000' | 'ingenicoS2000' | 'ingenicoS3000' | 'ingenicoS4000' | 'ingenicoS5000' | 'ingenicoS7000' | 'paxA80' | 'paxA920' | 'paxA920Pro' | 'paxA920Max' | 'paxE500' | 'paxE700' | 'paxE800' | 'paxIm30' | 'uic680' | 'uicBezel8', required — Model of the device that the merchant used to process the transaction.
            - `category` 'attended' | 'unattended' — Indicates if the device is attended or unattended.
            - `serialNumber` string, required — Serial number of the physical device.
            - `firmwareVersion` string — Firmware version of the physical device.
            - `config` DeviceConfig — Object that contains information about the configuration of the POS terminal.
              - …
            - `dataKsn` string, hexadecimal, required — Key serial number.
          - `iccData` string, hexadecimal, required — Cardholder data from the ICC. The data consists of EMV tags in Tag-Length-Value (TLV) format.
          - `firstDigitOfPan` string — First digit of the card number.
          - `cardholderSignature` string — Cardholder's signature. For more information about how to format the signature, go to [How to send a signature to our gateway](https://docs.payroc.com/knowledge/basic-concepts/signature-capture).
          - `ebtDetails` EbtDetailsWithVoucher — Object that contains information about the Electronic Benefit Transfer (EBT) transaction.
            - `benefitCategory` 'cash' | 'foodStamp', required — Indicates if the balance relates to an EBT Cash account or an EBT SNAP account. - `cash` – EBT Cash - `foodStamp` – EBT SNAP
            - `withdrawal` boolean — Indicates whether the customer wants to withdraw cash. **Note:** Cash withdrawals are available only from EBT Cash accounts.
            - `voucher` Voucher — Object that contains information about the EBT voucher. **Note:** Vouchers are available only for EBT SNAP payments.
              - …
        - object — Object that contains information about the keyed card details.
          - `entryMethod` 'keyed', required — Discriminator value: keyed
          - `keyedData` union, required — Polymorphic object that contains payment card details that the merchant manually entered into the device. The value of the dataFormat parameter determines which variant you should use: - `fullyEncrypted` - All payment card details are encrypted. - `partiallyEncrypted` - Some payment card details are encrypted. - `plainText` - Payment card details are in plain text.
            - object — Object that contains information about the encrypted card data for keyed transactions.
              - …
            - object — Object that contains information about the partially-encrypted card data for keyed transactions.
              - …
            - object — Object that contains information about the plain-text card data for keyed transactions.
              - …
          - `cardholderName` string — Cardholder’s name.
          - `cardholderSignature` string — Cardholder's signature. For more information about how to format the signature, go to [How to send a signature to our gateway](https://docs.payroc.com/knowledge/basic-concepts/signature-capture).
          - `pinDetails` FxRateInquiryPaymentMethodDiscriminatorMappingCardCardDetailsDiscriminatorMappingKeyedPinDetails — Object that contains information about encrypted PIN details.
            - `dataFormat` 'dukpt', required — Discriminator value: dukpt
            - `pin` string, hexadecimal, required — Encrypted PIN. **Note:** PIN is encrypted using the DUKPT scheme.
            - `pinKsn` string, hexadecimal, required — Key serial number.
          - `ebtDetails` EbtDetailsWithVoucher — Object that contains information about the Electronic Benefit Transfer (EBT) transaction.
            - `benefitCategory` 'cash' | 'foodStamp', required — Indicates if the balance relates to an EBT Cash account or an EBT SNAP account. - `cash` – EBT Cash - `foodStamp` – EBT SNAP
            - `withdrawal` boolean — Indicates whether the customer wants to withdraw cash. **Note:** Cash withdrawals are available only from EBT Cash accounts.
            - `voucher` Voucher — Object that contains information about the EBT voucher. **Note:** Vouchers are available only for EBT SNAP payments.
              - …
        - object — Object that contains information about the customer’s card details for swiped transactions.
          - `entryMethod` 'swiped', required — Discriminator value: swiped
          - `downgradeTo` 'keyed' | 'swiped' — If an offline transaction is not approved using the initial entry method, reprocess the transaction using a downgraded entry method. For example, a swiped transaction can be downgraded to a keyed transaction.
          - `swipedData` union, required — Polymorphic object that contains payment card details that a device captured from the magnetic strip. The value of the dataFormat parameter determines which variant you should use: - `encrypted` - Payment card details are encrypted. - `plainText` - Payment card details are in plain text.
            - object — Object that contains information about the encrypted swiped card data.
              - …
            - object — Object that contains information about plain-text swiped card data.
              - …
          - `cardholderName` string — Cardholder’s name.
          - `cardholderSignature` string — Cardholder's signature. For more information about how to format the signature, go to [How to send a signature to our gateway](https://docs.payroc.com/knowledge/basic-concepts/signature-capture).
          - `pinDetails` FxRateInquiryPaymentMethodDiscriminatorMappingCardCardDetailsDiscriminatorMappingSwipedPinDetails — Object that contains information about encrypted PIN details.
            - `dataFormat` 'dukpt', required — Discriminator value: dukpt
            - `pin` string, hexadecimal, required — Encrypted PIN. **Note:** PIN is encrypted using the DUKPT scheme.
            - `pinKsn` string, hexadecimal, required — Key serial number.
          - `ebtDetails` EbtDetailsWithVoucher — Object that contains information about the Electronic Benefit Transfer (EBT) transaction.
            - `benefitCategory` 'cash' | 'foodStamp', required — Indicates if the balance relates to an EBT Cash account or an EBT SNAP account. - `cash` – EBT Cash - `foodStamp` – EBT SNAP
            - `withdrawal` boolean — Indicates whether the customer wants to withdraw cash. **Note:** Cash withdrawals are available only from EBT Cash accounts.
            - `voucher` Voucher — Object that contains information about the EBT voucher. **Note:** Vouchers are available only for EBT SNAP payments.
              - …

## Response `201`

Successful request. We created the single-use token.

- SingleUseToken
  - `processingTerminalId` string, required — Unique identifier that we assigned to the terminal.
  - `operator` string — Operator who initiated the request.
  - `paymentMethod` SingleUseTokenPaymentMethod — Object that contains information about the customer’s payment card.
    - `type` 'card', required — Discriminator value: card
    - `accountType` 'checking' | 'savings' — Indicates the customer’s account type. **Note:** Send a value for accountType only for bank account details.
    - `cardDetails` union, required — Polymorphic object that contains payment card information. The value of the entryMethod parameter determines which variant you should use: - `raw` - Unencrypted payment data directly from the device. - `icc` - Payment data that the device captured from the chip. - `keyed` - Payment data that the merchant entered manually. - `swiped` - Payment data that the device captured from the magnetic strip.
      - object — Object that contains information about the unencrypted card details.
        - `entryMethod` 'raw', required — Discriminator value: raw
        - `downgradeTo` 'keyed' | 'swiped' — If an offline transaction is not approved using the initial entry method, reprocess the transaction using a downgraded entry method. For example, an Integrated Circuit Card (ICC) transaction can be downgraded to a swiped transaction or to a keyed transaction.
        - `device` Device, required — Object that contains information about the physical device the merchant used to capture the customer’s card details.
          - `model` 'bbposChp' | 'bbposChp2x' | 'bbposChp3x' | 'bbposRambler' | 'bbposWp' | 'bbposWp2' | 'bbposWp3' | 'genericCtlsMsr' | 'genericMsr' | 'idtechAugusta' | 'idtechMinismart' | 'idtechSredkey' | 'idtechVp3300' | 'idtechVp5300' | 'idtechVp6300' | 'idtechVp6800' | 'ingenicoAxiumDx4000' | 'ingenicoAxiumDx8000' | 'ingenicoAxiumEx8000' | 'ingenicoIct220' | 'ingenicoIpp320' | 'ingenicoIpp350' | 'ingenicoIuc285' | 'ingenicoL3000' | 'ingenicoL7000' | 'ingenicoS2000' | 'ingenicoS3000' | 'ingenicoS4000' | 'ingenicoS5000' | 'ingenicoS7000' | 'paxA80' | 'paxA920' | 'paxA920Pro' | 'paxA920Max' | 'paxE500' | 'paxE700' | 'paxE800' | 'paxIm30' | 'uic680' | 'uicBezel8', required — Model of the device that the merchant used to process the transaction.
          - `category` 'attended' | 'unattended' — Indicates if the device is attended or unattended.
          - `serialNumber` string, required — Serial number of the physical device.
          - `firmwareVersion` string — Firmware version of the physical device.
          - `config` DeviceConfig — Object that contains information about the configuration of the POS terminal.
            - `quickChip` boolean, required — Indicates if Quick Chip mode is active on a merchant’s POS terminal.
        - `rawData` string, hexadecimal, required — Unencrypted data from the POS terminal.
        - `cardholderSignature` string — Cardholder's signature. For more information about how to format the signature, go to [How to send a signature to our gateway](https://docs.payroc.com/knowledge/basic-concepts/signature-capture).
      - object — Object that contains information about the Integrated Circuit Card (ICC).
        - `entryMethod` 'icc', required — Discriminator value: icc
        - `downgradeTo` 'keyed' | 'swiped' — If an offline transaction is not approved using the initial entry method, reprocess the transaction using a downgraded entry method. For example, an Integrated Circuit Card (ICC) transaction can be downgraded to a swiped transaction or a keyed transaction.
        - `device` EncryptionCapableDevice, required — Object that contains information about the encryption details of the POS terminal.
          - `model` 'bbposChp' | 'bbposChp2x' | 'bbposChp3x' | 'bbposRambler' | 'bbposWp' | 'bbposWp2' | 'bbposWp3' | 'genericCtlsMsr' | 'genericMsr' | 'idtechAugusta' | 'idtechMinismart' | 'idtechSredkey' | 'idtechVp3300' | 'idtechVp5300' | 'idtechVp6300' | 'idtechVp6800' | 'ingenicoAxiumDx4000' | 'ingenicoAxiumDx8000' | 'ingenicoAxiumEx8000' | 'ingenicoIct220' | 'ingenicoIpp320' | 'ingenicoIpp350' | 'ingenicoIuc285' | 'ingenicoL3000' | 'ingenicoL7000' | 'ingenicoS2000' | 'ingenicoS3000' | 'ingenicoS4000' | 'ingenicoS5000' | 'ingenicoS7000' | 'paxA80' | 'paxA920' | 'paxA920Pro' | 'paxA920Max' | 'paxE500' | 'paxE700' | 'paxE800' | 'paxIm30' | 'uic680' | 'uicBezel8', required — Model of the device that the merchant used to process the transaction.
          - `category` 'attended' | 'unattended' — Indicates if the device is attended or unattended.
          - `serialNumber` string, required — Serial number of the physical device.
          - `firmwareVersion` string — Firmware version of the physical device.
          - `config` DeviceConfig — Object that contains information about the configuration of the POS terminal.
            - `quickChip` boolean, required — Indicates if Quick Chip mode is active on a merchant’s POS terminal.
          - `dataKsn` string, hexadecimal, required — Key serial number.
        - `iccData` string, hexadecimal, required — Cardholder data from the ICC. The data consists of EMV tags in Tag-Length-Value (TLV) format.
        - `firstDigitOfPan` string — First digit of the card number.
        - `cardholderSignature` string — Cardholder's signature. For more information about how to format the signature, go to [How to send a signature to our gateway](https://docs.payroc.com/knowledge/basic-concepts/signature-capture).
        - `ebtDetails` EbtDetailsWithVoucher — Object that contains information about the Electronic Benefit Transfer (EBT) transaction.
          - `benefitCategory` 'cash' | 'foodStamp', required — Indicates if the balance relates to an EBT Cash account or an EBT SNAP account. - `cash` – EBT Cash - `foodStamp` – EBT SNAP
          - `withdrawal` boolean — Indicates whether the customer wants to withdraw cash. **Note:** Cash withdrawals are available only from EBT Cash accounts.
          - `voucher` Voucher — Object that contains information about the EBT voucher. **Note:** Vouchers are available only for EBT SNAP payments.
            - `approvalCode` string, required — Authorization code that the processor issued for the transaction.
            - `serialNumber` string, required — Serial number of the voucher.
      - object — Object that contains information about the keyed card details.
        - `entryMethod` 'keyed', required — Discriminator value: keyed
        - `keyedData` union, required — Polymorphic object that contains payment card details that the merchant manually entered into the device. The value of the dataFormat parameter determines which variant you should use: - `fullyEncrypted` - All payment card details are encrypted. - `partiallyEncrypted` - Some payment card details are encrypted. - `plainText` - Payment card details are in plain text.
          - object — Object that contains information about the encrypted card data for keyed transactions.
            - `dataFormat` 'fullyEncrypted', required — Discriminator value: fullyEncrypted
            - `device` EncryptionCapableDevice, required — Object that contains information about the encryption details of the POS terminal.
              - …
            - `encryptedData` string, hexadecimal, required — Encrypted card data.
            - `firstDigitOfPan` string — First digit of the customer’s card number.
          - object — Object that contains information about the partially-encrypted card data for keyed transactions.
            - `dataFormat` 'partiallyEncrypted', required — Discriminator value: partiallyEncrypted
            - `device` EncryptionCapableDevice, required — Object that contains information about the encryption details of the POS terminal.
              - …
            - `encryptedPan` string, hexadecimal, required — Encrypted card number.
            - `maskedPan` string, required — Masked card number. The gateway shows only the first six digits and the last four digits of the account number. For example, `453985******7062`.
            - `expiryDate` string, required — Expiry date of the customer’s card.
            - `cvv` string — Security code of the customer’s card.
            - `cvvEncrypted` string, hexadecimal — Encrypted security code data.
            - `issueNumber` string — Issue number of the customer’s card.
          - object — Object that contains information about the plain-text card data for keyed transactions.
            - `dataFormat` 'plainText', required — Discriminator value: plainText
            - `device` Device — Object that contains information about the physical device the merchant used to capture the customer’s card details.
              - …
            - `cardNumber` string, required — Customer’s card number.
            - `expiryDate` string — Expiry date of the customer’s card. **Note:** We require you to send an expiry date for most BIN lookups and electronic voucher transactions.
            - `cvv` string — Security code of the customer’s card.
            - `issueNumber` string — Issue number of the customer’s card.
        - `cardholderName` string — Cardholder’s name.
        - `cardholderSignature` string — Cardholder's signature. For more information about how to format the signature, go to [How to send a signature to our gateway](https://docs.payroc.com/knowledge/basic-concepts/signature-capture).
        - `pinDetails` FxRateInquiryPaymentMethodDiscriminatorMappingCardCardDetailsDiscriminatorMappingKeyedPinDetails — Object that contains information about encrypted PIN details.
          - `dataFormat` 'dukpt', required — Discriminator value: dukpt
          - `pin` string, hexadecimal, required — Encrypted PIN. **Note:** PIN is encrypted using the DUKPT scheme.
          - `pinKsn` string, hexadecimal, required — Key serial number.
        - `ebtDetails` EbtDetailsWithVoucher — Object that contains information about the Electronic Benefit Transfer (EBT) transaction.
          - `benefitCategory` 'cash' | 'foodStamp', required — Indicates if the balance relates to an EBT Cash account or an EBT SNAP account. - `cash` – EBT Cash - `foodStamp` – EBT SNAP
          - `withdrawal` boolean — Indicates whether the customer wants to withdraw cash. **Note:** Cash withdrawals are available only from EBT Cash accounts.
          - `voucher` Voucher — Object that contains information about the EBT voucher. **Note:** Vouchers are available only for EBT SNAP payments.
            - `approvalCode` string, required — Authorization code that the processor issued for the transaction.
            - `serialNumber` string, required — Serial number of the voucher.
      - object — Object that contains information about the customer’s card details for swiped transactions.
        - `entryMethod` 'swiped', required — Discriminator value: swiped
        - `downgradeTo` 'keyed' | 'swiped' — If an offline transaction is not approved using the initial entry method, reprocess the transaction using a downgraded entry method. For example, a swiped transaction can be downgraded to a keyed transaction.
        - `swipedData` union, required — Polymorphic object that contains payment card details that a device captured from the magnetic strip. The value of the dataFormat parameter determines which variant you should use: - `encrypted` - Payment card details are encrypted. - `plainText` - Payment card details are in plain text.
          - object — Object that contains information about the encrypted swiped card data.
            - `dataFormat` 'encrypted', required — Discriminator value: encrypted
            - `device` EncryptionCapableDevice, required — Object that contains information about the encryption details of the POS terminal.
              - …
            - `encryptedData` string, hexadecimal, required — Encrypted data received from the magnetic stripe reader.
            - `firstDigitOfPan` string — First digit of the of the card number.
            - `fallback` boolean — Indicates that this is a fallback transaction. For example, if there was a technical issue with the chip on the customer's card and the merchant then swiped the card.
            - `fallbackReason` 'technical' | 'repeatFallback' | 'emptyCandidateList' — Reason for the fallback.
          - object — Object that contains information about plain-text swiped card data.
            - `dataFormat` 'plainText', required — Discriminator value: plainText
            - `device` Device, required — Object that contains information about the physical device the merchant used to capture the customer’s card details.
              - …
            - `trackData` string, required — Customer’s card data from the swiped transaction.
            - `fallback` boolean — Indicates that this is a fallback transaction. For example, if there was a technical issue with the chip on the customer's card and the merchant then swiped the card.
            - `fallbackReason` 'technical' | 'repeatFallback' | 'emptyCandidateList' — Reason for the fallback.
        - `cardholderName` string — Cardholder’s name.
        - `cardholderSignature` string — Cardholder's signature. For more information about how to format the signature, go to [How to send a signature to our gateway](https://docs.payroc.com/knowledge/basic-concepts/signature-capture).
        - `pinDetails` FxRateInquiryPaymentMethodDiscriminatorMappingCardCardDetailsDiscriminatorMappingSwipedPinDetails — Object that contains information about encrypted PIN details.
          - `dataFormat` 'dukpt', required — Discriminator value: dukpt
          - `pin` string, hexadecimal, required — Encrypted PIN. **Note:** PIN is encrypted using the DUKPT scheme.
          - `pinKsn` string, hexadecimal, required — Key serial number.
        - `ebtDetails` EbtDetailsWithVoucher — Object that contains information about the Electronic Benefit Transfer (EBT) transaction.
          - `benefitCategory` 'cash' | 'foodStamp', required — Indicates if the balance relates to an EBT Cash account or an EBT SNAP account. - `cash` – EBT Cash - `foodStamp` – EBT SNAP
          - `withdrawal` boolean — Indicates whether the customer wants to withdraw cash. **Note:** Cash withdrawals are available only from EBT Cash accounts.
          - `voucher` Voucher — Object that contains information about the EBT voucher. **Note:** Vouchers are available only for EBT SNAP payments.
            - `approvalCode` string, required — Authorization code that the processor issued for the transaction.
            - `serialNumber` string, required — Serial number of the voucher.
  - `token` string, required — Unique identifier that our gateway assigned to the payment details. **Note:** Merchants can use the token with other terminals linked to their account.
  - `expiresAt` string, date-time, required — Date and time that the token expires. We return this value in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
  - `source` union, required — Polymorphic object that contains the payment method that we tokenized. The value of the type parameter determines which variant you should use: - `ach` - Automated Clearing House (ACH) details - `pad` - Pre-authorized debit (PAD) details - `card` - Payment card details
    - object — Object that contains the customer's account details.
      - `type` 'ach', required — Discriminator value: ach
      - `nameOnAccount` string, required — Customer's name.
      - `accountNumber` string, required — Customer's account number.
      - `routingNumber` string, required — Routing number of the customer's account.
    - object — Object that contains the customer's account details.
      - `type` 'pad', required — Discriminator value: pad
      - `nameOnAccount` string, required — Customer's name.
      - `accountNumber` string, required — Customer's account number.
      - `transitNumber` string, required — Five-digit code that represents the customer's banking branch.
      - `institutionNumber` string, required — Three-digit code that represents the customer's bank.
    - object — Object that contains the customer's card details.
      - `type` 'card', required — Discriminator value: card
      - `cardholderName` string, required — Cardholder's name.
      - `cardNumber` string, required — Primary account number of the customer's card.
      - `expiryDate` string — Expiry date of the customer's card.
      - `cardType` string — Card brand of the card, for example, Visa.
      - `currency` 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BOV' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHE' | 'CHF' | 'CHW' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'COU' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MRU' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'STN' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'USN' | 'USS' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VES' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL' — Currency of the transaction. The value for the currency follows the [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) standard.
      - `debit` boolean — Indicates if the card is a debit card.
      - `surcharging` Surcharging — Object that contains surcharge information. Our gateway returns this object only if the merchant adds a surcharge to transactions.
        - `allowed` boolean, required — Indicates if the merchant can add a surcharge when the customer uses this card.
        - `amount` integer — Surcharge amount to add to the transaction. **Note:** Our gateway returns the surcharge amount only if you include a transaction amount in the request.
        - `percentage` number, double — Surcharge rate that the merchant configures on their account.
        - `disclosure` string — Statement that informs the customer about the surcharge fee.

## Other responses

- `400` — Validation error
- `401` — Identity could not be verified
- `403` — Do not have permissions to perform this action
- `406` — Not acceptable
- `409` — Conflict
- `415` — Unsupported media type
- `500` — An error has occured

---

[API](https://skmtc.dev/payroc/apis/schema.md) · [All operations](https://skmtc.dev/payroc/apis/schema/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/payroc/schema/revisions/1d9d3e305945/schema)
