# 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](#create-a-sale-with-level-3-processing) and [Authorizations with Level 3 data](#create-an-authorization-with-level-3-processing). 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. - **Level 1:** Normal interchange, no additional fields required. - **Level 2:** Lower interchange, additional fields required. Visa is ending its Level 2 offering in April 2026. - **Level 3:** Lowest interchange, additional fields required. 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. - This feature is only supported on Visa and Mastercard branded cards. - Because only business-to-business and government transactions qualify, [the `Merchant` needs to be enabled](/api/merchants/updatemerchant) for Level 2/3 processing. - Level 2 and Level 3 processing is only available in Live environments. This feature isn't available to test in Sandbox environments. - Tax-exempt transactions are not eligible for Level 2. They are eligible for Level 3. - Merchant must be located in the United States. ## Supported APIs Level 2 / Level 3 Processing is available for: - [Transfers](#creating-a-sale-with-level-2-and-level-3-processing) - [Authorizations](#create-an-authorization-with-level-2-and-level-3-processing) - [Checkout Forms](#create-a-checkout-form-with-level-2level-3-processing) - [Payment Links](#create-a-payment-link-with-level-2level-3-processing) ## 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](http://www.dm.usda.gov/procurement/card/card_x/mcc.pdf)), 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 codeThis 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`](/api/merchants/updatemerchant). 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](/guides/getting-started/support-at-finix/). Example API Definition Example Response: Example 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" } } } API Definition ## 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`. - Level 2 and Level 3 Processing combines the data that gets requested during creation and captures it into one API call. An `Authorization` with Level 2 or Level 3 processing only needs to be captured if the data is different or changes from the original `Authorization`. When processing Level 2 and Level 3 transactions, it's required to include additional fields when creating a `Transfer` and `Authorization`. - There are no changes in the post-payments experience (reversals, refunds, settlements, etc.) when processing Level 2 or Level 3 transactions. - The request arguments noted as **required** are the minimum amount of information needed for L2 or L3 interchange rates. There’s no additional benefit in passing every available request argument for a particular level. - Sales tax amount entered must be greater than 0.1% of the amount of the transaction. - If the transaction is tax exempt pass `tax_exempt` as `true`. ## Creating a Sale with Level 2 and Level 3 Processing ### Create a Sale with Level 2 Processing [Create a Transfer](/api/transfers/createtransfer) and include the required request arguments to include Level 2 processing. Example API Definition A successful request returns a `201 Created` status code and includes a `Transfer` resource with level 2 processing details in the response. Example 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/transfers/ID6UfSm1d4WPiWgLYmbyeo3H" }, "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/transfers/TR96bu4Szu8dEKUMs1wDUW5z/fees" }, "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" } } } API Definition #### Request Arguments | Field | Type | Description | | --- | --- | --- | | `amount` | *integer*, **required** | The total amount that will be debited in cents (e.g. 100 cents to debit $1.00) | | `currency` | *string*, **required** | 3-letter ISO code designating the currency of the `Transfers` (e.g. USD) | | `merchant` | *string*, **required** | `Merchant` ID of the merchant whom you're charging on behalf of | | `source` | *string*, **required** | ID of the `Payment Instrument` that will be debited | #### Additional Purchase Data Request Arguments | Field | Type | Description | | --- | --- | --- | | `customer_reference_number` | *string*, **required** | The customer reference for the purchase (max 17 characters) | | `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.** | Visa Level 2 Deprecation Notice For Visa, these fields no longer qualify for lower interchange after April 17, 2026. To keep interchange savings on Visa transactions, include [Level 3 data](#create-a-sale-with-level-3-processing). ### Create a Sale with Level 3 Processing [Create a `Transfer`](/api/transfers/createtransfer) with the additional fields to include Level 3 processing. Example ```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": { // [!code highlight] "item_data": [ // [!code highlight] { // [!code highlight] "amount_excluding_sales_tax": 400, // [!code highlight] "amount_including_sales_tax": 500, // [!code highlight] "commodity_code": "175-62-20", // [!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] "unit_of_measure": "BX" // [!code highlight] }, // [!code highlight] { // [!code highlight] "amount_excluding_sales_tax": 400, // [!code highlight] "amount_including_sales_tax": 500, // [!code highlight] "commodity_code": "207-72-54", // [!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] "unit_of_measure": "CTN" // [!code highlight] } // [!code highlight] ], // [!code highlight] "customer_reference_number": "321xyz", // [!code highlight] "customs_duty_amount": 10, // [!code highlight] "discount_amount": 100, // [!code highlight] "shipping_amount": 100 // [!code highlight] }, // [!code highlight] "amount": 1000, "currency": "USD", "merchant": "MUmfEGv5bMpSJ9k5TFRUjkmm", "source": "PI6iQcTtJNCS8GZAVKYi5Ueb", "tags": { "test": "Sale" } }' ``` API Definition A successful request returns a `201 Created` status code and includes a `Transfer` resource with level 3 processing details in the response. Example Transfer - Level 3 Processing { "id": "TRgnpzmp9nqLiVUfVzLAXkuU", "created_at": "2025-07-25T18:09:20.32Z", "updated_at": "2025-07-25T18:09:20.32Z", "additional_buyer_charges": null, "additional_healthcare_data": null, "additional_purchase_data": { "customer_reference_number": "321xyz", "customs_duty_amount": 10, "destination_country_code": null, "destination_postal_code": null, "discount_amount": 100, "invoice_reference_number": null, "order_date": null, "sales_tax": null, "sales_tax_finix_generated": 200, "ship_from_postal_code": null, "shipping_amount": 100, "tax_exempt": false, "item_data": [ { "cost_per_unit": 500, "item_description": "printing paper", "item_discount_amount": 100, "merchant_product_code": "1149611", "quantity": 1, "amount_excluding_sales_tax": 400, "amount_including_sales_tax": 500, "unit_of_measure": "BX", "commodity_code": "175-62-20", "sales_tax_amount": 100, "sales_tax_rate": 0.25 }, { "cost_per_unit": 500, "item_description": "printing ink", "item_discount_amount": 0, "merchant_product_code": "2149612", "quantity": 1, "amount_excluding_sales_tax": 400, "amount_including_sales_tax": 500, "unit_of_measure": "CTN", "commodity_code": "207-72-54", "sales_tax_amount": 100, "sales_tax_rate": 0.25 } ] }, "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:09:20.74Z", "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": "a50cc8db-80f9-4164-95a2-7c1ae97d1de8", "type": "DEBIT", "_links": { "application": { "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe" }, "self": { "href": "https://finix.sandbox-payments-api.com/transfers/TRgnpzmp9nqLiVUfVzLAXkuU" }, "merchant_identity": { "href": "https://finix.sandbox-payments-api.com/transfers/ID6UfSm1d4WPiWgLYmbyeo3H" }, "payment_instruments": { "href": "https://finix.sandbox-payments-api.com/transfers/TRgnpzmp9nqLiVUfVzLAXkuU/payment_instruments" }, "reversals": { "href": "https://finix.sandbox-payments-api.com/transfers/TRgnpzmp9nqLiVUfVzLAXkuU/reversals" }, "fees": { "href": "https://finix.sandbox-payments-api.com/transfers/TRgnpzmp9nqLiVUfVzLAXkuU/fees" }, "disputes": { "href": "https://finix.sandbox-payments-api.com/transfers/TRgnpzmp9nqLiVUfVzLAXkuU/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 #### Request Arguments | Field | Type | Description | | --- | --- | --- | | `amount` | *integer*, **required** | The total amount that will be debited in cents (e.g. 100 cents to debit $1.00) | | `currency` | *string*, **required** | 3-letter ISO code designating the currency of the `Transfers` (e.g. USD) | | `merchant` | *string*, **required** | `Merchant` ID of the merchant whom you're charging on behalf of | | `source` | *string*, **required** | ID of the `Payment Instrument` that will be debited | #### Additional Purchase Data Request Arguments | Field | Type | Description | | --- | --- | --- | | `customer_reference_number` | *string*, **required** | The customer reference for the purchase (max 17 characters) | | `customs_duty_amount` | *integer*, **required** | The duty in cents on the total purchase amount for the order. This field must have a value of at least `0`. | | `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` | *integer*, **required** | The shipping cost in cents for the order. This field must have a value of at least `0`. | | `tax_exempt` | *boolean*, **optional** | For tax exempt purchases set to True | #### Item Data Request Arguments | Field | Type | Description | | --- | --- | --- | | `amount_excluding_sales_tax` | *integer*, **required** | Total cost in cents of the line item excluding tax (must be greater than $0.00). | | `amount_including_sales_tax` | *integer*, **required** | Total cost in cents of the line item including tax (must be greater than $0.00). | | `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_unit` | *integer*, **required** | The price in cents of one unit of the item purchased | | `item_description` | *string*, **required** | Required when item_data is supplied (max 25 characters) | | `item_discount_amount` | *integer*, **required** | Item discount amount in cents | | `merchant_product_code` | *string*, **required** | Merchant defined product code (max 12 characters) | | `quantity` | *integer*, **required** | The number of items purchased. Must be greater than 0. | | `unit_of_measure` | *string*, **required** | The unit of measure of the purchased item (max 3 characters) | ## Create an Authorization with Level 2 and Level 3 Processing ### Create an Authorization with Level 2 Processing [Create an `Authorization`](/api/authorizations) with the additional fields to include Level 2 processing. ```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", "processor": "DUMMY_V1", "source": "PIe2YvpcjvoVJ6PzoRPBK137", "tags": { "order_number": "21DFASJSAKAS" } }' ``` A successful response returns 201 and the newly created `Authorization`. ```json { "id": "AUazNfgBGxPoJ9FbVzsdYLWm", "created_at": "2022-10-10T06:39:30.18Z", "updated_at": "2022-10-10T06:39:30.56Z", "3ds_redirect_url": null, "additional_buyer_charges": null, "additional_healthcare_data": null, "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": [], "raw": null, "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" } } } ``` #### Request Arguments | Field | Type | Description | | --- | --- | --- | | `amount` | *integer*, **required** | The total amount that will be debited in cents (e.g. 100 cents to debit $1.00) | | `currency` | *string*, **required** | 3-letter ISO code designating the currency of the `Transfers` (e.g. USD) | | `merchant` | *string*, **required** | `Merchant` ID of the merchant whom you're charging on behalf of | | `source` | *string*, **required** | ID of the `Payment Instrument` that will be debited | ##### Additional Purchase Data Request Arguments | Field | Type | Description | | --- | --- | --- | | `customer_reference_number` | *string*, **required** | The customer reference for the purchase (max 17 characters) | | `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.** | Visa Level 2 Deprecation Notice For Visa, these fields no longer qualify for lower interchange after April 17, 2026. To keep interchange savings on Visa transactions, include [Level 3 data](#create-an-authorization-with-level-3-processing). ### Create an Authorization with Level 3 Processing [Create an `Authorization`](/api/authorizations) with the additional fields to include Level 3 processing. ```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": { // [!code highlight] "item_data": [ // [!code highlight] { // [!code highlight] "amount_excluding_sales_tax": 400, // [!code highlight] "amount_including_sales_tax": 500, // [!code highlight] "commodity_code": "175-62-20", // [!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] "unit_of_measure": "BX" // [!code highlight] }, // [!code highlight] { // [!code highlight] "amount_excluding_sales_tax": 400, // [!code highlight] "amount_including_sales_tax": 500, // [!code highlight] "commodity_code": "207-72-54", // [!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] "unit_of_measure": "CTN" // [!code highlight] } // [!code highlight] ], // [!code highlight] "customer_reference_number": "321xyz", // [!code highlight] "customs_duty_amount": 10, // [!code highlight] "discount_amount": 100, // [!code highlight] "shipping_amount": 100 // [!code highlight] }, // [!code highlight] "amount": 1000, "currency": "USD", "merchant": "MUeDVrf2ahuKc9Eg5TeZugvs", "source": "PIe2YvpcjvoVJ6PzoRPBK137", "tags": { "test": "sale" } }' ``` A successful response returns 201 and the newly created `Authorization`. ```json { "id": "AU4HM7X5CcrZ3aXseTreMQ4D", "created_at": "2022-10-10T06:40:16.66Z", "updated_at": "2022-10-10T06:40:16.90Z", "3ds_redirect_url": null, "additional_buyer_charges": null, "additional_healthcare_data": null, "address_verification": "POSTAL_CODE_AND_STREET_MATCH", "amount": 1000, "amount_requested": 1000, "application": "APgPDQrLD52TYvqazjHJJchM", "currency": "USD", "expires_at": "2022-10-17T06:40:16.66Z", "failure_code": null, "failure_message": null, "idempotency_id": null, "is_void": false, "merchant": "MUeDVrf2ahuKc9Eg5TeZugvs", "merchant_identity": "IDuqZpDw28f2KK6YuDk4jNLg", "messages": [], "raw": null, "security_code_verification": "MATCHED", "source": "PIe2YvpcjvoVJ6PzoRPBK137", "state": "SUCCEEDED", "tags": { "test": "sale" }, "trace_id": "b2021017-a86a-4bbd-bfa9-9fe047b73067", "transfer": null, "void_state": "UNATTEMPTED", "_links": { "self": { "href": "https://finix.sandbox-payments-api.com/authorizations/AU4HM7X5CcrZ3aXseTreMQ4D" }, "application": { "href": "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM" }, "merchant_identity": { "href": "https://finix.sandbox-payments-api.com/identities/IDuqZpDw28f2KK6YuDk4jNLg" } } } ``` #### Request Arguments | Field | Type | Description | | --- | --- | --- | | `amount` | *integer*, **required** | The total amount that will be debited in cents (e.g. 100 cents to debit $1.00) | | `currency` | *string*, **required** | 3-letter ISO code designating the currency of the `Transfers` (e.g. USD) | | `merchant` | *string*, **required** | `Merchant` ID of the merchant whom you're charging on behalf of | | `source` | *string*, **required** | ID of the `Payment Instrument` that will be debited | #### Additional Purchase Data Request Arguments | Field | Type | Description | | --- | --- | --- | | `customer_reference_number` | *string*, **required** | The customer reference for the purchase (max 17 characters) | | `customs_duty_amount` | *integer*, **required** | The duty in cents on the total purchase amount for the order. This field must have a value of at least `0`. | | `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` | *integer*, **required** | The shipping cost in cents for the order. This field must have a value of at least `0`. | | `tax_exempt` | *boolean*, **optional** | For tax exempt purchases set to True | #### Item Data Request Arguments | Field | Type | Description | | --- | --- | --- | | `amount_excluding_sales_tax` | *integer*, **required** | Total cost in cents of the line item excluding tax | | `amount_including_sales_tax` | *integer*, **required** | Total cost in cents of the line item including tax | | `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_unit` | *integer*, **required** | The price in cents of one unit of the item purchased | | `item_description` | *string*, **required** | Required when item_data is supplied (max 25 characters) | | `item_discount_amount` | *integer*, **required** | Item discount amount in cents | | `merchant_product_code` | *string*, **required** | Merchant defined product code (max 12 characters) | | `quantity` | *integer*, **required** | The number of items purchased. Must be greater than 0. | | `unit_of_measure` | *string*, **required** | The unit of measure of the purchased item (max 3 characters) | ### 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. ## Create a Checkout Form with Level 2/Level 3 Processing ### Create a Checkout Form with Level 2 Processing [Create a `Checkout Form`](/api/checkout-forms/createcheckoutform) with additional fields for Level 2 processing. Example ```shell curl -i -X POST \ -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \ https://finix.sandbox-payments-api.com/checkout_forms \ -H 'Content-Type: application/json' \ -H 'Finix-Version: 2022-02-01' \ -d '{ "merchant_id": "MU7noQ1wdgdAeAfymw2rfBMq", "payment_frequency": "ONE_TIME", "allowed_payment_methods": [ "PAYMENT_CARD" ], "nickname": "Gym Membership Signup Deposit", "amount_details": { "amount_breakdown": { "estimated_tax_amount": 429, // [!code highlight] "subtotal_amount": 4989, "tax_exempt": true // [!code highlight] }, "amount_type": "FIXED", "total_amount": 5418, "currency": "USD" }, "branding": { "brand_color": "#FFFFFF", "accent_color": "#000000", "logo": "https://s3.amazonaws.com/customer-uploaded-assets-prod/05-29-2024-09_49_37_Sweat.png_ccb91778-39ec-4cb2-8a13-9f0455acc77b", "icon": "https://s3.amazonaws.com/customer-uploaded-assets-prod/05-29-2024-09_49_37_Sweat.png_ccb91778-39ec-4cb2-8a13-9f0455acc77b" }, "additional_details": { "terms_of_service_url": "https://sweat.com/terms_of_service.html" }, "attempt_level_two_level_three_payment": true, // [!code highlight] "buyer_details": { "customer_reference_number": "321xyz" // [!code highlight] } }' ``` API Definition A successful request returns a 201 Created status code and the newly created `Checkout Form`. Example Checkout Form - Level 2 Processing { "id": "checkout_form_cvRSfevDuvZRv3hqt9N9Y", "additional_details": { "cart_return_url": null, "collect_billing_address": false, "collect_email": true, "collect_name": true, "collect_phone": false, "collect_shipping_address": false, "expiration_in_minutes": 10, "expired_session_url": null, "receipt_requested_delivery_methods": [], "send_receipt": false, "success_return_url": null, "terms_of_service_url": "https://sweat.com/terms_of_service.html", "unsuccessful_return_url": null }, "allowed_payment_methods": [ "PAYMENT_CARD" ], "amount_details": { "amount_breakdown": { "tax_exempt": true, // [!code highlight] "subtotal_amount": 4989, "shipping_amount": null, "estimated_tax_amount": 429, // [!code highlight] "discount_amount": null, "tip_amount": null, "customs_duty_amount": null, "additional_buyer_charges": null }, "amount_type": "FIXED", "currency": "USD", "max_amount": null, "min_amount": null, "total_amount": 5418 }, "application_id": "APc9vhYcPsRuTSpKD9KpMtPe", "attempt_level_two_level_three_payment": true, // [!code highlight] "branding": { "accent_color": "#000000", "brand_color": "#FFFFFF", "button_font_color": null, "icon": "https://s3.amazonaws.com/customer-uploaded-assets-prod/05-29-2024-09_49_37_Sweat.png_ccb91778-39ec-4cb2-8a13-9f0455acc77b", "logo": "https://s3.amazonaws.com/customer-uploaded-assets-prod/05-29-2024-09_49_37_Sweat.png_ccb91778-39ec-4cb2-8a13-9f0455acc77b", "logo_alternative_text": null }, "buyer_details": { "billing_address": null, "customer_reference_number": "321xyz", // [!code highlight] "email": null, "first_name": null, "identity_id": null, "last_name": null, "phone": null, "shipping_address": null }, "created_at": "2026-01-06T21:53:17.586039Z", "is_authorization": false, "items": [], "link_expires_at": "2026-01-06T22:03:17.556905Z", "link_url": "https://link.sandbox-payments-checkout.com/HAWFn3", "merchant_id": "MU7noQ1wdgdAeAfymw2rfBMq", "nickname": "Gym Membership Signup Deposit", "payment_frequency": "ONE_TIME", "split_transfers": [], "state": "ACTIVE", "tags": {}, "updated_at": "2026-01-06T21:53:17.586039Z", "_links": { "self": { "href": "https://finix.sandbox-payments-api.com/checkout_forms/checkout_form_cvRSfevDuvZRv3hqt9N9Y" } } } API Definition #### Level 2 Request Arguments | Field | Type | Description | | --- | --- | --- | | `amount_details.amount_breakdown.``customs_duty_amount` | *integer*, required | The duty in cents on the total payment amount. This field is required for level 3 processing and must have a value of at least `0`. | | `amount_details.amount_breakdown.``discount_amount` | *integer*, optional | The amount in cents of the discount for the order. This field is optional for Level 3 processing, but its value must be at least `0`. | | `amount_details.amount_breakdown.``estimated_tax_amount` | *integer*, optional | The estimated amount of tax applied to the order. In order for a transaction to qualify for Level 3 processing, this field must omitted or set to `null`. | | `amount_details.amount_breakdown.``shipping_amount` | *integer*, optional | The shipping cost in cents for the order. This field is optional for Level 3 processing, but its value must be at least `0`. | | `amount_details.amount_breakdown.``tax_exempt` | *boolean*, optional | For tax exempt payments, set to `true`. | | `attempt_level_two_level_three_payment` | *boolean*, **required** | Setting this field to `true` enables Level 2/Level 3 data collection for card payments. | | `buyer_details.customer_reference_number` | *string*, **required** | The customer reference for the purchase (max 17 characters). Required for Level 2 / Level 3 processing. For **Visa**, after April 17, 2026, this field no longer qualifies for lower interchange rates. You must pass level 3 data instead. | | `items.quantity` | *integer*, **required** | The item quantity. | | `items.description` | *string*, **required** | A item description. | | `items.item_details.commodity_code` | *string*, **required** | Commodity code for the item. | | `items.item_details.merchant_product_code` | *string*, **required** | Merchant's product code for the item. | | `items.item_details.unit_of_measure` | *string*, **required** | Unit of measure for the item. | | `items.item_details.cost_per_unit` | *integer*, **required** | Cost per unit in cents. | | `items.price_details.regular_amount` | *integer*, **required** | The standard price of the item without any adjustments applied (e.g. discounts, taxes, sales). | | `items.price_details.``amount_excluding_sales_tax` | *integer*, **required** | The amount excluding sales tax. | | `items.price_details.``item_discount_amount` | *integer*, optional | The item discount amount in cents. This field is optional for Level 3 processing, but its value must be at least `0`. | ### Create a Checkout Form with Level 3 Processing [Create a `Checkout Form`](/api/checkout-forms/createcheckoutform) with additional fields for Level 3 processing. Example ```shell curl -i -X POST \ -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \ https://finix.sandbox-payments-api.com/checkout_forms \ -H 'Content-Type: application/json' \ -H 'Finix-Version: 2022-02-01' \ -d '{ "merchant_id": "MU7noQ1wdgdAeAfymw2rfBMq", "payment_frequency": "ONE_TIME", "allowed_payment_methods": [ "PAYMENT_CARD" ], "nickname": "Gym Membership Signup Deposit", "amount_details": { "amount_breakdown": { "customs_duty_amount": 10, // [!code highlight] "discount_amount": 1000, // [!code highlight] "estimated_tax_amount": null, // [!code highlight] "shipping_amount": 995, // [!code highlight] "subtotal_amount": 3994, "tax_exempt": true // [!code highlight] }, "amount_type": "FIXED", "total_amount": 3999, "currency": "USD" }, "branding": { "brand_color": "#FFFFFF", "accent_color": "#000000", "logo": "https://s3.amazonaws.com/customer-uploaded-assets-prod/05-29-2024-09_49_37_Sweat.png_ccb91778-39ec-4cb2-8a13-9f0455acc77b", "icon": "https://s3.amazonaws.com/customer-uploaded-assets-prod/05-29-2024-09_49_37_Sweat.png_ccb91778-39ec-4cb2-8a13-9f0455acc77b" }, "additional_details": { "terms_of_service_url": "https://sweat.com/terms_of_service.html" }, "attempt_level_two_level_three_payment": true, // [!code highlight] "buyer_details": { "customer_reference_number": "321xyz" // [!code highlight] }, "items": [ { "name": "Holiday Dinner Contribution", "description": "Your personal contribution to the holiday dinner.", // [!code highlight] "quantity": "1", // [!code highlight] "image_details": { "primary_image_url": "https://images.unsplash.com/photo-1608835149345-b4d77bc490ae?q=80&w=3272&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" }, "item_details": { // [!code highlight] "commodity_code": "175-62-20", // [!code highlight] "merchant_product_code": "1149611", // [!code highlight] "unit_of_measure": "BX", // [!code highlight] "cost_per_unit": 500 // [!code highlight] }, // [!code highlight] "price_details": { "amount_excluding_sales_tax": 4500, // [!code highlight] "currency": "USD", "item_discount_amount": 1000, // [!code highlight] "price_type": "PROMOTIONAL", "regular_amount": 4500, // [!code highlight] "sale_amount": 3994 } } ] }' ``` API Definition A successful request returns a 201 Created status code and the newly created `Checkout Form`. Example Checkout Form - Level 3 Processing { "id": "checkout_form_cvRSX6vjN2MCDuTQZaEmk", "additional_details": { "cart_return_url": null, "collect_billing_address": false, "collect_email": true, "collect_name": true, "collect_phone": false, "collect_shipping_address": false, "expiration_in_minutes": 10, "expired_session_url": null, "receipt_requested_delivery_methods": [], "send_receipt": false, "success_return_url": null, "terms_of_service_url": "https://sweat.com/terms_of_service.html", "unsuccessful_return_url": null }, "allowed_payment_methods": [ "PAYMENT_CARD" ], "amount_details": { "amount_breakdown": { "tax_exempt": true, // [!code highlight] "subtotal_amount": 3994, "shipping_amount": 995, // [!code highlight] "estimated_tax_amount": null, // [!code highlight] "discount_amount": 1000, // [!code highlight] "tip_amount": null, "customs_duty_amount": 10, // [!code highlight] "additional_buyer_charges": null }, "amount_type": "FIXED", "currency": "USD", "max_amount": null, "min_amount": null, "total_amount": 3999 }, "application_id": "APc9vhYcPsRuTSpKD9KpMtPe", "attempt_level_two_level_three_payment": true, // [!code highlight] "branding": { "accent_color": "#000000", "brand_color": "#FFFFFF", "button_font_color": null, "icon": "https://s3.amazonaws.com/customer-uploaded-assets-prod/05-29-2024-09_49_37_Sweat.png_ccb91778-39ec-4cb2-8a13-9f0455acc77b", "logo": "https://s3.amazonaws.com/customer-uploaded-assets-prod/05-29-2024-09_49_37_Sweat.png_ccb91778-39ec-4cb2-8a13-9f0455acc77b", "logo_alternative_text": null }, "buyer_details": { "billing_address": null, "customer_reference_number": "321xyz", // [!code highlight] "email": null, "first_name": null, "identity_id": null, "last_name": null, "phone": null, "shipping_address": null }, "created_at": "2026-01-06T22:02:31.912332Z", "is_authorization": false, "items": [ { "description": "Your personal contribution to the holiday dinner.", // [!code highlight] "image_details": { "primary_image_url": "https://images.unsplash.com/photo-1608835149345-b4d77bc490ae?q=80&w=3272&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", "alternative_image_urls": [] }, "item_details": { "commodity_code": "175-62-20", // [!code highlight] "merchant_product_code": "1149611", // [!code highlight] "unit_of_measure": "BX", // [!code highlight] "cost_per_unit": 500 // [!code highlight] }, "name": "Holiday Dinner Contribution", "price_details": { "sale_amount": 3994, "currency": "USD", "price_type": "PROMOTIONAL", "regular_amount": 4500, // [!code highlight] "amount_excluding_sales_tax": 4500, // [!code highlight] "item_discount_amount": 1000 // [!code highlight] }, "quantity": 1 // [!code highlight] } ], "link_expires_at": "2026-01-06T22:12:31.875786Z", "link_url": "https://link.sandbox-payments-checkout.com/7c0kT9", "merchant_id": "MU7noQ1wdgdAeAfymw2rfBMq", "nickname": "Gym Membership Signup Deposit", "payment_frequency": "ONE_TIME", "split_transfers": [], "state": "ACTIVE", "tags": {}, "updated_at": "2026-01-06T22:02:31.912332Z", "_links": { "self": { "href": "https://finix.sandbox-payments-api.com/checkout_forms/checkout_form_cvRSX6vjN2MCDuTQZaEmk" } } } API Definition #### Level 3 Request Arguments | Field | Type | Description | | --- | --- | --- | | `amount_details.amount_breakdown.``customs_duty_amount` | *integer*, required | The duty in cents on the total payment amount. This field is required for level 3 processing and must have a value of at least `0`. | | `amount_details.amount_breakdown.``discount_amount` | *integer*, optional | The amount in cents of the discount for the order. This field is optional for Level 3 processing, but its value must be at least `0`. | | `amount_details.amount_breakdown.``estimated_tax_amount` | *integer*, optional | The estimated amount of tax applied to the order. In order for a transaction to qualify for Level 3 processing, this field must omitted or set to `null`. | | `amount_details.amount_breakdown.``shipping_amount` | *integer*, optional | The shipping cost in cents for the order. This field is optional for Level 3 processing, but its value must be at least `0`. | | `amount_details.amount_breakdown.``tax_exempt` | *boolean*, optional | For tax exempt payments, set to `true`. | | `attempt_level_two_level_three_payment` | *boolean*, **required** | Setting this field to `true` enables Level 2/Level 3 data collection for card payments. | | `buyer_details.customer_reference_number` | *string*, **required** | The customer reference for the purchase (max 17 characters). Required for Level 2 / Level 3 processing. For **Visa**, after April 17, 2026, this field no longer qualifies for lower interchange rates. You must pass level 3 data instead. | | `items.quantity` | *integer*, **required** | The item quantity. | | `items.description` | *string*, **required** | A item description. | | `items.item_details.commodity_code` | *string*, **required** | Commodity code for the item. | | `items.item_details.merchant_product_code` | *string*, **required** | Merchant's product code for the item. | | `items.item_details.unit_of_measure` | *string*, **required** | Unit of measure for the item. | | `items.item_details.cost_per_unit` | *integer*, **required** | Cost per unit in cents. | | `items.price_details.regular_amount` | *integer*, **required** | The standard price of the item without any adjustments applied (e.g. discounts, taxes, sales). | | `items.price_details.``amount_excluding_sales_tax` | *integer*, **required** | The amount excluding sales tax. | | `items.price_details.``item_discount_amount` | *integer*, optional | The item discount amount in cents. This field is optional for Level 3 processing, but its value must be at least `0`. | ## Create a Payment Link with Level 2/Level 3 Processing ### Create a Payment Link with Level 2 Processing [Create a `Payment Link`](/api/payment-links/createpaymentlink) with additional fields for Level 2 processing. Example ```shell curl -i -X POST \ -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \ https://finix.sandbox-payments-api.com/payment_links \ -H 'Content-Type: application/json' \ -H 'Finix-Version: 2022-02-01' \ -d '{ "merchant_id": "MU7noQ1wdgdAeAfymw2rfBMq", "application_id": "APc9vhYcPsRuTSpKD9KpMtPe", "payment_frequency": "ONE_TIME", "is_multiple_use": false, "allowed_payment_methods": [ "PAYMENT_CARD", "BANK_ACCOUNT" ], "amount_details": { "amount_breakdown": { "estimated_tax_amount": 429, // [!code highlight] "tax_exempt": true // [!code highlight] }, "amount_type": "FIXED", "total_amount": 429, "currency": "USD" }, "additional_details": { "terms_of_service_url": "https://mybasketball-leaguexyz.com/terms" }, "attempt_level_two_level_three_payment": true, // [!code highlight] "branding": { "brand_color": "#111823", "accent_color": "#f3eeee", "logo": "https://s3.amazonaws.com/customer-uploaded-assets-prod/11-16-2023-04_16_27_2022-04-28-22_56_33-finix-logo-v2.png_0feefc6d-06fe-4c50-a5e4-91dfeb183482", "icon": "https://s3.amazonaws.com/customer-uploaded-assets-prod/11-16-2023-04_16_27_2022-04-28-22_56_33-finix-icon-v2.png_0feefc6d-06fe-4c50-a5e4-91dfeb183482", "button_font_color": "#111823" }, "buyer_details": { "customer_reference_number": "321xyz" // [!code highlight] } }' ``` API Definition A successful request returns a 201 Created status code and the newly created `Payment Link`. Example Payment Link - Level 2 Processing { "id": "payment_link_cvcCVsW6VWVhhZ13DWCLk", "additional_details": { "collect_billing_address": false, "collect_email": true, "collect_name": true, "collect_phone": false, "collect_shipping_address": false, "expiration_in_minutes": 10080, "expired_session_url": null, "receipt_requested_delivery_methods": [], "send_receipt": false, "success_return_url": null, "terms_of_service_url": "https://mybasketball-leaguexyz.com/terms", "unsuccessful_return_url": null }, "allowed_payment_methods": [ "BANK_ACCOUNT", "PAYMENT_CARD" ], "amount_details": { "amount_breakdown": { "tax_exempt": true, // [!code highlight] "subtotal_amount": null, "shipping_amount": null, "estimated_tax_amount": 429, // [!code highlight] "discount_amount": null, "tip_amount": null, "customs_duty_amount": null, "additional_buyer_charges": null }, "amount_type": "FIXED", "currency": "USD", "max_amount": null, "min_amount": null, "total_amount": 429 }, "application_id": "APc9vhYcPsRuTSpKD9KpMtPe", "attempt_level_two_level_three_payment": true, // [!code highlight] "branding": { "accent_color": "#f3eeee", "brand_color": "#111823", "button_font_color": "#111823", "icon": "https://s3.amazonaws.com/customer-uploaded-assets-prod/11-16-2023-04_16_27_2022-04-28-22_56_33-finix-icon-v2.png_0feefc6d-06fe-4c50-a5e4-91dfeb183482", "logo": "https://s3.amazonaws.com/customer-uploaded-assets-prod/11-16-2023-04_16_27_2022-04-28-22_56_33-finix-logo-v2.png_0feefc6d-06fe-4c50-a5e4-91dfeb183482", "logo_alternative_text": null }, "buyer_details": { "customer_reference_number": "321xyz", // [!code highlight] "first_name": null, "identity_id": null, "last_name": null }, "created_at": "2025-12-17T17:15:59.631583Z", "is_authorization": false, "is_multiple_use": false, "items": [], "link_expires_at": "2025-12-24T17:15:59.599071Z", "link_url": "https://link.sandbox-payments-checkout.com/XmXvyY", "merchant_id": "MU7noQ1wdgdAeAfymw2rfBMq", "nickname": null, "payment_frequency": "ONE_TIME", "split_transfers": [], "state": "ACTIVE", "tags": {}, "updated_at": "2025-12-17T17:15:59.631583Z", "_links": { "self": { "href": "https://finix.sandbox-payments-api.com/payment_links/payment_link_cvcCVsW6VWVhhZ13DWCLk" } } } API Definition #### Level 2 Request Arguments | Field | Type | Description | | --- | --- | --- | | `amount_details.amount_breakdown.``estimated_tax_amount` | *integer*, optional | The estimated amount of tax applied to the order. | | `amount_details.amount_breakdown.``tax_exempt` | *boolean*, optional | For tax exempt payments, set to `true`. | | `attempt_level_two_level_three_payment` | *boolean*, **required** | Setting this field to `true` enables Level 2/Level 3 data collection for card payments. | | `buyer_details.customer_reference_number` | *string*, **required** | The customer reference for the purchase (max 17 characters). Required for Level 2 / Level 3 processing. For **Visa**, after April 17, 2026, this field no longer qualifies for lower interchange rates. You must pass level 3 data instead. | ### Create a Payment Link with Level 3 Processing [Create a `Payment Link`](/api/payment-links/createpaymentlink) with additional fields for Level 3 processing. Example ```shell curl -i -X POST \ -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \ https://finix.sandbox-payments-api.com/payment_links \ -H 'Content-Type: application/json' \ -H 'Finix-Version: 2022-02-01' \ -d '{ "merchant_id": "MU7noQ1wdgdAeAfymw2rfBMq", "application_id": "APc9vhYcPsRuTSpKD9KpMtPe", "payment_frequency": "ONE_TIME", "is_multiple_use": false, "allowed_payment_methods": [ "PAYMENT_CARD", "BANK_ACCOUNT" ], "amount_details": { "amount_breakdown": { "subtotal_amount": 3994, "estimated_tax_amount": null, // [!code highlight] "discount_amount": 1000, // [!code highlight] "shipping_amount": 995, // [!code highlight] "customs_duty_amount": 10, // [!code highlight] "tax_exempt": true // [!code highlight] }, "amount_type": "FIXED", "total_amount": 3999, "currency": "USD" }, "additional_details": { "terms_of_service_url": "https://mybasketball-leaguexyz.com/terms" }, "attempt_level_two_level_three_payment": true, // [!code highlight] "branding": { "brand_color": "#111823", "accent_color": "#f3eeee", "logo": "https://s3.amazonaws.com/customer-uploaded-assets-prod/11-16-2023-04_16_27_2022-04-28-22_56_33-finix-logo-v2.png_0feefc6d-06fe-4c50-a5e4-91dfeb183482", "icon": "https://s3.amazonaws.com/customer-uploaded-assets-prod/11-16-2023-04_16_27_2022-04-28-22_56_33-finix-icon-v2.png_0feefc6d-06fe-4c50-a5e4-91dfeb183482", "button_font_color": "#111823" }, "buyer_details": { "customer_reference_number": "321xyz" // [!code highlight] }, "items": [ { "name": "Holiday Dinner Contribution", "description": "Your personal contribution to the holiday dinner.", // [!code highlight] "quantity": "1", // [!code highlight] "image_details": { "primary_image_url": "https://images.unsplash.com/photo-1608835149345-b4d77bc490ae?q=80&w=3272&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" }, "item_details": { // [!code highlight] "commodity_code": "175-62-20", // [!code highlight] "merchant_product_code": "1149611", // [!code highlight] "unit_of_measure": "BX", // [!code highlight] "cost_per_unit": 500 // [!code highlight] }, // [!code highlight] "price_details": { "amount_excluding_sales_tax": 5000, // [!code highlight] "currency": "USD", "item_discount_amount": 1000, // [!code highlight] "price_type": "PROMOTIONAL", "regular_amount": 5000, // [!code highlight] "sale_amount": 7500 } } ] }' ``` API Definition A successful request returns a 201 Created status code and the newly created `Payment Link`. Example Payment Link - Level 3 Processing { "id": "payment_link_cvcCyRyxTyURbGLwwxnGh", "additional_details": { "collect_billing_address": false, "collect_email": true, "collect_name": true, "collect_phone": false, "collect_shipping_address": false, "expiration_in_minutes": 10080, "expired_session_url": null, "receipt_requested_delivery_methods": [], "send_receipt": false, "success_return_url": null, "terms_of_service_url": "https://mybasketball-leaguexyz.com/terms", "unsuccessful_return_url": null }, "allowed_payment_methods": [ "BANK_ACCOUNT", "PAYMENT_CARD" ], "amount_details": { "amount_breakdown": { "tax_exempt": true, // [!code highlight] "subtotal_amount": 3994, "shipping_amount": 995, // [!code highlight] "estimated_tax_amount": null, // [!code highlight] "discount_amount": 1000, // [!code highlight] "tip_amount": null, "customs_duty_amount": 10, // [!code highlight] "additional_buyer_charges": null }, "amount_type": "FIXED", "currency": "USD", "max_amount": null, "min_amount": null, "total_amount": 3999 }, "application_id": "APc9vhYcPsRuTSpKD9KpMtPe", "attempt_level_two_level_three_payment": true, // [!code highlight] "branding": { "accent_color": "#f3eeee", "brand_color": "#111823", "button_font_color": "#111823", "icon": "https://s3.amazonaws.com/customer-uploaded-assets-prod/11-16-2023-04_16_27_2022-04-28-22_56_33-finix-icon-v2.png_0feefc6d-06fe-4c50-a5e4-91dfeb183482", "logo": "https://s3.amazonaws.com/customer-uploaded-assets-prod/11-16-2023-04_16_27_2022-04-28-22_56_33-finix-logo-v2.png_0feefc6d-06fe-4c50-a5e4-91dfeb183482", "logo_alternative_text": null }, "buyer_details": { "customer_reference_number": "321xyz", // [!code highlight] "first_name": null, "identity_id": null, "last_name": null }, "created_at": "2025-12-17T17:11:20.034555Z", "is_authorization": false, "is_multiple_use": false, "items": [ { "description": "Your personal contribution to the holiday dinner.", // [!code highlight] "image_details": { "primary_image_url": "https://images.unsplash.com/photo-1608835149345-b4d77bc490ae?q=80&w=3272&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", "alternative_image_urls": [] }, "item_details": { "commodity_code": "175-62-20", // [!code highlight] "merchant_product_code": "1149611", // [!code highlight] "unit_of_measure": "BX", // [!code highlight] "cost_per_unit": 500 // [!code highlight] }, "name": "Holiday Dinner Contribution", "price_details": { "sale_amount": 7500, "currency": "USD", "price_type": "PROMOTIONAL", "regular_amount": 5000, // [!code highlight] "amount_excluding_sales_tax": 5000, // [!code highlight] "item_discount_amount": 1000 // [!code highlight] }, "quantity": 1 // [!code highlight] } ], "link_expires_at": "2025-12-24T17:11:20.002213Z", "link_url": "https://link.sandbox-payments-checkout.com/mxgK6U", "merchant_id": "MU7noQ1wdgdAeAfymw2rfBMq", "nickname": null, "payment_frequency": "ONE_TIME", "split_transfers": [], "state": "ACTIVE", "tags": {}, "updated_at": "2025-12-17T17:11:20.034555Z", "_links": { "self": { "href": "https://finix.sandbox-payments-api.com/payment_links/payment_link_cvcCyRyxTyURbGLwwxnGh" } } } API Definition #### Level 3 Request Arguments | Field | Type | Description | | --- | --- | --- | | `amount_details.amount_breakdown.``customs_duty_amount` | *integer*, required | The duty in cents on the total payment amount. This field is required for level 3 processing and must have a value of at least `0`. | | `amount_details.amount_breakdown.``discount_amount` | *integer*, optional | The amount in cents of the discount for the order. This field is optional for Level 3 processing, but its value must be at least `0`. | | `amount_details.amount_breakdown.``estimated_tax_amount` | *integer*, optional | The estimated amount of tax applied to the order. In order for a transaction to qualify for Level 3 processing, this field must omitted or set to `null`. | | `amount_details.amount_breakdown.``shipping_amount` | *integer*, optional | The shipping cost in cents for the order. This field is optional for Level 3 processing, but its value must be at least `0`. | | `amount_details.amount_breakdown.``tax_exempt` | *boolean*, optional | For tax exempt payments, set to `true`. | | `attempt_level_two_level_three_payment` | *boolean*, **required** | Setting this field to `true` enables Level 2/Level 3 data collection for card payments. | | `buyer_details.customer_reference_number` | *string*, **required** | The customer reference for the purchase (max 17 characters). Required for Level 2 / Level 3 processing. For **Visa**, after April 17, 2026, this field no longer qualifies for lower interchange rates. You must pass level 3 data instead. | | `items.quantity` | *integer*, **required** | The item quantity. | | `items.description` | *string*, **required** | A item description. | | `items.item_details.commodity_code` | *string*, **required** | Commodity code for the item. | | `items.item_details.merchant_product_code` | *string*, **required** | Merchant's product code for the item. | | `items.item_details.unit_of_measure` | *string*, **required** | Unit of measure for the item. | | `items.item_details.cost_per_unit` | *integer*, **required** | Cost per unit in cents. | | `items.price_details.regular_amount` | *integer*, **required** | The standard price of the item without any adjustments applied (e.g. discounts, taxes, sales). | | `items.price_details.``amount_excluding_sales_tax` | *integer*, **required** | The amount excluding sales tax. | | `items.price_details.``item_discount_amount` | *integer*, optional | The item discount amount in cents. This field is optional for Level 3 processing, but its value must be at least `0`. |