# Level 2 / Level 3 Processing

Card payment processing has three levels: Level 1, Level 2, and Level 3. Level 2 and Level 3 processing allows eligible business-to-business (B2B) merchants to qualify for lower interchange rates by submitting additional purchase data alongside Visa and Mastercard transactions.

Level 2 / Level 3 Processing is available for:

- [Transfers](#create-a-sale-with-level-2-processing)
- [Authorizations](#create-an-authorization-with-level-2-processing)
- [Payment Links](/low-code-no-code/payment-links/quickstart-dashboard)


## Availability

- Available for merchants located in the **United States** processing **USD** transactions.
- Only available in **Live** environments. Not available in Sandbox.


## Eligibility

### Card networks that support Level 2 / Level 3 Processing

- **Mastercard**: Supports Level 2 and Level 3 processing.
- **Visa**: Supports Level 3 processing only.


| Network | Level 2 | Level 3 |
|  --- | --- | --- |
| Visa | ⚠️ Deprecated April 17, 2026 | Yes |
| Mastercard | Yes | Yes |


### Eligible Merchant types

Only business-to-business (B2B) merchants and government entities qualify for lower interchange rates. [The merchant must be enabled](#enable-level-2--level-3-processing) for Level 2 / Level 3 processing.

Corporate and purchase credit cards are eligible for Level 2 and Level 3 processing. Consumer cards are only eligible for Level 1 processing.

Ineligible Merchants
Some businesses are not eligible for Level 2 and Level 3 transaction processing.
For details, see our list of [ineligible Merchant Category Codes (MCC)](#ineligible-merchants).

### Data Quality

An eligible Merchant Category Code (MCC) alone does not guarantee interchange qualification. Card networks also evaluate the accuracy of submitted data. See Finix's [Data Quality](#data-quality-best-practices) best practices for Level 2 / Level 3 processing.

### Tax Exemption

Tax-exempt transactions are not eligible for Level 2. Tax-exempt transactions are eligible for Level 3 when you pass `tax_exempt: true` and omit `sales_tax`.

## Minimum Field Requirements

The table below summarizes the minimum fields required to qualify for Level 2 and Level 3 interchange rates. The card network and cardholder issuing bank ultimately determine whether a transaction qualifies.

| L2 or L3 Rates Eligibility | Level 2 | Level 3 |
|  --- | --- | --- |
| **Minimum Field Requirements** | - `customer_reference_number`
- `sales_tax`

 | - Everything in Level 2:
  - `shipping_amount`
  - `customs_duty_amount`
  - `discount_amount`
- Plus `item_data` for each line item:
  - `item_description`
  - `cost_per_unit`
  - `quantity`
  - `commodity_code`
  - `merchant_product_code`
  - `unit_of_measure`
  - `amount_excluding_sales_tax`
  - `amount_including_sales_tax`
  - `item_discount_amount`

 |


### Level 2 fields

| Field | API Field | Required | Description |
|  --- | --- | --- | --- |
| **Customer Reference Number** | `customer_reference_number` | Required | A unique reference ID for the order such as a purchase order (PO) number or invoice number. A purchase order number (PO number) is a unique code assigned to a specific order of goods or services. The buyer creates this number when they make a purchase order. It helps both the buyer and the seller track the order, match invoices, and keep accurate financial records. (max `17` characters) |
| **Sales Tax** | `sales_tax` | Required | The total tax amount for the transaction in cents. Must be greater than 0.1% of the transaction amount. For non-taxable transactions, set to `0` and set `tax_exempt` to `true`. |


### Level 3 fields

Everything in Level 2, plus:

| Field | API Field | Required | Description |
|  --- | --- | --- | --- |
| **Shipping Amount** | `shipping_amount` | Required | The costs related to shipping and handling in cents. Must be at least `0`. |
| **Customs Duty Amount** | `customs_duty_amount` | Required | The costs related to import or export duties in cents. Must be at least `0`. |
| **Discount Amount** | `discount_amount` | Required | The order-level discount amount in cents. Must be at least `0`. |
| **Tax Exempt** | `tax_exempt` | Optional | Set to `true` for tax-exempt purchases. |


Plus `item_data` fields for each line item:

| Field | API Field | Required | Description |
|  --- | --- | --- | --- |
| **Item Description** | `item_description` | Required | A short, human-readable description of the line item (max `25` characters). |
| **Cost per Item** | `cost_per_unit` | Required | The price per unit of the item purchased, in cents. |
| **Item Discount** | `item_discount_amount` | Required | The discount amount in cents applied to this individual line item. For an order-level discount, use `discount_amount`. |
| **Quantity** | `quantity` | Required | The number of units purchased. Must be greater than `0`. |
| **Unit of Measure** | `unit_of_measure` | Required | The unit of measure for the item (max `3` characters). |
| **Commodity Code** | `commodity_code` | Required | A numeric code identifying the product or service (`3`, `5`, `7`, or `11` digits; max `12` characters). |
| **Merchant Product Code** | `merchant_product_code` | Required | Your product/SKU code for the line item (max `12` characters). |
| **Amount Excluding Sales Tax** | `amount_excluding_sales_tax` | Required | Total cost of the line item excluding tax in cents (must be greater than `0`). |
| **Amount Including Sales Tax** | `amount_including_sales_tax` | Required | Total cost of the line item including tax in cents (must be greater than `0`). |


## Enable Level 2 / Level 3 Processing

Before a Merchant can process Level 2 or Level 3 transactions, send a PUT /merchants/{merchant_id} request to enable Level 2 / Level 3 processing.

### Request

Example
API Definition
### Response

A successful request returns a `200 OK` status code and includes a Merchant resource with `level_two_level_three_data_enabled: true`.

Example
Merchant - Level 2/3 Processing Enabled

```json Merchant - Level 2/3 Processing Enabled
{
  "id": "MUiV7ntxfY4eyJxp6E7cZvym",
  "created_at": "2026-04-03T22:05:19.34Z",
  "updated_at": "2026-08-13T15:26:23.43Z",
  "application": "APc9vhYcPsRuTSpKD9KpMtPe",
  "card_cvv_required": false,
  "card_expiration_date_required": true,
  "card_network_details": null,
  "convenience_charges_enabled": true,
  "country": "USA",
  "creating_transfer_from_report_enabled": false,
  "currencies": [
    "USD"
  ],
  "default_partial_authorization_enabled": false,
  "disbursements_ach_pull_enabled": true,
  "disbursements_ach_push_enabled": true,
  "disbursements_card_pull_enabled": true,
  "disbursements_card_push_enabled": true,
  "disbursements_same_day_ach_pull_enabled": false,
  "disbursements_same_day_ach_push_enabled": false,
  "fee_ready_to_settle_upon": "PROCESSOR_WINDOW",
  "first_approved_at": "2026-04-03T22:06:04.00Z",
  "gateway": null,
  "gross_settlement_enabled": false,
  "identity": "IDa4fdEuy57uLT95prqoBDxx",
  "instant_payouts_card_push_enabled": false,
  "is_terminated": false,
  "level_two_level_three_data_enabled": true, // [!code highlight]
  "loan_repayment": null,
  "mcc": "5992",
  "merchant_name": "Finix Flowers",
  "merchant_profile": "MP6pzw61XykboCKVbMhCgYuk",
  "microdeposit_verification_required_application_owner": false,
  "microdeposit_verification_required_buyer": false,
  "microdeposit_verification_required_recipient": false,
  "microdeposit_verification_required_seller": false,
  "microdeposit_verification_required_sender": false,
  "mid": "FNXwXimxKRxzJ34EX4bAcv6q3",
  "onboarding_state": "APPROVED",
  "pending_refunds_strategy": "NONE",
  "processing_enabled": true,
  "processor": "DUMMY_V1",
  "processor_details": {
    "mid": "FNXwXimxKRxzJ34EX4bAcv6q3",
    "api_key": "secretValue"
  },
  "ready_to_settle_upon": "PROCESSOR_WINDOW",
  "ready_to_settle_upon_delay_alignment": "NONE",
  "refunds_disabled": false,
  "rent_surcharges_enabled": false,
  "settlement_enabled": true,
  "settlement_funding_identifier": "UNSET",
  "settlement_queue_mode": "MANUAL",
  "surcharges_enabled": false,
  "tags": {
    "key_2": "value_2"
  },
  "termination_details": null,
  "unreferenced_refund_card_present_enabled": false,
  "unreferenced_refund_manual_entry_enabled": false,
  "verification": "VIeDkhAdS91Cw4Hu324YR6Te",
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/merchants/MUiV7ntxfY4eyJxp6E7cZvym"
    },
    "identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDa4fdEuy57uLT95prqoBDxx"
    },
    "verifications": {
      "href": "https://finix.sandbox-payments-api.com/merchants/MUiV7ntxfY4eyJxp6E7cZvym/verifications"
    },
    "merchant_profile": {
      "href": "https://finix.sandbox-payments-api.com/merchant_profiles/MP6pzw61XykboCKVbMhCgYuk"
    },
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
    },
    "verification": {
      "href": "https://finix.sandbox-payments-api.com/verifications/VIeDkhAdS91Cw4Hu324YR6Te"
    }
  }
}
```

API Definition
Once `level_two_level_three_data_enabled` is updated to `true`, the Merchant resource can process [Level 2 and Level 3 Transfers and Authorizations](#create-a-sale-with-level-2-processing).

- There are no changes in the post-payment experience (reversals, refunds, settlements, etc.) when processing Level 2 or Level 3 transactions.
- The [fields noted as required](#minimum-field-requirements) are the minimum needed for Level 2 or Level 3 interchange rates. There's no additional benefit in passing every available field for a given level.
- The sales tax amount must be greater than 0.1% of the transaction amount.
- For tax-exempt transactions, pass `tax_exempt` as `true` and omit `sales_tax`.


## Create a Sale with Level 2 processing

Send a POST /transfers request and include the required fields for Level 2 processing.

### Level 2 Fields

Include the following fields within the `additional_purchase_data` object:

| Field | API Field | Type | Description |
|  --- | --- | --- | --- |
| **Customer Reference Number** | `customer_reference_number` | *string*, **required** | A unique reference ID for the order such as a purchase order (PO) number or invoice number. A purchase order number (PO number) is a unique code assigned to a specific order of goods or services. The buyer creates this number when they make a purchase order. It helps both the buyer and the seller track the order, match invoices, and keep accurate financial records. (max `17` characters) |
| **Sales Tax** | `sales_tax` | *integer*, **required** | Total aggregate tax amount in cents for the entire purchase. Field is automatically calculated if you pass in the itemized tax amounts. For non-taxable transactions either set `sales_tax` to `0` or omit from payload and also set `tax_exempt` to `true`.` |


### Request


```shell
curl -i -X POST \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  https://finix.sandbox-payments-api.com/transfers \
  -H 'Content-Type: application/json' \
  -H 'Finix-Version: 2022-02-01' \
  -d '{
    "additional_purchase_data": {
      "customer_reference_number": "321xyz",
      "sales_tax": 200
    },
    "amount": 1000,
    "currency": "USD",
    "merchant": "MUmfEGv5bMpSJ9k5TFRUjkmm",
    "source": "PI6iQcTtJNCS8GZAVKYi5Ueb"
  }'
```

### Response

A successful request returns a `201 Created` status code and includes a Transfer resource with Level 2 processing details:

Example
Transfer - Level 2 Processing

```json Transfer - Level 2 Processing
{
  "id": "TRbWN8aYQmdj34jg2xSbR4Ad",
  "created_at": "2026-08-13T15:26:25.15Z",
  "updated_at": "2026-08-13T15:26:25.15Z",
  "additional_buyer_charges": null,
  "additional_healthcare_data": null,
  "additional_lodging_data": null,
  "additional_motor_vehicle_rental_data": null,
  "additional_purchase_data": {
    "customer_reference_number": "321xyz", // [!code highlight]
    "customs_duty_amount": null,
    "destination_country_code": null,
    "destination_postal_code": null,
    "discount_amount": null,
    "invoice_reference_number": null,
    "order_date": null,
    "sales_tax": 200, // [!code highlight]
    "sales_tax_finix_generated": null,
    "ship_from_postal_code": null,
    "shipping_amount": null,
    "tax_exempt": false,
    "item_data": []
  },
  "address_verification": "POSTAL_CODE_AND_STREET_MATCH",
  "amount": 1000,
  "amount_requested": 1000,
  "application": "APc9vhYcPsRuTSpKD9KpMtPe",
  "created_via": "UNKNOWN",
  "currency": "USD",
  "destination": null,
  "externally_funded": "UNKNOWN",
  "failure_code": null,
  "failure_message": null,
  "fee": 0,
  "fee_profile": "FPuizPqrhzYLbmJm88u7aqfj",
  "idempotency_id": null,
  "ip_address_details": null,
  "merchant": "MUmfEGv5bMpSJ9k5TFRUjkmm",
  "merchant_identity": "ID6UfSm1d4WPiWgLYmbyeo3H",
  "messages": [],
  "network_details": {
    "brand": "MASTERCARD",
    "authorization_code": "198817",
    "acquirer_reference_number": null
  },
  "operation_key": "CARD_NOT_PRESENT_SALE",
  "parent_transfer": null,
  "parent_transfer_trace_id": null,
  "raw": null,
  "ready_to_settle_at": "2026-08-14T15:26:25.15Z",
  "receipt_last_printed_at": null,
  "security_code_verification": "MATCHED",
  "source": "PI6iQcTtJNCS8GZAVKYi5Ueb",
  "split_transfers": [],
  "state": "SUCCEEDED",
  "statement_descriptor": "FLX*FINIX FLOWERS",
  "subtype": "API",
  "supplemental_fee": null,
  "tags": {},
  "third_party_details": null,
  "tip_amount": null,
  "trace_id": "e6f71f01-0c80-4e1f-b208-b0953a52d931",
  "type": "DEBIT",
  "_links": {
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
    },
    "self": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRbWN8aYQmdj34jg2xSbR4Ad"
    },
    "merchant_identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/ID6UfSm1d4WPiWgLYmbyeo3H"
    },
    "payment_instruments": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRbWN8aYQmdj34jg2xSbR4Ad/payment_instruments"
    },
    "reversals": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRbWN8aYQmdj34jg2xSbR4Ad/reversals"
    },
    "fees": {
      "href": "https://finix.sandbox-payments-api.com/fees?linked_to=TRbWN8aYQmdj34jg2xSbR4Ad"
    },
    "disputes": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRbWN8aYQmdj34jg2xSbR4Ad/disputes"
    },
    "source": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6iQcTtJNCS8GZAVKYi5Ueb"
    },
    "fee_profile": {
      "href": "https://finix.sandbox-payments-api.com/fee_profiles/FPuizPqrhzYLbmJm88u7aqfj"
    }
  }
}
```

API Definition
## Create a Sale with Level 3 processing

Send a POST /transfers request and include the required fields for Level 3 processing.

### Level 3 Fields

Include the following `additional_purchase_data` fields:

| Field | API Field | Type | Description |
|  --- | --- | --- | --- |
| **Customer Reference Number** | `customer_reference_number` | *string*, **required** | A unique reference ID for the order such as a purchase order (PO) number or invoice number. A purchase order number (PO number) is a unique code assigned to a specific order of goods or services. The buyer creates this number when they make a purchase order. It helps both the buyer and the seller track the order, match invoices, and keep accurate financial records. (max `17` characters) |
| **Customs Duty Amount** | `customs_duty_amount` | *integer*, **required** | The costs related to import or export duties in cents. This field must have a value of at least `0`. |
| **Discount Amount** | `discount_amount` | *integer*, **required** | The amount in cents of the discount for the order. This field must have a value of at least `0`. |
| **Shipping Amount** | `shipping_amount` | *integer*, **required** | The costs related to shipping and handling in cents. This field must have a value of at least `0`. |
| **Tax Exempt** | `tax_exempt` | *boolean*, **optional** | For tax exempt purchases set to `true`. |


Include the following `item_data` fields for each line item:

| Field | API Field | Type | Description |
|  --- | --- | --- | --- |
| **Amount Excluding Sales Tax** | `amount_excluding_sales_tax` | *integer*, **required** | Total cost in cents of the line item excluding tax (must be greater than `0`). |
| **Amount Including Sales Tax** | `amount_including_sales_tax` | *integer*, **required** | Total cost in cents of the line item including tax (must be greater than `0`). |
| **Commodity Code** | `commodity_code` | *string*, **required** | A commodity code is a numeric code representing a particular product or service as defined by the National Institute of Governmental Purchasing. The code can be `3`, `5`, `7`, or `11` digits in length. The longer the code the more granular the description of the product/service. (max 12 characters) |
| **Cost per Item** | `cost_per_unit` | *integer*, **required** | The price in cents of one unit of the item purchased. |
| **Item Description** | `item_description` | *string*, **required** | A short, human-readable description of the line item (max `25` characters). |
| **Item Discount** | `item_discount_amount` | *integer*, **required** | The discount amount in cents applied to this individual line item. For an order-level discount, use `discount_amount`. |
| **Merchant Product Code** | `merchant_product_code` | *string*, **required** | Merchant defined product code (max `12` characters). |
| **Quantity** | `quantity` | *integer*, **required** | The number of items purchased. Must be greater than `0`. |
| **Unit of Measure** | `unit_of_measure` | *string*, **required** | The unit of measure of the purchased item (max `3` characters). |


Example
### Request


```shell
curl -i -X POST \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  https://finix.sandbox-payments-api.com/transfers \
  -H 'Content-Type: application/json' \
  -H 'Finix-Version: 2022-02-01' \
  -d '{
    "additional_purchase_data": {
      "item_data": [
        {
          "amount_excluding_sales_tax": 400,
          "amount_including_sales_tax": 500,
          "commodity_code": "175-62-20",
          "cost_per_unit": 500,
          "item_description": "printing paper",
          "item_discount_amount": 100,
          "merchant_product_code": "1149611",
          "quantity": 1,
          "unit_of_measure": "BX"
        },
        {
          "amount_excluding_sales_tax": 400,
          "amount_including_sales_tax": 500,
          "commodity_code": "207-72-54",
          "cost_per_unit": 500,
          "item_description": "printing ink",
          "item_discount_amount": 0,
          "merchant_product_code": "2149612",
          "quantity": 1,
          "unit_of_measure": "CTN"
        }
      ],
      "customer_reference_number": "321xyz",
      "customs_duty_amount": 10,
      "discount_amount": 100,
      "shipping_amount": 100
    },
    "amount": 1000,
    "currency": "USD",
    "merchant": "MUmfEGv5bMpSJ9k5TFRUjkmm",
    "source": "PI6iQcTtJNCS8GZAVKYi5Ueb",
    "tags": {
      "test": "Sale"
    }
  }'
