---
title: "Create Subscription"
method: POST
path: "/v5/subscriptions"
tags: ["Subscriptions"]
---

# Create Subscription

`POST /v5/subscriptions`

## Request

- Base URL: `https://sandbox.nmi.com/api`
- URL: `https://sandbox.nmi.com/api/v5/subscriptions`
- Auth: API key in header `Authorization`

Create a new subscription. A subscription can be associated with an existing plan or created as a custom subscription.

## Request body

- union
  - object: Bill with card, ACH, token, or wallet data. Optionally add the payment method to the customer vault.
    - `paused_subscription` boolean: If set to true, the subscription will be paused
    - `billing_address` BillingAddressRest: Billing address for a payment transaction request.
      - `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**, wallet payloads, or **retail card-present** data from a card reader. 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.
        - RetailUnencryptedMagneticStripe: Card-present payment using raw magnetic stripe data from a card reader. Set `industry` to `retail` on the payment request.
          - `track_1` string, required: Raw magnetic stripe data.
          - `track_2` string, required: Raw magnetic stripe data.
          - `track_3` string: Raw magnetic stripe data.
        - RetailMagTekMagensaEncryptedSwipe: Card-present payment using encrypted magnetic stripe data from a MagTek Magensa reader. Set `industry` to `retail` on the payment request.
          - `magnesafe_track_1` string, required: Raw MagTek Magensa data.
          - `magnesafe_track_2` string, required: Raw MagTek Magensa data.
          - `magnesafe_magneprint` string: Raw MagTek Magensa data.
          - `magnesafe_ksn` string: Raw MagTek Magensa data.
          - `magnesafe_magneprint_status` string: Raw MagTek Magensa data.
        - RetailIdTechEncryptedSwipe: Card-present encrypted swipe data from an ID Tech M130 reader. Set `industry` to `retail` on the payment request.
          - `encrypted_track_1` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
          - `encrypted_track_3` string: Raw encrypted data.
          - `encrypted_ksn` string: Raw encrypted data.
        - RetailIdTechEncryptedKeyed: Card-present encrypted keyed entry data from an ID Tech M130 reader. Set `industry` to `retail` on the payment request.
          - `encrypted_data` string, required: Raw encrypted data.
        - RetailIngenicoChip: Card-present EMV chip payment from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'emv_icc', required: The type of transaction data to be processed.
          - `emv_auth_request_data` string, required: EMV data for the transaction as received from the EMV chip card SDK.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `verification_method` 'signature' | 'offline_pin' | 'offline_pin_signature' | 'none', required: Method used to verify the EMV transaction.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailIngenicoSwipe: Card-present encrypted swipe from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'swiped' | 'swiped_emv_fallback', required: The type of transaction data to be processed.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_1` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailIngenicoNfc: Card-present NFC payment from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'nfc_msd', required: The type of transaction data to be processed.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailIngenicoKeyed: Card-present encrypted keyed entry from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'keyed', required: The type of transaction data to be processed.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailMobileSdkEncryptedPayment: RSA-encrypted card data from the NMI Mobile SDK (iOS/Android). Use in place of raw card number, expiration, and CVV. Set `industry` to `retail` on the payment request when processing as a card-present transaction.
          - `encrypted_payment` string, required: Encrypted payment blob returned by the Mobile SDK.
        - 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](../docs/payment-component) or [Collect.js](https://secure.networkmerchants.com/merchants/resources/integration/integration_portal.php#cjs_methodology) (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: Set to `true` when submitting merchant-decrypted Apple Pay data.
          - `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: Set to `true` when submitting merchant-decrypted Google Pay data.
          - `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
      - `id` string: Shipping address ID (max 32 characters). Generated if omitted on create.
      - `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
    - `merchant_defined_fields` MerchantDefinedFields: Custom fields configured in the merchant control panel under Settings → Merchant Defined Fields (`field_1` through `field_20`).
      - `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
    - `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).
    - `start_date` string: The date the subscription's first charge occurs. Format: `YYYYMMDD` (optionally `YYYYMMDDHHMMSS`). Defaults to the next billing date derived from the plan schedule when omitted.
    - `plan_id` string, required: Plan ID to use for the subscription
    - `payment_details` union, required: Payment method details. Exactly one variant: raw card data, ACH (check) data, **payment_token**, wallet payloads, or **retail card-present** data from a card reader. 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.
      - RetailUnencryptedMagneticStripe: Card-present payment using raw magnetic stripe data from a card reader. Set `industry` to `retail` on the payment request.
        - `track_1` string, required: Raw magnetic stripe data.
        - `track_2` string, required: Raw magnetic stripe data.
        - `track_3` string: Raw magnetic stripe data.
      - RetailMagTekMagensaEncryptedSwipe: Card-present payment using encrypted magnetic stripe data from a MagTek Magensa reader. Set `industry` to `retail` on the payment request.
        - `magnesafe_track_1` string, required: Raw MagTek Magensa data.
        - `magnesafe_track_2` string, required: Raw MagTek Magensa data.
        - `magnesafe_magneprint` string: Raw MagTek Magensa data.
        - `magnesafe_ksn` string: Raw MagTek Magensa data.
        - `magnesafe_magneprint_status` string: Raw MagTek Magensa data.
      - RetailIdTechEncryptedSwipe: Card-present encrypted swipe data from an ID Tech M130 reader. Set `industry` to `retail` on the payment request.
        - `encrypted_track_1` string, required: Raw encrypted data.
        - `encrypted_track_2` string, required: Raw encrypted data.
        - `encrypted_track_3` string: Raw encrypted data.
        - `encrypted_ksn` string: Raw encrypted data.
      - RetailIdTechEncryptedKeyed: Card-present encrypted keyed entry data from an ID Tech M130 reader. Set `industry` to `retail` on the payment request.
        - `encrypted_data` string, required: Raw encrypted data.
      - RetailIngenicoChip: Card-present EMV chip payment from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
        - `entry_mode` 'emv_icc', required: The type of transaction data to be processed.
        - `emv_auth_request_data` string, required: EMV data for the transaction as received from the EMV chip card SDK.
        - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
        - `verification_method` 'signature' | 'offline_pin' | 'offline_pin_signature' | 'none', required: Method used to verify the EMV transaction.
        - `encrypted_ksn` string, required: Raw encrypted data.
        - `encrypted_track_2` string, required: Raw encrypted data.
      - RetailIngenicoSwipe: Card-present encrypted swipe from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
        - `entry_mode` 'swiped' | 'swiped_emv_fallback', required: The type of transaction data to be processed.
        - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
        - `encrypted_ksn` string, required: Raw encrypted data.
        - `encrypted_track_1` string, required: Raw encrypted data.
        - `encrypted_track_2` string, required: Raw encrypted data.
      - RetailIngenicoNfc: Card-present NFC payment from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
        - `entry_mode` 'nfc_msd', required: The type of transaction data to be processed.
        - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
        - `encrypted_ksn` string, required: Raw encrypted data.
        - `encrypted_track_2` string, required: Raw encrypted data.
      - RetailIngenicoKeyed: Card-present encrypted keyed entry from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
        - `entry_mode` 'keyed', required: The type of transaction data to be processed.
        - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
        - `encrypted_ksn` string, required: Raw encrypted data.
        - `encrypted_track_2` string, required: Raw encrypted data.
      - RetailMobileSdkEncryptedPayment: RSA-encrypted card data from the NMI Mobile SDK (iOS/Android). Use in place of raw card number, expiration, and CVV. Set `industry` to `retail` on the payment request when processing as a card-present transaction.
        - `encrypted_payment` string, required: Encrypted payment blob returned by the Mobile SDK.
      - 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](../docs/payment-component) or [Collect.js](https://secure.networkmerchants.com/merchants/resources/integration/integration_portal.php#cjs_methodology) (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: Set to `true` when submitting merchant-decrypted Apple Pay data.
        - `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: Set to `true` when submitting merchant-decrypted Google Pay data.
        - `card_number` string, required: Credit card number
        - `card_exp` string, required: Credit card expiration date. Format: `MMYY`
    - `customer_vault` CustomerVaultAdd: Store the inline `payment_details` from this request in the customer vault.
      - `add_to_vault` boolean, required: Set to `true` to store the payment method in the customer vault.
      - `id` string: Optional custom customer vault ID (max 36 characters). Generated if omitted.
  - object: Bill an existing customer vault record. Do not include `payment_details`.
    - `paused_subscription` boolean: If set to true, the subscription will be paused
    - `billing_address` BillingAddressRest: Billing address for a payment transaction request.
      - `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**, wallet payloads, or **retail card-present** data from a card reader. 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.
        - RetailUnencryptedMagneticStripe: Card-present payment using raw magnetic stripe data from a card reader. Set `industry` to `retail` on the payment request.
          - `track_1` string, required: Raw magnetic stripe data.
          - `track_2` string, required: Raw magnetic stripe data.
          - `track_3` string: Raw magnetic stripe data.
        - RetailMagTekMagensaEncryptedSwipe: Card-present payment using encrypted magnetic stripe data from a MagTek Magensa reader. Set `industry` to `retail` on the payment request.
          - `magnesafe_track_1` string, required: Raw MagTek Magensa data.
          - `magnesafe_track_2` string, required: Raw MagTek Magensa data.
          - `magnesafe_magneprint` string: Raw MagTek Magensa data.
          - `magnesafe_ksn` string: Raw MagTek Magensa data.
          - `magnesafe_magneprint_status` string: Raw MagTek Magensa data.
        - RetailIdTechEncryptedSwipe: Card-present encrypted swipe data from an ID Tech M130 reader. Set `industry` to `retail` on the payment request.
          - `encrypted_track_1` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
          - `encrypted_track_3` string: Raw encrypted data.
          - `encrypted_ksn` string: Raw encrypted data.
        - RetailIdTechEncryptedKeyed: Card-present encrypted keyed entry data from an ID Tech M130 reader. Set `industry` to `retail` on the payment request.
          - `encrypted_data` string, required: Raw encrypted data.
        - RetailIngenicoChip: Card-present EMV chip payment from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'emv_icc', required: The type of transaction data to be processed.
          - `emv_auth_request_data` string, required: EMV data for the transaction as received from the EMV chip card SDK.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `verification_method` 'signature' | 'offline_pin' | 'offline_pin_signature' | 'none', required: Method used to verify the EMV transaction.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailIngenicoSwipe: Card-present encrypted swipe from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'swiped' | 'swiped_emv_fallback', required: The type of transaction data to be processed.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_1` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailIngenicoNfc: Card-present NFC payment from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'nfc_msd', required: The type of transaction data to be processed.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailIngenicoKeyed: Card-present encrypted keyed entry from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'keyed', required: The type of transaction data to be processed.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailMobileSdkEncryptedPayment: RSA-encrypted card data from the NMI Mobile SDK (iOS/Android). Use in place of raw card number, expiration, and CVV. Set `industry` to `retail` on the payment request when processing as a card-present transaction.
          - `encrypted_payment` string, required: Encrypted payment blob returned by the Mobile SDK.
        - 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](../docs/payment-component) or [Collect.js](https://secure.networkmerchants.com/merchants/resources/integration/integration_portal.php#cjs_methodology) (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: Set to `true` when submitting merchant-decrypted Apple Pay data.
          - `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: Set to `true` when submitting merchant-decrypted Google Pay data.
          - `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
      - `id` string: Shipping address ID (max 32 characters). Generated if omitted on create.
      - `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
    - `merchant_defined_fields` MerchantDefinedFields: Custom fields configured in the merchant control panel under Settings → Merchant Defined Fields (`field_1` through `field_20`).
      - `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
    - `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).
    - `start_date` string: The date the subscription's first charge occurs. Format: `YYYYMMDD` (optionally `YYYYMMDDHHMMSS`). Defaults to the next billing date derived from the plan schedule when omitted.
    - `plan_id` string, required: Plan ID to use for the subscription
    - `customer_vault` CustomerVaultCharge, required: Charge or validate an existing customer vault record. Do not send `payment_details`.
      - `id` string, required: Existing customer vault ID (max 36 characters).
      - `billing_id` string: Billing profile ID to use. Defaults to the vault priority billing profile if omitted (max 32 characters).
      - `shipping_id` string: Shipping profile ID to use. Defaults to the vault priority shipping profile if omitted (max 32 characters).
  - object: Bill with card, ACH, token, or wallet data. Optionally add the payment method to the customer vault.
    - `paused_subscription` boolean: If set to true, the subscription will be paused
    - `billing_address` BillingAddressRest: Billing address for a payment transaction request.
      - `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**, wallet payloads, or **retail card-present** data from a card reader. 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.
        - RetailUnencryptedMagneticStripe: Card-present payment using raw magnetic stripe data from a card reader. Set `industry` to `retail` on the payment request.
          - `track_1` string, required: Raw magnetic stripe data.
          - `track_2` string, required: Raw magnetic stripe data.
          - `track_3` string: Raw magnetic stripe data.
        - RetailMagTekMagensaEncryptedSwipe: Card-present payment using encrypted magnetic stripe data from a MagTek Magensa reader. Set `industry` to `retail` on the payment request.
          - `magnesafe_track_1` string, required: Raw MagTek Magensa data.
          - `magnesafe_track_2` string, required: Raw MagTek Magensa data.
          - `magnesafe_magneprint` string: Raw MagTek Magensa data.
          - `magnesafe_ksn` string: Raw MagTek Magensa data.
          - `magnesafe_magneprint_status` string: Raw MagTek Magensa data.
        - RetailIdTechEncryptedSwipe: Card-present encrypted swipe data from an ID Tech M130 reader. Set `industry` to `retail` on the payment request.
          - `encrypted_track_1` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
          - `encrypted_track_3` string: Raw encrypted data.
          - `encrypted_ksn` string: Raw encrypted data.
        - RetailIdTechEncryptedKeyed: Card-present encrypted keyed entry data from an ID Tech M130 reader. Set `industry` to `retail` on the payment request.
          - `encrypted_data` string, required: Raw encrypted data.
        - RetailIngenicoChip: Card-present EMV chip payment from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'emv_icc', required: The type of transaction data to be processed.
          - `emv_auth_request_data` string, required: EMV data for the transaction as received from the EMV chip card SDK.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `verification_method` 'signature' | 'offline_pin' | 'offline_pin_signature' | 'none', required: Method used to verify the EMV transaction.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailIngenicoSwipe: Card-present encrypted swipe from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'swiped' | 'swiped_emv_fallback', required: The type of transaction data to be processed.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_1` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailIngenicoNfc: Card-present NFC payment from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'nfc_msd', required: The type of transaction data to be processed.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailIngenicoKeyed: Card-present encrypted keyed entry from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'keyed', required: The type of transaction data to be processed.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailMobileSdkEncryptedPayment: RSA-encrypted card data from the NMI Mobile SDK (iOS/Android). Use in place of raw card number, expiration, and CVV. Set `industry` to `retail` on the payment request when processing as a card-present transaction.
          - `encrypted_payment` string, required: Encrypted payment blob returned by the Mobile SDK.
        - 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](../docs/payment-component) or [Collect.js](https://secure.networkmerchants.com/merchants/resources/integration/integration_portal.php#cjs_methodology) (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: Set to `true` when submitting merchant-decrypted Apple Pay data.
          - `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: Set to `true` when submitting merchant-decrypted Google Pay data.
          - `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
      - `id` string: Shipping address ID (max 32 characters). Generated if omitted on create.
      - `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
    - `merchant_defined_fields` MerchantDefinedFields: Custom fields configured in the merchant control panel under Settings → Merchant Defined Fields (`field_1` through `field_20`).
      - `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
    - `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).
    - `start_date` string: The date the subscription's first charge occurs. Format: `YYYYMMDD` (optionally `YYYYMMDDHHMMSS`). Defaults to the next billing date derived from the plan schedule when omitted.
    - `plan_details` union, required
      - object
        - `plan_amount` number, required: The plan amount to be charged each billing cycle. Format: `x.xx`
        - `plan_payments` integer, required: The number of payments before the recurring plan is complete. Use '0' for until canceled
        - `id` string: The unique identifier for the plan. Required when creating a plan directly; optional when defining a custom plan inline via a subscription.
        - `plan_name` string: The display name of the plan
        - `month_frequency` integer, required: How often, in months, to charge the customer.
        - `day_of_month` integer, required: The day of the month that the customer will be charged. For months without 29, 30, or 31 days, the charge will be on the last day.
      - object
        - `plan_amount` number, required: The plan amount to be charged each billing cycle. Format: `x.xx`
        - `plan_payments` integer, required: The number of payments before the recurring plan is complete. Use '0' for until canceled
        - `id` string: The unique identifier for the plan. Required when creating a plan directly; optional when defining a custom plan inline via a subscription.
        - `plan_name` string: The display name of the plan
        - `day_frequency` integer, required: How often, in days, to charge the customer.
    - `payment_details` union, required: Payment method details. Exactly one variant: raw card data, ACH (check) data, **payment_token**, wallet payloads, or **retail card-present** data from a card reader. 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.
      - RetailUnencryptedMagneticStripe: Card-present payment using raw magnetic stripe data from a card reader. Set `industry` to `retail` on the payment request.
        - `track_1` string, required: Raw magnetic stripe data.
        - `track_2` string, required: Raw magnetic stripe data.
        - `track_3` string: Raw magnetic stripe data.
      - RetailMagTekMagensaEncryptedSwipe: Card-present payment using encrypted magnetic stripe data from a MagTek Magensa reader. Set `industry` to `retail` on the payment request.
        - `magnesafe_track_1` string, required: Raw MagTek Magensa data.
        - `magnesafe_track_2` string, required: Raw MagTek Magensa data.
        - `magnesafe_magneprint` string: Raw MagTek Magensa data.
        - `magnesafe_ksn` string: Raw MagTek Magensa data.
        - `magnesafe_magneprint_status` string: Raw MagTek Magensa data.
      - RetailIdTechEncryptedSwipe: Card-present encrypted swipe data from an ID Tech M130 reader. Set `industry` to `retail` on the payment request.
        - `encrypted_track_1` string, required: Raw encrypted data.
        - `encrypted_track_2` string, required: Raw encrypted data.
        - `encrypted_track_3` string: Raw encrypted data.
        - `encrypted_ksn` string: Raw encrypted data.
      - RetailIdTechEncryptedKeyed: Card-present encrypted keyed entry data from an ID Tech M130 reader. Set `industry` to `retail` on the payment request.
        - `encrypted_data` string, required: Raw encrypted data.
      - RetailIngenicoChip: Card-present EMV chip payment from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
        - `entry_mode` 'emv_icc', required: The type of transaction data to be processed.
        - `emv_auth_request_data` string, required: EMV data for the transaction as received from the EMV chip card SDK.
        - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
        - `verification_method` 'signature' | 'offline_pin' | 'offline_pin_signature' | 'none', required: Method used to verify the EMV transaction.
        - `encrypted_ksn` string, required: Raw encrypted data.
        - `encrypted_track_2` string, required: Raw encrypted data.
      - RetailIngenicoSwipe: Card-present encrypted swipe from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
        - `entry_mode` 'swiped' | 'swiped_emv_fallback', required: The type of transaction data to be processed.
        - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
        - `encrypted_ksn` string, required: Raw encrypted data.
        - `encrypted_track_1` string, required: Raw encrypted data.
        - `encrypted_track_2` string, required: Raw encrypted data.
      - RetailIngenicoNfc: Card-present NFC payment from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
        - `entry_mode` 'nfc_msd', required: The type of transaction data to be processed.
        - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
        - `encrypted_ksn` string, required: Raw encrypted data.
        - `encrypted_track_2` string, required: Raw encrypted data.
      - RetailIngenicoKeyed: Card-present encrypted keyed entry from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
        - `entry_mode` 'keyed', required: The type of transaction data to be processed.
        - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
        - `encrypted_ksn` string, required: Raw encrypted data.
        - `encrypted_track_2` string, required: Raw encrypted data.
      - RetailMobileSdkEncryptedPayment: RSA-encrypted card data from the NMI Mobile SDK (iOS/Android). Use in place of raw card number, expiration, and CVV. Set `industry` to `retail` on the payment request when processing as a card-present transaction.
        - `encrypted_payment` string, required: Encrypted payment blob returned by the Mobile SDK.
      - 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](../docs/payment-component) or [Collect.js](https://secure.networkmerchants.com/merchants/resources/integration/integration_portal.php#cjs_methodology) (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: Set to `true` when submitting merchant-decrypted Apple Pay data.
        - `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: Set to `true` when submitting merchant-decrypted Google Pay data.
        - `card_number` string, required: Credit card number
        - `card_exp` string, required: Credit card expiration date. Format: `MMYY`
    - `customer_vault` CustomerVaultAdd: Store the inline `payment_details` from this request in the customer vault.
      - `add_to_vault` boolean, required: Set to `true` to store the payment method in the customer vault.
      - `id` string: Optional custom customer vault ID (max 36 characters). Generated if omitted.
  - object: Bill an existing customer vault record. Do not include `payment_details`.
    - `paused_subscription` boolean: If set to true, the subscription will be paused
    - `billing_address` BillingAddressRest: Billing address for a payment transaction request.
      - `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**, wallet payloads, or **retail card-present** data from a card reader. 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.
        - RetailUnencryptedMagneticStripe: Card-present payment using raw magnetic stripe data from a card reader. Set `industry` to `retail` on the payment request.
          - `track_1` string, required: Raw magnetic stripe data.
          - `track_2` string, required: Raw magnetic stripe data.
          - `track_3` string: Raw magnetic stripe data.
        - RetailMagTekMagensaEncryptedSwipe: Card-present payment using encrypted magnetic stripe data from a MagTek Magensa reader. Set `industry` to `retail` on the payment request.
          - `magnesafe_track_1` string, required: Raw MagTek Magensa data.
          - `magnesafe_track_2` string, required: Raw MagTek Magensa data.
          - `magnesafe_magneprint` string: Raw MagTek Magensa data.
          - `magnesafe_ksn` string: Raw MagTek Magensa data.
          - `magnesafe_magneprint_status` string: Raw MagTek Magensa data.
        - RetailIdTechEncryptedSwipe: Card-present encrypted swipe data from an ID Tech M130 reader. Set `industry` to `retail` on the payment request.
          - `encrypted_track_1` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
          - `encrypted_track_3` string: Raw encrypted data.
          - `encrypted_ksn` string: Raw encrypted data.
        - RetailIdTechEncryptedKeyed: Card-present encrypted keyed entry data from an ID Tech M130 reader. Set `industry` to `retail` on the payment request.
          - `encrypted_data` string, required: Raw encrypted data.
        - RetailIngenicoChip: Card-present EMV chip payment from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'emv_icc', required: The type of transaction data to be processed.
          - `emv_auth_request_data` string, required: EMV data for the transaction as received from the EMV chip card SDK.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `verification_method` 'signature' | 'offline_pin' | 'offline_pin_signature' | 'none', required: Method used to verify the EMV transaction.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailIngenicoSwipe: Card-present encrypted swipe from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'swiped' | 'swiped_emv_fallback', required: The type of transaction data to be processed.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_1` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailIngenicoNfc: Card-present NFC payment from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'nfc_msd', required: The type of transaction data to be processed.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailIngenicoKeyed: Card-present encrypted keyed entry from an Ingenico Telium 2 reader. Set `industry` to `retail` on the payment request.
          - `entry_mode` 'keyed', required: The type of transaction data to be processed.
          - `emv_device` 'ingenico_rba', required: The EMV-capable card reader.
          - `encrypted_ksn` string, required: Raw encrypted data.
          - `encrypted_track_2` string, required: Raw encrypted data.
        - RetailMobileSdkEncryptedPayment: RSA-encrypted card data from the NMI Mobile SDK (iOS/Android). Use in place of raw card number, expiration, and CVV. Set `industry` to `retail` on the payment request when processing as a card-present transaction.
          - `encrypted_payment` string, required: Encrypted payment blob returned by the Mobile SDK.
        - 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](../docs/payment-component) or [Collect.js](https://secure.networkmerchants.com/merchants/resources/integration/integration_portal.php#cjs_methodology) (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: Set to `true` when submitting merchant-decrypted Apple Pay data.
          - `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: Set to `true` when submitting merchant-decrypted Google Pay data.
          - `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
      - `id` string: Shipping address ID (max 32 characters). Generated if omitted on create.
      - `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
    - `merchant_defined_fields` MerchantDefinedFields: Custom fields configured in the merchant control panel under Settings → Merchant Defined Fields (`field_1` through `field_20`).
      - `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
    - `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).
    - `start_date` string: The date the subscription's first charge occurs. Format: `YYYYMMDD` (optionally `YYYYMMDDHHMMSS`). Defaults to the next billing date derived from the plan schedule when omitted.
    - `plan_details` union, required
      - object
        - `plan_amount` number, required: The plan amount to be charged each billing cycle. Format: `x.xx`
        - `plan_payments` integer, required: The number of payments before the recurring plan is complete. Use '0' for until canceled
        - `id` string: The unique identifier for the plan. Required when creating a plan directly; optional when defining a custom plan inline via a subscription.
        - `plan_name` string: The display name of the plan
        - `month_frequency` integer, required: How often, in months, to charge the customer.
        - `day_of_month` integer, required: The day of the month that the customer will be charged. For months without 29, 30, or 31 days, the charge will be on the last day.
      - object
        - `plan_amount` number, required: The plan amount to be charged each billing cycle. Format: `x.xx`
        - `plan_payments` integer, required: The number of payments before the recurring plan is complete. Use '0' for until canceled
        - `id` string: The unique identifier for the plan. Required when creating a plan directly; optional when defining a custom plan inline via a subscription.
        - `plan_name` string: The display name of the plan
        - `day_frequency` integer, required: How often, in days, to charge the customer.
    - `customer_vault` CustomerVaultCharge, required: Charge or validate an existing customer vault record. Do not send `payment_details`.
      - `id` string, required: Existing customer vault ID (max 36 characters).
      - `billing_id` string: Billing profile ID to use. Defaults to the vault priority billing profile if omitted (max 32 characters).
      - `shipping_id` string: Shipping profile ID to use. Defaults to the vault priority shipping profile if omitted (max 32 characters).

