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
| Field | Type | Required | Max length | Notes |
|---|---|---|---|---|
zip_code | string | Yes | 10 | Merchant ZIP code |
tax_amount_cents | integer | Yes | — | Tax in cents. 0 if exempt. |
freight_amount_cents | integer | No | — | Shipping/freight in cents |
duty_amount_cents | integer | No | — | Duty in cents (import only) |
Line-item fields
| Field | Type | Required | Max length | Notes |
|---|---|---|---|---|
description | string | Yes | 40 | Item description. Truncated to 40 chars. |
quantity | integer | Yes | — | Must be > 0 |
unit_price_cents | integer | Yes | — | Unit price in cents (before tax/discount) |
product_code | string | No | 12 | SKU or part number |
commodity_code | string | No | 4 | UN/SPSC commodity code |
unit_of_measure | string | No | 3 | EA (each), HRS (hours), GAL, QT, etc. |
purchase_order_number | string | No | 25 | PO number — required by some fleet card schemes |
Commodity codes
Use UN/SPSC 4-digit commodity codes. Common automotive service codes:
| Code | Description |
|---|---|
8111 | Motor vehicle services |
8112 | Motor vehicle parts |
8113 | Motor vehicle accessories |
5172 | Petroleum and petroleum products |
7389 | Miscellaneous services |
Validation errors
The API validates Level 3 data at order creation time and returns 422 Unprocessable Entity for:
description> 40 charactersquantity≤ 0unit_price_cents< 0- Unknown
unit_of_measurecode
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.