```

API Definition
### Response

A successful request returns a `201 Created` status code and includes a Transfer resource with Level 3 processing details:

Example
Transfer - Level 3 Processing

```json Transfer - Level 3 Processing
{
  "id": "TRc6iwhRwMtAK9tj3J8YCcUp",
  "created_at": "2026-08-13T15:26:27.14Z",
  "updated_at": "2026-08-13T15:26:27.14Z",
  "additional_buyer_charges": null,
  "additional_healthcare_data": null,
  "additional_lodging_data": null,
  "additional_motor_vehicle_rental_data": null,
  "additional_purchase_data": { // [!code highlight]
    "customer_reference_number": "321xyz", // [!code highlight]
    "customs_duty_amount": 10, // [!code highlight]
    "destination_country_code": null, // [!code highlight]
    "destination_postal_code": null, // [!code highlight]
    "discount_amount": 100, // [!code highlight]
    "invoice_reference_number": null, // [!code highlight]
    "order_date": null, // [!code highlight]
    "sales_tax": null, // [!code highlight]
    "sales_tax_finix_generated": 200, // [!code highlight]
    "ship_from_postal_code": null, // [!code highlight]
    "shipping_amount": 100, // [!code highlight]
    "tax_exempt": false, // [!code highlight]
    "item_data": [ // [!code highlight]
      { // [!code highlight]
        "cost_per_unit": 500, // [!code highlight]
        "item_description": "printing paper", // [!code highlight]
        "item_discount_amount": 100, // [!code highlight]
        "merchant_product_code": "1149611", // [!code highlight]
        "quantity": 1, // [!code highlight]
        "amount_excluding_sales_tax": 400, // [!code highlight]
        "amount_including_sales_tax": 500, // [!code highlight]
        "unit_of_measure": "BX", // [!code highlight]
        "commodity_code": "175-62-20", // [!code highlight]
        "sales_tax_amount": 100, // [!code highlight]
        "sales_tax_rate": 0.25 // [!code highlight]
      }, // [!code highlight]
      { // [!code highlight]
        "cost_per_unit": 500, // [!code highlight]
        "item_description": "printing ink", // [!code highlight]
        "item_discount_amount": 0, // [!code highlight]
        "merchant_product_code": "2149612", // [!code highlight]
        "quantity": 1, // [!code highlight]
        "amount_excluding_sales_tax": 400, // [!code highlight]
        "amount_including_sales_tax": 500, // [!code highlight]
        "unit_of_measure": "CTN", // [!code highlight]
        "commodity_code": "207-72-54", // [!code highlight]
        "sales_tax_amount": 100, // [!code highlight]
        "sales_tax_rate": 0.25 // [!code highlight]
      } // [!code highlight]
    ] // [!code highlight]
  }, // [!code highlight]
  "address_verification": "POSTAL_CODE_AND_STREET_MATCH",
  "amount": 1000,
  "amount_requested": 1000,
  "application": "APc9vhYcPsRuTSpKD9KpMtPe",
  "created_via": "UNKNOWN",
  "currency": "USD",
  "destination": null,
  "externally_funded": "UNKNOWN",
  "failure_code": null,
  "failure_message": null,
  "fee": 0,
  "fee_profile": "FPuizPqrhzYLbmJm88u7aqfj",
  "idempotency_id": null,
  "ip_address_details": null,
  "merchant": "MUmfEGv5bMpSJ9k5TFRUjkmm",
  "merchant_identity": "ID6UfSm1d4WPiWgLYmbyeo3H",
  "messages": [],
  "network_details": {
    "brand": "VISA",
    "authorization_code": "964860",
    "acquirer_reference_number": null
  },
  "operation_key": "CARD_NOT_PRESENT_SALE",
  "parent_transfer": null,
  "parent_transfer_trace_id": null,
  "raw": null,
  "ready_to_settle_at": "2026-08-14T15:26:27.14Z",
  "receipt_last_printed_at": null,
  "security_code_verification": "MATCHED",
  "source": "PI6iQcTtJNCS8GZAVKYi5Ueb",
  "split_transfers": [],
  "state": "SUCCEEDED",
  "statement_descriptor": "FLX*FINIX FLOWERS",
  "subtype": "API",
  "supplemental_fee": null,
  "tags": {},
  "third_party_details": null,
  "tip_amount": null,
  "trace_id": "5ff00f2b-5759-4136-987c-95cb3faecc46",
  "type": "DEBIT",
  "_links": {
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
    },
    "self": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRc6iwhRwMtAK9tj3J8YCcUp"
    },
    "merchant_identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/ID6UfSm1d4WPiWgLYmbyeo3H"
    },
    "payment_instruments": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRc6iwhRwMtAK9tj3J8YCcUp/payment_instruments"
    },
    "reversals": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRc6iwhRwMtAK9tj3J8YCcUp/reversals"
    },
    "fees": {
      "href": "https://finix.sandbox-payments-api.com/fees?linked_to=TRc6iwhRwMtAK9tj3J8YCcUp"
    },
    "disputes": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRc6iwhRwMtAK9tj3J8YCcUp/disputes"
    },
    "source": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6iQcTtJNCS8GZAVKYi5Ueb"
    },
    "fee_profile": {
      "href": "https://finix.sandbox-payments-api.com/fee_profiles/FPuizPqrhzYLbmJm88u7aqfj"
    }
  }
}
```

API Definition
## Create an Authorization with Level 2 processing

Send a POST /authorizations request and include the required fields for Level 2 processing.

### Level 2 Fields

Include the following `additional_purchase_data` fields:

| Field | API Field | Type | Description |
|  --- | --- | --- | --- |
| **Customer Reference Number** | `customer_reference_number` | *string*, **required** | A unique reference ID for the order such as a purchase order (PO) number or invoice number. A purchase order number (PO number) is a unique code assigned to a specific order of goods or services. The buyer creates this number when they make a purchase order. It helps both the buyer and the seller track the order, match invoices, and keep accurate financial records. (max `17` characters) |
| **Sales Tax** | `sales_tax` | *integer*, **required** | Total aggregate tax amount in cents for the entire purchase. Field is automatically calculated if you pass in the itemized tax amounts. For non-taxable transactions either set `sales_tax` to `0` or omit from payload and also set `tax_exempt` to `true`.` |


