Enhanced Commercial Data (L2/L3)
Enhanced commercial data (L2/L3 data) allows Lithic clients to get a deeper view of end-user purchasing behavior, enabling better support for corporate expense programs, fleet cards, and more.
Level 2 (L2) data includes general purchase data which typically describes the transaction as a whole, for example total tax amount or fuel type for a fuel-only fleet transaction. Level 3 (L3) data includes more granular information which describes individual elements within a transaction. Users can think of L3 data as a digital receipt containing item descriptions, item quantities, and product codes.
Typically merchants only include L2/L3 data for transactions on commercial BINs. They provide this data in an attempt to qualify for cheaper interchange rates. In return for less interchange, issuers get better reconciliation and visibility into program spend.
Types of Enhanced Commercial Data
L2 Tax Data
L2 commercial data enhances transaction details by providing more descriptive information, including tax details, which are essential for businesses to streamline their accounting and tax reporting processes. When a cardholder uses a card which supports L2 data, transactions capture additional information such as sales tax amount, customer code, purchase order number, and tax identification number. This detailed data helps businesses comply with tax regulations, simplify tax preparation, and improve financial transparency.
Industry-Specific Data
Enhanced commercial data can provide more granular transaction information tailored to specific industries, including fleet, lodging, vehicle rental, passenger transport, and shipping. This enhanced data helps businesses manage expenses more efficiently, comply with industry regulations, and improve operational transparency.
For the fleet industry, L2 data includes fuel type, plus the vehicle number, driver number, and odometer reading that the cardholder enters at the terminal, enabling precise tracking of fuel expenses and vehicle usage. In lodging, enhanced commercial data covers room rates, number of nights, check-in/check-out dates, and folio numbers, facilitating accurate expense management and compliance with travel policies.
Vehicle rental transactions benefit from enhanced commercial data by capturing rental duration, vehicle type, and additional charges, while passenger transport data includes passenger details, travel dates, and route information. Shipping industry transactions gain from enhanced commercial data with shipment details, weight, and delivery dates, improving cost allocation and operational efficiency.
L3 Line-item Data
L3 commercial data provides the highest level of transaction detail, including line-item information that is essential for comprehensive expense management. This data is particularly beneficial for industries that require detailed purchase breakdowns, such as government, manufacturing, and retail.
L3 data includes specific details about each item in a transaction, such as item description, product code, quantity, unit price, and total price. This granularity allows businesses to track spending at the item level, facilitating accurate cost allocation and inventory management. For example, in manufacturing, L3 data helps track the purchase of raw materials and components, ensuring precise cost control and efficient production planning.
In government and retail sectors, L3 line-item data aids in compliance with stringent reporting requirements and internal audit processes. Detailed transaction information supports better procurement practices, fraud detection, and improved vendor management. Additionally, it enhances the accuracy of financial reporting and budgeting by providing a clear view of all purchased items.
Data Availability
Lithic receives enhanced commercial data from Mastercard clearing records. The data becomes available after the transaction clears. For cards in a fleet program, driver and vehicle numbers are also available at authorization in the fleet_info object of Auth Stream Access (ASA) requests.
The API returns common data (tax details, reference numbers, and line items) and fleet data. A transaction can have more than one clearing event. Each clearing event that carries enhanced data has its own record.
Enhanced commercial data is not available in sandbox.
Webhooks
Subscribe to these events to receive enhanced commercial data when Lithic processes it. Each payload is the same object that the Get Enhanced Commercial Data endpoint returns.
| Event type | Description |
|---|---|
card_transaction.enhanced_data.created | Occurs when L2/L3 enhanced commercial data is processed for a transaction event |
card_transaction.enhanced_data.updated | Occurs when L2/L3 enhanced commercial data is reprocessed for a transaction event |
For the full list of events, see Types of Events.
Get Enhanced Data for a Specific Transaction
API Reference: List Enhanced Commercial Data
This endpoint returns one record for each clearing event on the transaction that carries enhanced data. If no enhanced data exists for the transaction, it returns 404.
GET https://api.lithic.com/v1/transactions/{transaction_token}/enhanced_commercial_dataSample Request
curl https://api.lithic.com/v1/transactions/764fa5a3-2371-40f0-8cbb-9a2e1230d955/enhanced_commercial_data \
-H "Authorization: YOUR_API_KEY"Sample Response
{
"data": [
{
"token": "fda41769-2a3f-5532-898f-0d2034f2da85",
"transaction_token": "6b79924e-0f01-4bdf-9485-9f6da44b6be2",
"event_token": "49bbd49c-dfe1-56db-86ad-98c7c2bd75e4",
"common": {
"customer_reference_number": null,
"merchant_reference_number": null,
"order_date": null,
"line_items": [
{
"product_code": "400",
"description": "CAR WASH",
"quantity": "1",
"amount": "8.00",
"unit_amount": "8.00",
"total_amount": "8.00"
}
],
"tax": {
"merchant_tax_id": "521236050",
"amount": null,
"exempt": null
}
},
"fleet": [
{
"service_type": "SELF_SERVICE",
"driver_number": null,
"vehicle_number": "012345",
"odometer": 12345,
"amount_totals": {
"gross_sale": 104,
"discount": null,
"net_sale": 104
},
"fuel": {
"quantity": "0.24300",
"type": "PREMIUM_SUPER",
"unit_of_measure": "GALLONS",
"unit_price": 4300
}
}
]
}
]
}| transaction_token (required, path parameter) | The token of the transaction that the enhanced data is associated with. String. Permitted values: 36-character UUID (including hyphens). |
Get Enhanced Data for a Specific Event
API Reference: Get Enhanced Commercial Data
This endpoint returns the single record for one transaction event. If no enhanced data exists for the event, it returns 404.
GET https://api.lithic.com/v1/transactions/events/{event_token}/enhanced_commercial_dataSample Request
curl https://api.lithic.com/v1/transactions/events/49bbd49c-dfe1-56db-86ad-98c7c2bd75e4/enhanced_commercial_data \
-H "Authorization: YOUR_API_KEY"Sample Response
{
"token": "fda41769-2a3f-5532-898f-0d2034f2da85",
"transaction_token": "6b79924e-0f01-4bdf-9485-9f6da44b6be2",
"event_token": "49bbd49c-dfe1-56db-86ad-98c7c2bd75e4",
"common": {
"customer_reference_number": null,
"merchant_reference_number": null,
"order_date": null,
"line_items": [
{
"product_code": "400",
"description": "CAR WASH",
"quantity": "1",
"amount": "8.00",
"unit_amount": "8.00",
"total_amount": "8.00"
}
],
"tax": {
"merchant_tax_id": "521236050",
"amount": null,
"exempt": null
}
},
"fleet": [
{
"service_type": "SELF_SERVICE",
"driver_number": null,
"vehicle_number": "012345",
"odometer": 12345,
"amount_totals": {
"gross_sale": 104,
"discount": null,
"net_sale": 104
},
"fuel": {
"quantity": "0.24300",
"type": "PREMIUM_SUPER",
"unit_of_measure": "GALLONS",
"unit_price": 4300
}
}
]
}| event_token (required, path parameter) | The token of the transaction event that the enhanced data is associated with. String. Permitted values: 36-character UUID (including hyphens). |
Enhanced Data Schema
| Field | Description |
|---|---|
| token | Unique identifier for the enhanced commercial data record |
| transaction_token | The token of the transaction that the enhanced data is associated with |
| event_token | The token of the transaction event that the enhanced data is associated with |
| common | Tax details, reference numbers, and line items. See Common Data Schema |
| fleet | Array of fleet records. Empty when the clearing record carries no fleet data. See Fleet Schema |
Common Data Schema
| Field | Description |
|---|---|
| customer_reference_number | A customer identifier. May be null |
| merchant_reference_number | A merchant identifier. May be null |
| order_date | The date of the order, in YYYY-MM-DD format. May be null |
| tax | - tax.amount: Integer. The amount of tax collected. May be null- tax.exempt: Whether the transaction is tax exempt. One of TAX_INCLUDED, TAX_NOT_INCLUDED, or NOT_SUPPORTED. May be null- tax.merchant_tax_id: The tax ID of the merchant. May be null |
| line_items | Array of line items. Empty when the clearing record carries no line items. See Line Item Schema |
Line Item Schema
{
"product_code": String,
"description": String,
"quantity": String,
"amount": String,
"unit_amount": String,
"total_amount": String
}| product_code | Product code for the goods or services purchased. |
| description | Description of the goods or services purchased. |
| quantity | Decimal number in string format of units of the goods or services purchased. |
| amount | Deprecated: use unit_amount instead. Same value as unit_amount, kept for backwards compatibility. |
| unit_amount | Decimal number in string format of unit cost for the goods or services purchased, in merchant currency. |
| total_amount | Decimal number in string format of total cost for the line item in merchant currency, covering all units purchased. |
Fleet Schema
{
"service_type": FuelServiceType,
"vehicle_number": String,
"driver_number": String,
"odometer": Integer,
"amount_totals": {
"discount": Integer,
"gross_sale": Integer,
"net_sale": Integer
},
"fuel": {
"quantity": String,
"type": FuelType,
"unit_of_measure": FuelUnitOfMeasure,
"unit_price": Integer
}
}| Field | Description |
|---|---|
| amount_totals | Fuel sale totals, in the smallest unit of the currency (for example, cents). Each value may be null. - discount: Amount of discount applied to the gross sale amount- gross_sale: Total fuel sale amount before discounts- net_sale: Total fuel sale amount after discounts |
| driver_number | The driver number entered at the terminal at the time of sale, with leading zeros removed. May be null |
| fuel | Information about the fuel product purchased by the cardholder. Each value may be null. - fuel.quantity: Decimal number in string format of the quantity of fuel purchased, measured in fuel.unit_of_measure- fuel.type: Type of fuel purchased. See Enumerations- fuel.unit_of_measure: Unit of measure of the fuel purchased. See Enumerations- fuel.unit_price: Price for a single unit of fuel, in thousandths of the currency unit. For example, 4300 is $4.300 per unit |
| odometer | The odometer reading entered at the terminal at the time of sale. May be null |
| service_type | Type of fuel service, such as SELF_SERVICE. See Enumerations |
| vehicle_number | The vehicle number entered at the terminal at the time of sale, with leading zeros removed. May be null |
Enumerations
| Type | Values |
|---|---|
| FuelType | More than 100 values, such as REGULAR, PREMIUM_SUPER, REGULAR_DIESEL_2, E_85, DIESEL_EXHAUST_FLUID, and EVC_2_LEVEL_2_CHARGE_240V_15_40_AMP. For the full list, see the API reference |
| FuelUnitOfMeasure | GALLONSLITERSPOUNDSKILOGRAMSIMPERIAL_GALLONSNOT_APPLICABLEUNKNOWN |
| FuelServiceType | UNKNOWNUNDEFINEDSELF_SERVICEFULL_SERVICENON_FUEL_ONLY |
Updated 3 days ago