## Response `200`

Success

- SubscriptionResponse: Subscription response matching SubscriptionRestSerializer structure
  - `object` 'subscription', required: Resource type identifier
  - `id` string, required: Subscription ID
  - `created_date` string, date-time: Date the subscription was created, in UTC ISO 8601 format
  - `start_date` string, date-time, nullable: Subscription start date in UTC ISO 8601 format
  - `next_billing_date` string, date-time, nullable: Next billing date in UTC ISO 8601 format
  - `amount` string: Subscription amount
  - `customer_vault_id` string: Customer vault ID associated with the subscription
  - `delayed_condition` string: Delayed condition
  - `paused_subscription` 0 | 1: Whether the subscription is paused (0 = active, 1 = paused)
  - `plan` object, nullable: Associated plan
    - `id` string: Plan ID
    - `plan_name` string: Plan name
    - `plan_amount` string: Plan amount
    - `plan_payments` string: Number of payments (0 = until canceled)
    - `day_frequency` string: Day frequency (0 if not applicable)
    - `month_frequency` string: Month frequency (0 if not applicable)
    - `day_of_month` string: Day of month (empty if not applicable)

## Other responses

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

---

[API](https://skmtc.dev/nmi/apis/payments-api.md) - [All operations](https://skmtc.dev/nmi/apis/payments-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nmi/apis/payments-api/revisions/c03727f27e27?raw)