### Request


```shell
curl https://finix.sandbox-payments-api.com/authorizations \
  -H "Content-Type: application/json" \
  -H 'Finix-Version: 2022-02-01' \
  -u  USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
  -d '{
    "additional_purchase_data": {
      "customer_reference_number": "321xyz",
      "sales_tax": 200
    },
    "amount": 1000,
    "currency": "USD",
    "merchant": "MUeDVrf2ahuKc9Eg5TeZugvs",
    "source": "PIe2YvpcjvoVJ6PzoRPBK137",
    "tags": {
      "order_number": "21DFASJSAKAS"
    }
  }'
```

### Response

A successful request returns a `201 Created` status code and includes an Authorization resource with Level 2 processing details:

Example
Authorization - Level 2 Processing

```json Authorization - Level 2 Processing
{
  "id": "AUqMc7shKWzrTE8G1nGFzVgc",
  "created_at": "2026-08-13T15:26:29.36Z",
  "updated_at": "2026-08-13T15:26:29.36Z",
  "3ds_redirect_url": null,
  "additional_buyer_charges": null,
  "additional_healthcare_data": null,
  "additional_lodging_data": null,
  "additional_motor_vehicle_rental_data": null,
  "additional_purchase_data": {
    "customer_reference_number": "321xyz", // [!code highlight]
    "customs_duty_amount": null,
    "destination_country_code": null,
    "destination_postal_code": null,
    "discount_amount": null,
    "invoice_reference_number": null,
    "order_date": null,
    "sales_tax": 200, // [!code highlight]
    "sales_tax_finix_generated": null,
    "ship_from_postal_code": null,
    "shipping_amount": null,
    "tax_exempt": false,
    "item_data": []
  },
  "address_verification": "POSTAL_CODE_AND_STREET_MATCH",
  "amount": 1000,
  "amount_requested": 1000,
  "application": "APc9vhYcPsRuTSpKD9KpMtPe",
  "created_via": "UNKNOWN",
  "currency": "USD",
  "expires_at": "2026-08-23T15:26:29.36Z",
  "failure_code": null,
  "failure_message": null,
  "idempotency_id": null,
  "ip_address_details": null,
  "is_void": false,
  "merchant": "MU7noQ1wdgdAeAfymw2rfBMq",
  "merchant_identity": "IDjvxGeXBLKH1V9YnWm1CS4n",
  "messages": [],
  "network_details": {
    "brand": "MASTERCARD",
    "authorization_code": "394821"
  },
  "raw": null,
  "receipt_last_printed_at": null,
  "security_code_verification": "MATCHED",
  "source": "PIkxmtueemLD6dN9ZoWGHT44",
  "state": "SUCCEEDED",
  "supplemental_fee": null,
  "tags": {},
  "trace_id": "0864e4f3-0141-4f44-9253-271f5785231d",
  "transfer": null,
  "void_state": "UNATTEMPTED",
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/authorizations/AUqMc7shKWzrTE8G1nGFzVgc"
    },
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
    },
    "merchant_identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDjvxGeXBLKH1V9YnWm1CS4n"
    }
  }
}
```

