Level 2 / Level 3 Processing

Level 2 / Level 3 Processing

Visa Level 2 Deprecation Notice

Starting April 17, 2026, Visa will not accept Level 2 data for lower interchange rates. To keep interchange savings on Visa transactions, create Transfers with Level 3 data and Authorizations with Level 3 data. Mastercard Level 2 processing is unaffected.

In this guide, you'll learn the requirements of L2/L3 processing, which merchant types are ineligible, how to enable L2/L3, and how to create a sale, authorization, and capture using L2/L3.

Credit card processing fits into three levels: Level 1, Level 2, and Level 3 processing.

Each level is defined by the amount of information needed to complete a transaction.

For Level 2 and Level 3 processing, only business-to-business merchants and the government can receive lower interchange fees. Additionally, a corporate, business, or purchase card is required to obtain the lower interchange rate for Level 2 and 3 processing.

Supported APIs

Level 2 / Level 3 Processing is available for:

Ineligible Merchants

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

If a Merchant has one of the following Merchant Category Codes ( MCC), they aren't eligible to process Level 2/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

Network Support

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

Quality Data

It’s important that the data that is being passed along is accurate. 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. There will be additional dues and assessments associated with the network's validation of data quality, effective October 17, 2025.

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

Finix Line Item Field Card Network Recommendation Avoid
item_data#item_description They must provide meaningful information about purchased items/services Do not provide merchant name, single characters, or generic descriptions
item_data#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. Product code can be:
• Merchant's product code
• Manufacturer's product code
• Buyer's product code
This field must provide information about the purchase and not the customer.
Do not use erroneous data, such as the card product or MCC

Update a Merchant to Enable Level 2/3 Processing

Before a Merchant can process Level 2 or 3 transactions, update the Merchant resource and enable level_two_level_three_data_enabled. For more information, see Update a Merchant.

The APIs to update Merchant flags are only available for Finix Core customers. If you have additional questions, please reach out to your Finix point of contact or email the Finix Support team.

put /merchants/{merchant_id}

cURL

curl -i -X PUT \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  https://finix.sandbox-payments-api.com/merchants/MUwfZPNW3r4EqLMzwgr6txw4 \
  -H 'Content-Type: application/json' \
  -d '{
    "level_two_level_three_data_enabled": true
  }'

Example Response:

Merchant - Level 2/3 Processing Enabled

{
  "id": "MUcDAtijYcoVLamxHhzQc7fZ",
  "created_at": "2024-06-04T15:08:28.57Z",
  "updated_at": "2024-08-16T14:00:33.06Z",
  "application": "APgPDQrLD52TYvqazjHJJchM",
  "card_cvv_required": false,
  "card_expiration_date_required": true,
  "card_network_details": null,
  "convenience_charges_enabled": false,
  "country": null,
  "creating_transfer_from_report_enabled": true,
  "currencies": null,
  "default_partial_authorization_enabled": false,
  "disbursements_ach_pull_enabled": false,
  "disbursements_ach_push_enabled": false,
  "disbursements_card_pull_enabled": false,
  "disbursements_card_push_enabled": false,
  "disbursements_same_day_ach_pull_enabled": false,
  "disbursements_same_day_ach_push_enabled": false,
  "fee_ready_to_settle_upon": "RECONCILIATION",
  "gateway": null,
  "gross_settlement_enabled": false,
  "identity": "IDwq5EgdjhsWvpkJQEdfrs9y",
  "instant_payouts_card_push_enabled": false,
  "level_two_level_three_data_enabled": true,
  "loan_repayment": null,
  "mcc": null,
  "merchant_name": "John Doe",
  "merchant_profile": "MPgivonuyqNTmZ3xsXyFnoYf",
  "mid": "FNX8RFGJ2BWc7CufRXpvbeUVV",
  "onboarding_state": "APPROVED",
  "processing_enabled": true,
  "processor": "DUMMY_V1",
  "processor_details": {
    "mid": "FNX8RFGJ2BWc7CufRXpvbeUVV",
    "api_key": "secretValue"
  },
  "ready_to_settle_upon": "RECONCILIATION",
  "ready_to_settle_upon_delay_alignment": "NONE",
  "rent_surcharges_enabled": false,
  "settlement_enabled": true,
  "settlement_funding_identifier": "UNSET",
  "surcharges_enabled": false,
  "tags": {},
  "unreferenced_refund_manual_entry_enabled": false,
  "verification": "VIjcwzg18pa3u384cGkT1R9L",
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/merchants/MUcDAtijYcoVLamxHhzQc7fZ"
    },
    "identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDwq5EgdjhsWvpkJQEdfrs9y"
    },
    "verifications": {
      "href": "https://finix.sandbox-payments-api.com/merchants/MUcDAtijYcoVLamxHhzQc7fZ/verifications"
    },
    "merchant_profile": {
      "href": "https://finix.sandbox-payments-api.com/merchant_profiles/MPgivonuyqNTmZ3xsXyFnoYf"
    },
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
    },
    "verification": {
      "href": "https://finix.sandbox-payments-api.com/verifications/VIjcwzg18pa3u384cGkT1R9L"
    }
  }
}

