Level II/III Data
Optimize interchange costs and enhance transaction transparency with enriched Level 2 and Level 3 data.
Level II and Level III fields allow merchants to pass more detailed information about a transaction to the card networks. By submitting additional fields like tax details, invoice number, product descriptions, and line-item breakdowns, the merchants can qualify for lower interchange fees on eligible business or corporate card transactions.
- Level II data focuses on summary-level information such as customer reference, tax amount, and purchase identifiers.
- Level III data adds granular detail such as the individual product lines, quantity, unit price, and shipping or duty charges.
These fields are primarily applicable to U.S. domestic Visa and Mastercard transactions. If enhanced data is incomplete or invalid, the transaction may still process but will not qualify for enhanced interchange.
A few Business examples are enlisted below:
- Corporate Purchase: A company buys 10 office monitors for $5,000. The merchant includes tax and line-item details to qualify for Level 3 rates.
- B2B Software Renewal: A SaaS vendor charges a corporate client $1,000 plus applicable tax and shipping, submitting invoice and tax details as Level 2 data.
- E-Commerce Order with Multiple Items: A merchant includes full product, discount, and freight details for a multi-item order to meet Level 3 requirements.
Level II/III Data Requirements
Level II and Level III data enablement allows merchants to pass enhanced transaction details that help qualify for lower interchange rates, especially for B2B and corporate card payments. These enhanced data levels ensure transparency and accuracy in reporting while maximizing cost efficiency for eligible merchants.
There are no standalone API nodes to “turn on” Level II/III data. However, the following configuration settings affect how Level II/III data is captured and processed, impacting both interchange qualification and data accuracy in B2B transactions.
Enable B2B Optimizer via the PUT /checkout/v3/merchantsetting/{merchantId} endpoint.
| API Node | Description |
|---|---|
payment.includeB2bFields | Set to true to include B2B data fields in payment requests. |
payment.enabledB2BLineItem | Set to true to enable line-item entry for B2B transactions. |
Once activated, the B2B App works entirely in the background. No interface or workflow changes are required.
Additionally, the below Loss Prevention settings can be updated via the POST /checkout/v3/fraudSetting?merchantId={merchantId} endpoint.
| API Node | Description |
|---|---|
keyedAvsAddress | Set to true to require the billing street address for manually entered (keyed) card transactions. |
keyedAvsZip | Set to true to require and validate the ZIP/postal code for keyed card transactions. |
keyedCvv | Set to true to require the CVV (Card Verification Value) for manually keyed entries. |
declineOnCvvMismatch | Automatically declines transactions when the entered CVV does not match the issuer’s record. |
declineOnAvsZipMismatch | Automatically declines transactions when the ZIP/postal code does not match the cardholder’s record. |
declineOnAvsStreetMismatch | Automatically declines transactions when the street address fails AVS validation. |
If any of these values are missing or invalid, the transaction is automatically declined.
To know more, kindly refer to the Merchant Configuration and Payment Controls.
Additionally, to ensure successful qualification and processing, the following business and technical requirements must be met:
- Level II/III data applies mainly to business, purchasing, or corporate cards; consumer cards typically do not support these enhancements.
- Some merchant category codes (MCCs), such as travel, lodging, or rental services—may have limitations on enhanced data submission. For details on MCC eligibility for Level II/III Data, see the B2B Optimizer: Eligibility & Requirements section.
- All transmitted details (e.g., tax, item totals, transaction amounts) must match precisely, as mismatched values can cause qualification downgrade or rejection.
- Tax and item data must comply with card network–defined thresholds and formatting standards.
- If Level III validation fails, the transaction may fallback to Level II or revert to standard data processing.
How it works
- Identify eligible transactions, usually commercial or purchasing cards.
- Collect required Level II/III fields during checkout.
- Make a POST request to
/checkout/v3/paymentendpoint with including the Level II/III fields.
Parameter | Required | Description |
|---|---|---|
| ✓ | Amount to charge (in USD currency) |
| ✓ | Valid Payment Card details or a vaulted token Note: You can vault the card for future use using Card Vaulting guide |
| ✓ | The Merchant's unique identifier that is used to process the payment. |
| ✓ | Set to |
| Type of transaction. It is defaulted to | |
| The name of the customer. Recommended for guest checkout where the card is not vaulted. | |
| An object containing Point of Sale data. While optional, we highly recommend including this object for all keyed (card-not-present/online) transactions to improve approval rates and potentially lower processing fees. You can view more details of the recommended POS data based on presentment type here. |
- Processor forwards data to card networks for interchange qualification.
- Reduced interchange fees are applied automatically if all conditions are met.
- Our system processes the payment and returns a response indicating the outcome. You can learn the outcome of the request via
GET/checkout/v3/payment/{id}or wait for the Payment webhook You can determine the result by checking thestatusandresponseCodefields in the response.status: The primary outcome of the transaction, either Approved or Declined.responseCode: A detailed code explaining the reason for the status. See our comprehensive Response code guide guide for full list
- For every approved payment, it is critical to store two identifiers
id: The unique Payment ID. Use this for retrieving or voiding the transaction before it settles.paymentToken: The secure Transaction Token. Use this for follow-up actions like refunds or adjustments after the transaction has settled.
You can also Retrieve or Update the Level III - Line Data Items included within a Payment.
- Use the GET
/checkout/v3/payment/{id}/purchaseendpoint to view all the Line Items data for a Payment. - Use the POST
/checkout/v3/payment/{id}/purchaseendpoint to update any Line Item data. - Use the POST
/checkout/v3/payment/{id}/L3endpoint to update any of the L3 data fields such as Freight & Shipping information.
Level I, II and III Data Fields
| Body Parameter | Description | L1 | L2 | L3 |
|---|---|---|---|---|
customerName | Merchant Name | ✓ | ✓ | ✓ |
amount | Total amount of the transaction | ✓ | ✓ | ✓ |
memo | Provide any additional JSON data to be displayed along with payment details. For example the payment date, tax id for a payment via Mastercard, internal notes, or other custom identifiers to associate with the transaction. | ✓ | ✓ | ✓ |
tax | Tax Amount (0.1%–31%) | ✓ | ✓ | |
taxExempt | Tax Identification. Possible values: true , false | ✓ | ✓ | |
customerCode | Refers to a client-provided customer reference number associated with a customer record (linked to the Customer Number). This value cannot be combined with invoiceId or clientReference if B2B Optimizer is enabled. | ✓ | ✓ | |
sourceZip | Ship From Postal Code | ✓ | ✓ | |
shipAmount | Shipping Amount | ✓ | ||
vatAmount | Total VAT amount applied to the transaction. | ✓ | ||
vatRate | VAT rate or percentage applied to the transaction | ✓ | ||
dutyAmount | Duty Amount | ✓ | ||
shipToZip | Destination Postal Code | ✓ | ||
shipToCountry | 3-digit alphanumeric ship-to or destination country code (e.g., “USA”). | ✓ | ||
invoice | Invoice / Order Number | ✓ | ||
purchases[].name | Line Item – Name | ✓ | ||
purchases[].description | Line Item – Description | ✓ | ||
purchases[].code | Line Item – Product Code | ✓ | ||
purchases[].quantity | Line Item – Quantity | ✓ | ||
purchases[].unitOfMeasure | Line Item – Unit of Measure | ✓ | ||
purchases[].unitPrice | Line Item – Unit of Cost | ✓ | ||
purchases[].discountAmount | Line Item – Discount Amount | ✓ | ||
purchases[].discountRate | Line Item – Discount Rate | ✓ | ||
purchases[].taxAmount | Line Item – Tax Amount | ✓ | ||
purchases[].taxRate | Line Item – Tax Rate | ✓ | ||
purchases[].extendedAmount | Line Item – Line Item Total (excludes tax, VAT, and shipping costs) | ✓ |
PCE transmits L2/L3 data, but card brands and processors determine the final interchange category. Ensure data accuracy and retain documentation supporting tax, freight, and itemization.
Key Validations
- Tax for L2 pricing: send a non-zero tax value to qualify for the lowest L2 tiers (Visa/MC). Zero tax is allowed, but may not yield the best L2 rate unless you also pass L3.
- Reconciliation: All amounts must align to -
Σ(unitPrice × quantity) + Σ(taxAmount) − Σ(discountAmount) + shipAmount == amount
- Tax identification flag: (
taxExempt) uses enum:0no tax info,1tax amount provided,2item exempt/non-taxable.
- The sum of all line items, plus tax and freight, must equal the total transaction amount.
- Use valid ISO country and currency codes.
taxpresent and > 0 for lowest L2 tiers (Visa/MC)taxExemptvalues limited to0|1|2and consistent with item taxationshipToCountryis ISO alpha‑3 (e.g.,USA)- Line items roll up to
amountvia the reconciliation formula - Auth/Capture gap ≤ 2 days (where applicable)
Missing or invalid data may cause the transaction to be downgraded to a higher interchange rate.
See Also
Pending items
- Update Links to GET Purchase data
- Update Links to Update Purchase Data
- Update Links to Update L3 data
Updated 18 days ago