API Definition
## Create an Authorization with Level 3 processing

Send a POST /authorizations request and include the required fields for Level 3 processing.

### Level 3 Fields

Include the following `additional_purchase_data` fields:

| Field | API Field | Type | Description |
|  --- | --- | --- | --- |
| **Customer Reference Number** | `customer_reference_number` | *string*, **required** | A unique reference ID for the order such as a purchase order (PO) number or invoice number. A purchase order number (PO number) is a unique code assigned to a specific order of goods or services. The buyer creates this number when they make a purchase order. It helps both the buyer and the seller track the order, match invoices, and keep accurate financial records. (max `17` characters) |
| **Customs Duty Amount** | `customs_duty_amount` | *integer*, **required** | The costs related to import or export duties in cents. This field must have a value of at least `0`. |
| **Discount Amount** | `discount_amount` | *integer*, **required** | The amount in cents of the discount for the order. This field must have a value of at least `0`. |
| **Shipping Amount** | `shipping_amount` | *integer*, **required** | The costs related to shipping and handling in cents. This field must have a value of at least `0`. |
| **Tax Exempt** | `tax_exempt` | *boolean*, **optional** | For tax exempt purchases set to `true`. |


Include the following `item_data` fields for each line item:

| Field | API Field | Type | Description |
|  --- | --- | --- | --- |
| **Amount Excluding Sales Tax** | `amount_excluding_sales_tax` | *integer*, **required** | Total cost in cents of the line item excluding tax (must be greater than `0`). |
| **Amount Including Sales Tax** | `amount_including_sales_tax` | *integer*, **required** | Total cost in cents of the line item including tax (must be greater than `0`). |
| **Commodity Code** | `commodity_code` | *string*, **required** | A commodity code is a numeric code representing a particular product or service as defined by the National Institute of Governmental Purchasing. The code can be `3`, `5`, `7`, or `11` digits in length. The longer the code the more granular the description of the product/service. (max 12 characters) |
| **Cost per Item** | `cost_per_unit` | *integer*, **required** | The price in cents of one unit of the item purchased. |
| **Item Description** | `item_description` | *string*, **required** | A short, human-readable description of the line item (max `25` characters). |
| **Item Discount** | `item_discount_amount` | *integer*, **required** | The discount amount in cents applied to this individual line item. For an order-level discount, use `discount_amount`. |
| **Merchant Product Code** | `merchant_product_code` | *string*, **required** | Merchant defined product code (max `12` characters). |
| **Quantity** | `quantity` | *integer*, **required** | The number of items purchased. Must be greater than `0`. |
| **Unit of Measure** | `unit_of_measure` | *string*, **required** | The unit of measure of the purchased item (max `3` characters). |


