---
title: "Sale"
method: POST
path: "/v5/payments/sale"
tags: ["Payments"]
---

# Sale

`POST /v5/payments/sale`

Process a sale. This request authorizes and captures the payment in a single step.

## Request body

- PaymentSaleRequest
  - `amount` number, required — Total amount to be charged. Format: `x.xx`
  - `surcharge` number — Surcharge amount. Format: `x.xx`
  - `convenience_fee` number — Convenience fee amount. Format: `x.xx`
  - `misc_fee` number — Miscellaneous fee amount. Format: `x.xx`
  - `misc_fee_name` string — Custom miscellaneous fee name. Default: `Miscellaneous Fee`
  - `tip` number — The final tip amount, included in the payment. Format: `x.xx`
  - `currency` string — The ISO 4217 currency code. Example: `USD`
  - `processor_id` string — If using multiple processors, route to the specified processor ID. Omit for default processor or when using a single processor.
  - `dup_seconds` integer — Sets the time in seconds for duplicate checking on supported processors. Set to 0 to disable duplicate checking
  - `transaction_session_id` string — A single use session ID used by Kount to link the payment and Data Collector information together
  - `customer_receipt` boolean — If set to true, when the customer is charged, they will be sent a receipt
  - `pinless_debit_override` boolean — Set to true if you have Pinless Debit Conversion enabled but want to opt out for this payment
  - `industry` 'retail' | 'restaurant' | 'ecommerce' | 'moto' | 'lodging' — Industry type for the payment
  - `signature_image` string — Base64 encoded signature image
  - `network_tokenize` boolean — Enable network tokenization
  - `partial_payments` 'settle_partial' | 'payment_in_full' — `settle_partial`: Settles any amount of tender collected at cut off. `payment_in_full`: Required that any split tendered payment is collected in-full before settlement gets initiated
  - `partial_payment_id` string — A numeric identifier which is used when submitting subsequent payments for partial payments
  - `payment_details` union, required — Payment method details. Exactly one variant: raw card data, ACH (check) data, **payment_token**, Apple Pay encrypted payload, or Google Pay encrypted payload. Do not combine fields from different variants.
    - object — Non-tokenized credit card data.
      - `card_number` string, required — Credit card number
      - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
      - `card_cvv` string — The card security code.
    - object — Bank account (ACH) details for this transaction.
      - `check_name` string, required — The name on the customer's ACH account
      - `check_aba` number, required — The customer's bank routing number
      - `check_account` number, required — The customer's bank account number
      - `account_type` 'checking' | 'savings', required — The type of ACH account the customer has
      - `account_holder_type` 'personal' | 'business', required — The type of ACH account the customer has
      - `sec_code` 'PPD' | 'WEB' | 'TEL' | 'CCD' | 'POP' | 'RCK', required — The Standard Entry Class code of the ACH transaction
      - `check_number` string — Check number
    - object — Single-use or vault token from Payment Component or Collect.js (not Apple Pay / Google Pay).
      - `payment_token` string, required — The tokenized version of the customer's card or check information
    - object — Encrypted payment data from the Apple Pay SDK.
      - `applepay_payment_data` string, required — The encrypted token created when integration directly to the Apple Pay SDK
    - object — Encrypted payment data from the Google Pay SDK.
      - `googlepay_payment_data` string, required — The encrypted token created when integration directly to the Google Pay SDK
    - object — Merchant-decrypted Apple Pay payment data.
      - `decrypted_applepay_data` true, required — Merchant-decrypted Apple Pay flag.
      - `card_number` string, required — Credit card number
      - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
    - object — Merchant-decrypted Google Pay payment data.
      - `decrypted_googlepay_data` true, required — Merchant-decrypted Google Pay flag.
      - `card_number` string, required — Credit card number
      - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
  - `billing_address` BillingAddressRest — Billing address and information
    - `method` 'initial_recurring' | 'recurring' | 'installment' — Recurring or installment classification for the processor. - `initial_recurring`: First transaction in a recurring sequence only. - `recurring`: Later charges in that sequence. - `installment`: Installment transactions; use `number` and `total` on supported processors. Which values apply depends on the processor.
    - `number` integer — Specify installment billing number, on supported processors. For use when `billing.method` is set to "installment"
    - `total` number — Specify installment billing total on supported processors. For use when `billing.method` is set to "installment"
    - `first_name` string — Cardholder's first name
    - `last_name` string — Cardholder's last name
    - `company` string — Cardholder's company
    - `address1` string — Card billing address
    - `address2` string — Card billing address, line 2
    - `city` string — Card billing city
    - `state` string — Card billing state. Format: `CC`
    - `zip` string — Card billing zip code
    - `country` string — Card billing country. Country codes are as shown in ISO 3166-1 alpha-2. Format: `CC`
    - `phone` string — Billing phone number
    - `email` string, email — Billing email address
    - `fax` string — Billing fax number
    - `cell_phone` string — Billing cell phone number
    - `website` string — Website (invoice-specific field)
    - `drivers_license_number` string — Driver's license number
    - `drivers_license_dob` string — Driver's license date of birth. Format: `YYYY-MM-DD`
    - `drivers_license_state` string — Driver's license state. Format: `CC`
    - `payment_details` union — Payment method details. Exactly one variant: raw card data, ACH (check) data, **payment_token**, Apple Pay encrypted payload, or Google Pay encrypted payload. Do not combine fields from different variants.
      - object — Non-tokenized credit card data.
        - `card_number` string, required — Credit card number
        - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
        - `card_cvv` string — The card security code.
      - object — Bank account (ACH) details for this transaction.
        - `check_name` string, required — The name on the customer's ACH account
        - `check_aba` number, required — The customer's bank routing number
        - `check_account` number, required — The customer's bank account number
        - `account_type` 'checking' | 'savings', required — The type of ACH account the customer has
        - `account_holder_type` 'personal' | 'business', required — The type of ACH account the customer has
        - `sec_code` 'PPD' | 'WEB' | 'TEL' | 'CCD' | 'POP' | 'RCK', required — The Standard Entry Class code of the ACH transaction
        - `check_number` string — Check number
      - object — Single-use or vault token from Payment Component or Collect.js (not Apple Pay / Google Pay).
        - `payment_token` string, required — The tokenized version of the customer's card or check information
      - object — Encrypted payment data from the Apple Pay SDK.
        - `applepay_payment_data` string, required — The encrypted token created when integration directly to the Apple Pay SDK
      - object — Encrypted payment data from the Google Pay SDK.
        - `googlepay_payment_data` string, required — The encrypted token created when integration directly to the Google Pay SDK
      - object — Merchant-decrypted Apple Pay payment data.
        - `decrypted_applepay_data` true, required — Merchant-decrypted Apple Pay flag.
        - `card_number` string, required — Credit card number
        - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
      - object — Merchant-decrypted Google Pay payment data.
        - `decrypted_googlepay_data` true, required — Merchant-decrypted Google Pay flag.
        - `card_number` string, required — Credit card number
        - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
    - `cardholder_auth` union — Cardholder authentication data. Use the 3-D Secure variant for EMV authentication results. Use the Decrypted wallet variant for merchant-decrypted Apple Pay or Google Pay, which relays the cryptogram and ECI to the 3-D Secure fields.
      - object — EMV 3-D Secure authentication result fields.
        - `status` 'verified' | 'attempted', required — Set 3D Secure condition. Value used to determine E-commerce indicator (ECI).
        - `cavv` string, required — Cardholder authentication verification value from the 3-D Secure authentication response. Format: base64 encoded.
        - `xid` string — Cardholder authentication transaction id. Format: base64 encoded.
        - `three_ds_version` string — 3DSecure version (for example `2.1.0` or `2.2.0`).
        - `directory_server_id` string — Directory Server Transaction ID from 3DSecure 2.0 authentication. Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      - object — Wallet authentication for decrypted Apple Pay or Google Pay payments.
        - `cavv` string, required — Wallet payment cryptogram (submitted in the repurposed 3-D Secure `cavv` field).
        - `eci` string — Electronic Commerce Indicator from the wallet payment data (submitted in the repurposed 3-D Secure `eci` field).
  - `shipping_address` ShippingAddressRest — Shipping address and information
    - `first_name` string — Shipping first name
    - `last_name` string — Shipping last name
    - `company` string — Shipping company
    - `address1` string — Shipping address
    - `address2` string — Shipping address, line 2
    - `city` string — Shipping city
    - `state` string — Shipping state.
    - `zip` string — Shipping zip code
    - `country` string — ISO 3166-1 alpha-2 country code. Example: `US`
    - `email` string, email — Shipping email address
    - `carrier` 'ups' | 'fedex' | 'dhl' | 'usps' — Shipping carrier
  - `order_details` OrderDetailsRest — Order details and line items
    - `template_id` string — Order template ID
    - `description` string — Order description
    - `id` string — Order ID (for payment requests)
    - `order_id` string — Order ID (for invoice requests and responses)
    - `customer_id` string — Customer ID (invoice-specific)
    - `customer_tax_id` string — Customer tax ID (invoice-specific)
    - `tax` number — Tax amount
    - `shipping` number — Shipping amount
    - `po_number` string — Purchase order number (maxLength 50 for payments, 255 for invoices)
    - `shipping_postal_code` string — Shipping postal code
    - `ship_from_postal_code` string — Ship from postal code
    - `summary_commodity_code` string — Summary commodity code
    - `duty_amount` number — Duty amount
    - `discount_amount` number — Discount amount
    - `national_tax_amount` number — National tax amount
    - `alternate_tax_amount` number — Alternate tax amount
    - `alternate_tax_id` string — Alternate tax ID
    - `vat_tax_amount` number — VAT tax amount
    - `vat_tax_rate` number — VAT tax rate
    - `vat_invoice_reference_number` string — VAT invoice reference number
    - `customer_vat_registration` string — Customer VAT registration
    - `merchant_vat_registration` string — Merchant VAT registration
    - `order_date` string, date — Order date
    - `order_description` string — Order description (maxLength 255 for both payments and invoices)
    - `ip_address` string — IP address of cardholder (IPv4 or IPv6). Format validated as IP address
    - `line_items` LineItem[]
      - `product_code` string — Product code
      - `description` string — Line item description
      - `commodity_code` string — Commodity code
      - `unit_of_measure` string — Unit of measure
      - `unit_cost` number — Unit cost
      - `quantity` integer — Quantity
      - `total_amount` number — Total amount
      - `tax_amount` number — Tax amount
      - `tax_rate` number — Tax rate
      - `discount_amount` number — Discount amount
      - `discount_rate` number — Discount rate
      - `tax_type` string — Tax type
      - `alternate_tax_id` string — Alternate tax ID
  - `payment_facilitator` PaymentFacilitator — Payment facilitator information for submerchant transactions
    - `id` string — Payment facilitator ID
    - `submerchant_id` string — Submerchant ID
    - `submerchant_name` string — Submerchant name
    - `submerchant_address` string — Submerchant address
    - `submerchant_city` string — Submerchant city
    - `submerchant_state` string — Submerchant state
    - `submerchant_postal` string — Submerchant postal code
    - `submerchant_country` string — Submerchant country
    - `submerchant_phone` string — Submerchant phone
    - `submerchant_email` string, email — Submerchant email
  - `payment_descriptor` PaymentDescriptor — Payment descriptor information for transaction statements
    - `descriptor` string — Payment descriptor
    - `phone` string — Payment descriptor phone
    - `address` string — Payment descriptor address
    - `city` string — Payment descriptor city
    - `state` string — Payment descriptor state
    - `postal_code` string — Payment descriptor postal code
    - `country` string — Payment descriptor country
    - `mcc` string — Merchant category code
    - `merchant_id` string — Merchant ID
    - `url` string, uri — Merchant URL (must be HTTPS)
  - `cardholder_auth` union — Cardholder authentication data. Use the 3-D Secure variant for EMV authentication results. Use the Decrypted wallet variant for merchant-decrypted Apple Pay or Google Pay, which relays the cryptogram and ECI to the 3-D Secure fields.
    - object — EMV 3-D Secure authentication result fields.
      - `status` 'verified' | 'attempted', required — Set 3D Secure condition. Value used to determine E-commerce indicator (ECI).
      - `cavv` string, required — Cardholder authentication verification value from the 3-D Secure authentication response. Format: base64 encoded.
      - `xid` string — Cardholder authentication transaction id. Format: base64 encoded.
      - `three_ds_version` string — 3DSecure version (for example `2.1.0` or `2.2.0`).
      - `directory_server_id` string — Directory Server Transaction ID from 3DSecure 2.0 authentication. Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    - object — Wallet authentication for decrypted Apple Pay or Google Pay payments.
      - `cavv` string, required — Wallet payment cryptogram (submitted in the repurposed 3-D Secure `cavv` field).
      - `eci` string — Electronic Commerce Indicator from the wallet payment data (submitted in the repurposed 3-D Secure `eci` field).
  - `merchant_defined_fields` MerchantDefinedFields — Custom fields that can be set up in merchant control panel under Settings->Merchant Defined Fields
    - `field_1` string — Merchant defined field 1
    - `field_2` string — Merchant defined field 2
    - `field_3` string — Merchant defined field 3
    - `field_4` string — Merchant defined field 4
    - `field_5` string — Merchant defined field 5
    - `field_6` string — Merchant defined field 6
    - `field_7` string — Merchant defined field 7
    - `field_8` string — Merchant defined field 8
    - `field_9` string — Merchant defined field 9
    - `field_10` string — Merchant defined field 10
    - `field_11` string — Merchant defined field 11
    - `field_12` string — Merchant defined field 12
    - `field_13` string — Merchant defined field 13
    - `field_14` string — Merchant defined field 14
    - `field_15` string — Merchant defined field 15
    - `field_16` string — Merchant defined field 16
    - `field_17` string — Merchant defined field 17
    - `field_18` string — Merchant defined field 18
    - `field_19` string — Merchant defined field 19
    - `field_20` string — Merchant defined field 20
  - `customer_vault` CustomerVault — Customer vault information for storing payment methods
    - `add_to_vault` boolean — Add customer to vault
    - `id` string — Customer vault ID
  - `cit_mit` CitMit — Credential on File information
    - `initiated_by` 'customer' | 'merchant' — Whether the transaction was initiated by the customer or merchant
    - `initial_transaction_id` string — Initial payment ID from the stored credentials payment request. Used on subsequent follow up payments.
    - `stored_credential_indicator` 'stored' | 'used' — Stored credential indicator

