Skip to content

Level 3 data

Level 3 data is enhanced transaction detail required by fleet card programs (WEX, Voyager, Fleetcor) and commercial Visa/Mastercard for reduced interchange rates. Without it, fleet card transactions are down-qualified.

When to send Level 3 data

Send Level 3 data whenever:

  • The customer is paying with a fleet card (WEX, Voyager, Fuelman, etc.)
  • The customer is paying with a corporate purchasing card (Visa/MC commercial)
  • Your DMS can supply itemised line-item detail

For consumer cards, Level 3 data is accepted but ignored by the processor.

Structure

Level 3 data can be sent on the order at creation time or on an individual payment. Payment-level takes precedence if both are supplied.

{
"level3": {
"zip_code": "62701",
"tax_amount_cents": 250,
"freight_amount_cents": 0,
"duty_amount_cents": 0,
"line_items": [
{
"description": "Oil change — synthetic 5W-30",
"quantity": 1,
"unit_price_cents": 4750,
"product_code": "SVC-OIL",
"commodity_code": "811198",
"unit_of_measure": "EA",
"purchase_order_number": "PO-2024-001"
}
]
}
}

Field reference

Order-level fields

FieldTypeRequiredMax lengthNotes
zip_codestringYes10Merchant ZIP code
tax_amount_centsintegerYesTax in cents. 0 if exempt.
freight_amount_centsintegerNoShipping/freight in cents
duty_amount_centsintegerNoDuty in cents (import only)

Line-item fields

FieldTypeRequiredMax lengthNotes
descriptionstringYes40Item description. Truncated to 40 chars.
quantityintegerYesMust be > 0
unit_price_centsintegerYesUnit price in cents (before tax/discount)
product_codestringNo12SKU or part number
commodity_codestringNo4UN/SPSC commodity code
unit_of_measurestringNo3EA (each), HRS (hours), GAL, QT, etc.
purchase_order_numberstringNo25PO number — required by some fleet card schemes

Commodity codes

Use UN/SPSC 4-digit commodity codes. Common automotive service codes:

CodeDescription
8111Motor vehicle services
8112Motor vehicle parts
8113Motor vehicle accessories
5172Petroleum and petroleum products
7389Miscellaneous services

Validation errors

The API validates Level 3 data at order creation time and returns 422 Unprocessable Entity for:

  • description > 40 characters
  • quantity ≤ 0
  • unit_price_cents < 0
  • Unknown unit_of_measure code

Rejected Level 3 data does not prevent the order from being created — the order is created without Level 3 data and you can re-submit it on the payment instead.

Processor support

Level 3 data forwarding is currently supported for Valor card processing only. Aeropay ACH does not support Level 3.