### Request


```shell
curl https://finix.sandbox-payments-api.com/authorizations \
  -H "Content-Type: application/json" \
  -H 'Finix-Version: 2022-02-01' \
  -u  USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
  -d '{
    "additional_purchase_data": {
      "item_data": [
        {
          "amount_excluding_sales_tax": 400,
          "amount_including_sales_tax": 500,
          "commodity_code": "175-62-20",
          "cost_per_unit": 500,
          "item_description": "printing paper",
          "item_discount_amount": 100,
          "merchant_product_code": "1149611",
          "quantity": 1,
          "unit_of_measure": "BX"
        },
        {
          "amount_excluding_sales_tax": 400,
          "amount_including_sales_tax": 500,
          "commodity_code": "207-72-54",
          "cost_per_unit": 500,
          "item_description": "printing ink",
          "item_discount_amount": 0,
          "merchant_product_code": "2149612",
          "quantity": 1,
          "unit_of_measure": "CTN"
        }
      ],
      "customer_reference_number": "321xyz",
      "customs_duty_amount": 10,
      "discount_amount": 100,
      "shipping_amount": 100
    },
    "amount": 1000,
    "currency": "USD",
    "merchant": "MUeDVrf2ahuKc9Eg5TeZugvs",
    "source": "PIe2YvpcjvoVJ6PzoRPBK137",
    "tags": {
      "test": "sale"
    }
  }'
```