## Response `200`

Success

- TransactionResponse — Generic payment response
  - `object` 'transaction', required — Resource type identifier
  - `id` string, required — Payment ID
  - `type` string — Customer's payment type (e.g., 'cc', 'ck', 'cs')
  - `amount` string — Payment amount. Format: `x.xx`
  - `currency` string — Payment currency (ISO 4217)
  - `auth_code` string — Authorization code
  - `avs_response` string — Address Verification Service response code
  - `cvv_response` string — Card Verification Value response
  - `customer_vault_id` string — Customer vault ID associated with the payment
  - `status` string — Payment status
  - `response` '1' | '2' | '3' — Response code: 1 = approved, 2 = declined, 3 = error
  - `response_text` string — Textual description of the operation's result
  - `response_code` string — Processor response code
  - `processor_id` string — Processor ID used for the payment
  - `created_date` string, date-time — Payment creation date in UTC ISO 8601 format
  - `updated_date` string, date-time — Payment last update date in UTC ISO 8601 format
  - `payment_details` object — Payment method details (card or check)
    - `card_number` string — Masked credit card number
    - `card_exp` string — Credit card expiration date. Format: `MMYY`
    - `card_hash` string — Card hash
    - `card_type` string — Card type (e.g., 'Visa', 'Mastercard')
    - `card_bin` string — Card BIN (Bank Identification Number)
    - `entry_mode` string — Entry mode
    - `cavv` string — Cardholder Authentication Verification Value
    - `cavv_result` string — CAVV result
    - `xid` string — Identifier for 3D Secure
    - `eci` string — Electronic Commerce Indicator
    - `card_start_date` string — Card start date. Format: `MMYY`
    - `card_issue_number` string — Card issue number
    - `cardholder_auth` string — Cardholder authentication
    - `check_account` string — Masked check account number
    - `check_aba` string — Bank routing number
    - `check_name` string — Name on the check
    - `account_type` 'checking' | 'savings' — Account type
    - `account_holder_type` 'personal' | 'business' — Account holder type
    - `sec_code` 'PPD' | 'WEB' | 'TEL' | 'CCD' | 'POP' | 'RCK' — Standard Entry Class code
  - `billing_address` object — Billing address information
    - `first_name` string — First name
    - `last_name` string — Last name
    - `company` string — Company name
    - `address1` string — Address line 1
    - `address2` string — Address line 2
    - `city` string — City
    - `state` string — State or province
    - `zip` string — ZIP or postal code
    - `country` string — Country code (ISO 3166-1 alpha-2)
    - `phone` string — Phone number
    - `cell_phone` string — Cell phone number
    - `email` string, email — Email address
    - `fax` string — Fax number
  - `shipping_address` object — Shipping address information
    - `first_name` string — First name
    - `last_name` string — Last name
    - `company` string — Company name
    - `address1` string — Address line 1
    - `address2` string — Address line 2
    - `city` string — City
    - `state` string — State or province
    - `zip` string — ZIP or postal code
    - `country` string — Country code (ISO 3166-1 alpha-2)
    - `email` string, email — Email address
    - `phone` string — Phone number
    - `fax` string — Fax number
  - `order_details` object — Order details
    - `order_id` string — Order ID
    - `ip_address` string — IP address of cardholder
    - `order_description` string — Order description
    - `customer_id` string — Customer ID
    - `customer_tax_id` string — Customer tax ID
    - `tax` string — Tax amount. Format: `x.xx`
    - `shipping` string — Shipping amount. Format: `x.xx`
    - `discount_amount` string — Discount amount. Format: `x.xx`
    - `surcharge` string — Surcharge amount. Format: `x.xx`
    - `tip` string — Tip amount. Format: `x.xx`
    - `po_number` string — Purchase order number
    - `shipping_carrier` string — Shipping carrier
    - `tracking_number` string — Tracking number
    - `shipping_date` string, date-time — Shipping date in UTC ISO 8601 format
  - `actions` object[] — Array of actions for the payment
    - `id` string — Action ID
    - `type` string — Action type
    - `amount` string — Action amount. Format: `x.xx`
    - `success` boolean — Whether the action was successful
    - `response` '1' | '2' | '3' — Response code: 1 = approved, 2 = declined, 3 = error
    - `response_text` string — Response text
    - `response_code` string — Response code
    - `auth_code` string — Authorization code
    - `avs_response` string — AVS response
    - `cvv_response` string — CVV response
    - `processor_id` string — Processor ID
    - `ip_address` string — IP address
    - `user_id` string — User ID who performed the action
    - `date` string, date-time — Action date in UTC ISO 8601 format
    - `source` string — Source of the action

## Other responses

- `400` — Bad Request - Validation Error
- `401` — Unauthorized

---

[API](https://skmtc.net/nmi/apis/embedded-components-api.md) · [All operations](https://skmtc.net/nmi/apis/embedded-components-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/nmi/embedded-components-api/versions/45c2ecda3685/schema)