Creating Sales with Level 2 and Level 3 Processing

Once level_two_level_three_data_enabled is updated to true, the Merchant can process both Level 2 and Level 3 Transfers and Authorizations.

When processing Level 2 and Level 3 transactions, it's required to include additional fields when creating a Transfer and Authorization.

Creating a Sale with Level 2 and Level 3 Processing

Create a Sale with Level 2 Processing

Create a Transfer and include the required request arguments to include Level 2 processing.

post /transfers

cURL

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"
  }'

A successful request returns a 201 Created status code and includes a Transfer resource with level 2 processing details in the response.

Transfer - Level 2 Processing

{
  "id": "TR96bu4Szu8dEKUMs1wDUW5z",
  "created_at": "2025-07-25T18:07:41.41Z",
  "updated_at": "2025-07-25T18:07:41.41Z",
  "additional_buyer_charges": null,
  "additional_healthcare_data": null,
  "additional_purchase_data": {
    "customer_reference_number": "321xyz",
    "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,
    "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",
  "currency": "USD",
  "destination": null,
  "externally_funded": "UNKNOWN",
  "failure_code": null,
  "failure_message": null,
  "fee": 0,
  "fee_profile": "FPuizPqrhzYLbmJm88u7aqfj",
  "idempotency_id": null,
  "merchant": "MUmfEGv5bMpSJ9k5TFRUjkmm",
  "merchant_identity": "ID6UfSm1d4WPiWgLYmbyeo3H",
  "messages": [],
  "operation_key": "CARD_NOT_PRESENT_SALE",
  "parent_transfer": null,
  "parent_transfer_trace_id": null,
  "raw": null,
  "ready_to_settle_at": "2025-07-26T18:07:41.87Z",
  "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": {
    "test": "Sale"
  },
  "tip_amount": null,
  "trace_id": "b0c469c5-21a4-43a1-915d-df72a297d039",
  "type": "DEBIT",
  "_links": {
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
    },
    "self": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR96bu4Szu8dEKUMs1wDUW5z"
    },
    "merchant_identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDhC29dXMAkbmr1aBpS91Hpx"
    },
    "payment_instruments": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR96bu4Szu8dEKUMs1wDUW5z/payment_instruments"
    },
    "reversals": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR96bu4Szu8dEKUMs1wDUW5z/reversals"
    },
    "fees": {
      "href": "https://finix.sandbox-payments-api.com/fees?linked_to=TR96bu4Szu8dEKUMs1wDUW5z"
    },
    "disputes": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR96bu4Szu8dEKUMs1wDUW5z/disputes"
    },
    "source": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6iQcTtJNCS8GZAVKYi5Ueb"
    },
    "fee_profile": {
      "href": "https://finix.sandbox-payments-api.com/fee_profiles/FPuizPqrhzYLbmJm88u7aqfj"
    }
  }
}

Creating an Authorization with Level 2 and Level 3 Processing

Create an Authorization with Level 2 Processing

Create an Authorization with the additional fields to include Level 2 processing.

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",
    "processor": "DUMMY_V1",
    "source": "PIe2YvpcjvoVJ6PzoRPBK137",
    "tags": {
      "order_number": "21DFASJSAKAS"
    }
  }'

A successful response returns 201 and the newly created Authorization.

{
    "id": "AUazNfgBGxPoJ9FbVzsdYLWm",
    "created_at": "2022-10-10T06:39:30.18Z",
    "updated_at": "2022-10-10T06:39:30.56Z",
    "address_verification": "POSTAL_CODE_AND_STREET_MATCH",
    "amount": 1000,
    "amount_requested": 1000,
    "application": "APgPDQrLD52TYvqazjHJJchM",
    "currency": "USD",
    "expires_at": "2022-10-17T06:39:30.18Z",
    "failure_code": null,
    "failure_message": null,
    "idempotency_id": null,
    "is_void": false,
    "merchant": "MUeDVrf2ahuKc9Eg5TeZugvs",
    "merchant_identity": "IDuqZpDw28f2KK6YuDk4jNLg",
    "messages": [],
    "security_code_verification": "MATCHED",
    "source": "PIe2YvpcjvoVJ6PzoRPBK137",
    "state": "SUCCEEDED",
    "tags": {
        "order_number": "21DFASJSAKAS"
    },
    "trace_id": "85aeb017-f405-4938-a0f9-a91b9b9ef591",
    "transfer": null,
    "void_state": "UNATTEMPTED",
    "_links": {
        "self": {
            "href": "https://finix.sandbox-payments-api.com/authorizations/AUazNfgBGxPoJ9FbVzsdYLWm"
        },
        "application": {
            "href": "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
        },
        "merchant_identity": {
            "href": "https://finix.sandbox-payments-api.com/identities/IDuqZpDw28f2KK6YuDk4jNLg"
        }
    }
}