### Response

A successful request returns a `201 Created` status code and includes an Authorization resource with Level 3 processing details:

Example
Authorization - Level 3 Processing

```json Authorization - Level 3 Processing
{
  "id": "AUjVU7Xkc2F84SWk8hDNShua",
  "created_at": "2026-08-13T15:26:31.09Z",
  "updated_at": "2026-08-13T15:26:31.09Z",
  "3ds_redirect_url": null,
  "additional_buyer_charges": null,
  "additional_healthcare_data": null,
  "additional_lodging_data": null,
  "additional_motor_vehicle_rental_data": null,
  "additional_purchase_data": { // [!code highlight]
    "customer_reference_number": "321xyz", // [!code highlight]
    "customs_duty_amount": 10, // [!code highlight]
    "destination_country_code": null, // [!code highlight]
    "destination_postal_code": null, // [!code highlight]
    "discount_amount": 100, // [!code highlight]
    "invoice_reference_number": null, // [!code highlight]
    "order_date": null, // [!code highlight]
    "sales_tax": null, // [!code highlight]
    "sales_tax_finix_generated": 200, // [!code highlight]
    "ship_from_postal_code": null, // [!code highlight]
    "shipping_amount": 100, // [!code highlight]
    "tax_exempt": false, // [!code highlight]
    "item_data": [ // [!code highlight]
      { // [!code highlight]
        "cost_per_unit": 500, // [!code highlight]
        "item_description": "printing paper", // [!code highlight]
        "item_discount_amount": 100, // [!code highlight]
        "merchant_product_code": "1149611", // [!code highlight]
        "quantity": 1, // [!code highlight]
        "amount_excluding_sales_tax": 400, // [!code highlight]
        "amount_including_sales_tax": 500, // [!code highlight]
        "unit_of_measure": "BX", // [!code highlight]
        "commodity_code": "175-62-20", // [!code highlight]
        "sales_tax_amount": 100, // [!code highlight]
        "sales_tax_rate": 0.25 // [!code highlight]
      }, // [!code highlight]
      { // [!code highlight]
        "cost_per_unit": 500, // [!code highlight]
        "item_description": "printing ink", // [!code highlight]
        "item_discount_amount": 0, // [!code highlight]
        "merchant_product_code": "2149612", // [!code highlight]
        "quantity": 1, // [!code highlight]
        "amount_excluding_sales_tax": 400, // [!code highlight]
        "amount_including_sales_tax": 500, // [!code highlight]
        "unit_of_measure": "CTN", // [!code highlight]
        "commodity_code": "207-72-54", // [!code highlight]
        "sales_tax_amount": 100, // [!code highlight]
        "sales_tax_rate": 0.25 // [!code highlight]
      } // [!code highlight]
    ] // [!code highlight]
  }, // [!code highlight]
  "address_verification": "POSTAL_CODE_AND_STREET_MATCH",
  "amount": 1000,
  "amount_requested": 1000,
  "application": "APc9vhYcPsRuTSpKD9KpMtPe",
  "created_via": "UNKNOWN",
  "currency": "USD",
  "expires_at": "2026-08-23T15:26:31.09Z",
  "failure_code": null,
  "failure_message": null,
  "idempotency_id": null,
  "ip_address_details": null,
  "is_void": false,
  "merchant": "MU7noQ1wdgdAeAfymw2rfBMq",
  "merchant_identity": "IDjvxGeXBLKH1V9YnWm1CS4n",
  "messages": [],
  "network_details": {
    "brand": "VISA",
    "authorization_code": "112879"
  },
  "raw": null,
  "receipt_last_printed_at": null,
  "security_code_verification": "MATCHED",
  "source": "PIkxmtueemLD6dN9ZoWGHT44",
  "state": "SUCCEEDED",
  "supplemental_fee": null,
  "tags": {},
  "trace_id": "989c6b37-04b5-4fea-b584-dda116657c02",
  "transfer": null,
  "void_state": "UNATTEMPTED",
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/authorizations/AUjVU7Xkc2F84SWk8hDNShua"
    },
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
    },
    "merchant_identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDjvxGeXBLKH1V9YnWm1CS4n"
    }
  }
}
```

API Definition
## Capture an Authorization with Level 2 / Level 3 processing

Finix will automatically include the Level 2 / Level 3 data with the [capture](/api/authorizations/captureauthorization) request.

## Ineligible Merchants

Specific businesses are excluded from processing Level 2 and Level 3 transactions.

If a merchant has one of the following Merchant Category Codes (MCC), they are not eligible to process Level 2 / Level 3 transactions:

| MCC Code | Merchant Description |
|  --- | --- |
| **3000-3299, 4511** | Airlines/Passenger Transport |
| **3351-3500, 7512** | Car Rentals/Auto Rental |
| **4411** | Cruise Lines |
| **5962, 5966, 5967** | High Risk Direct Marketing |
| **3501-4010, 7011** | Hotels/Lodging |
| **4112** | Passenger Railways |
| **5812, 5814** | Restaurants |
| **4722** | Travel Agents |
| **7513** | Truck and Utility Trailer Rentals |


## Data Quality Best Practices

The Level 2 / Level 3 processing data you submit should be accurate and of high quality. The card network's validation technology will identify generic descriptions, placeholder data, and artificially generated content. The data must be real, accurate, and descriptive of the actual products or services being sold.

The examples below are meant to help point you in the right direction, but they are not exhaustive. Ultimately, the card network decides whether the data a merchant submits qualifies.

| Finix Line Item Field | Card Network Recommendation | Avoid |
|  --- | --- | --- |
| `item_description` | Must provide meaningful information about purchased items/services. | Do not provide merchant name, single characters, or generic descriptions. |
| `merchant_product_code` | Typically the SKU or identifier by which the merchant tracks and prices the item or service. Must always be provided for every line item. The product code can be the merchant's, manufacturer's, or buyer's product code. This field must provide information about the purchase, not the customer. | Do not use erroneous data, such as the card product or MCC. |