# VISA Commercial Card Data Requirements: Level 1, Level 2, and CEDP Product 3

## Overview

This document provides the complete field requirements for VISA commercial card processing across three tiers:

- **Level 1**: Basic transaction data (all transactions)
- **Level 2**: Enhanced data for B2B transactions (being phased out April 18, 2026)
- **CEDP Product 3**: New standard replacing Level 3 (enforced October 17, 2025)

**Note**: Level 3 was the previous enhanced data standard that required line-item details. CEDP Product 3 replaces Level 3 with stricter validation requirements and better interchange rates. Level 2, which required enhanced transaction data but not line-item details, is being discontinued in April 2026.

## Critical Timeline

- **October 17, 2025**: CEDP Product 3 enforcement begins, replaces Level 3
- **April 18, 2026**: Level 2 program completely discontinued
- **0.05% CEDP fee**: Charged on all Level 2/Product 3 transactions (started April 2025)

## Complete Field Requirements Table

| Data Element | Level 1 | CEDP Product 3 | Data Type/Format | Notes | field |
| --- | --- | --- | --- | --- | --- |
| **TRANSACTION BASICS** |  |  |  |  |  |
| Merchant Identifier | ✓ | ✓ | String | Merchant ID | \* |
| Order Amount (Total) | ✓ | ✓ | Decimal | Must match: line items + tax + shipping + duty - discount | `amount` |
| Currency Code | ✓ | ✓ | String (3) | ISO 4217 3-letter code (e.g., USD, EUR, GBP) | \* |
| **CARDHOLDER INFORMATION** |  |  |  |  |  |
| Card Number | ✓ | ✓ | String (15-16) | Full card number | \* |
| Card Expiration Date | ✓ | ✓ | String (MMYY) | 4-digit expiration | \* |
| CVV/Security Code | ✓ | ✓ | String (3-4) | Card security code | `cvv2` (provided by payment elements if applicable) |
| Billing ZIP Code | ✓ | ✓ | String (5-9) | For AVS verification | `billing_details.address.postal_code` |
| Billing Address | ✓ | ✓ | String | Full billing address | `billing_details.address.address_line1` |
| **MERCHANT INFORMATION** |  |  |  |  |  |
| Merchant Name | ✓ | ✓ | String | Business name | \* |
| Merchant Postal Code |  | ✓ | String (5-9) | Merchant ZIP code | \* |
| Merchant Tax ID (TIN) |  | ✓ | String | Tax identification number | \* |
| Merchant State Code |  | ✓ | String (2) | 2-letter state code | \* |
| **TAX INFORMATION** |  |  |  |  |  |
| Sales Tax Amount |  | ✓ | Decimal | **Product 3: Can be $0 if tax exempt** (Note: Level 2 required 0.1%-22% of total, but Level 2 is being phased out) | `order_details.tax_amount` |
| Tax Exempt Indicator |  | ✓ | Boolean | Set to true if tax exempt | `order_details.tax_exempt` |
| **ORDER INFORMATION** |  |  |  |  |  |
| Customer Code / PO Number |  | ✓ | String | **Cannot be blank, null, or all zeros** Must be meaningful value | `order_details.po_number` |
| Order Date |  | ✓ | Date | Date order was placed | `order_details.order_date` |
| **SHIPPING INFORMATION** |  |  |  |  |  |
| Ship To ZIP |  | ✓ | String (5-9) | Destination ZIP code | `order_details.ship_to_zip` |
| Ship From ZIP |  | ✓ | String (5-9) | Origin ZIP code | `order_details.ship_from_zip` |
| Ship To Country |  | ✓ | String (2) | 2-letter country code | `order_details.ship_to_country` |
| **TRANSACTION-LEVEL AMOUNTS** |  |  |  |  |  |
| Freight/Shipping Amount |  | ✓ | Decimal | Total shipping cost. Can be $0 | `order_details.freight_amount` |
| Duty Amount |  | ✓ | Decimal | Import tax/customs. Can be $0 | `order_details.duty_amount` |
| Order Discount Amount |  | ✓ | Decimal | Transaction-level discount. Can be $0 | `order_details.discount_amount` |
| **LINE ITEM DETAILS** (Required for EACH item in Product 3) |  |  |  |  |  |
| Item Description |  | ✓ | String | **Cannot be blank, null, or all zeros/spaces** Must be descriptive, not generic | `order_details.items[].description` |
| Item Name/Title |  | ✓ | String | Product name | `order_details.items[].name` |
| Commodity Code |  | ✓ | String (7+) | **Cannot be blank, null, or all zeros** 7-digit NIGP recommended | `order_details.items[].material` |
| Product Code / SKU |  | ✓ | String (≤12) | **Cannot be blank, null, or all zeros** Merchant's unique identifier | `order_details.items[].upc` subject to change pending validation with processor |
| Item Quantity |  | ✓ | Decimal | Number of units | `order_details.items[].quantity` |
| Unit of Measure |  | ✓ | String | e.g., EA, BX, CTN, DZ, LB | `order_details.items[].uom` |
| Unit Price / Unit Cost |  | ✓ | Decimal | **Cannot be all zeros** Price per unit | `order_details.items[].unit_cost` |
| Item Discount Amount |  | ✓ | Decimal | Line-item discount. Can be $0 | `order_details.items[].discount_amount` |
| Item Tax Amount |  | ✓ | Decimal | Tax for this line item | `order_details.items[].tax_amount` |
| Item Total Amount |  | ✓ | Decimal | **(Quantity × Unit Price) - Item Discount** | `order_details.items[].net_amount` |

**Field Column Legend:**

- `*` \- Field is automatically provided by the system for all transactions (no action required)
- Field path (e.g., `order_details.tax_amount`) \- Field must be provided in your API request using the specified path
- For line items, use array notation: `order_details.items[]` indicates each item in the items array requires these fields

## Field Notes and Validation Rules

### Level 1 (All Transactions)

- **Purpose**: Basic transaction authorization
- **Interchange**: Standard rates (highest)
- **Requirements**: Minimal cardholder and transaction data
- **Validation**: Basic card verification and AVS

### CEDP Product 3 (October 17, 2025+)

- **Purpose**: Validated line-item transaction data (replaces Level 3)
- **Interchange**: 7-10% better than old Level 3 rates
- **Key Differences from Level 2**(which is being phased out):
  - Requires ALL line-item details for each product (Level 2 did not require line items)
  - Tax CAN be $0 if transaction is tax-exempt (Level 2 required tax to be 0.1%-22% of total)
  - VISA validates accuracy and completeness, not just presence
  - No placeholder or generic data allowed
- **Eligible Cards**: Corporate, Purchasing, Fleet, **Business Credit (NEW)**

## Critical Data Quality Rules for CEDP

VISA's machine learning validates:

### ❌ REJECTED Data

- Generic descriptions: "Product", "Item", "Service", "Merchandise"
- Placeholder text: "N/A", "TBD", "XXX", "000", "None"
- Static/repeated values across different transactions
- Blank, null, or all-zero fields where data is required
- Invalid calculations that don't match line-item math
- Commodity codes that don't exist or are inappropriate

### ✓ ACCEPTED Data

- Specific, unique descriptions: "HP LaserJet Pro M404dn Printer"
- Valid commodity codes: 7-digit NIGP or UNSPSC codes
- Accurate calculations: Item total = (Qty × Price) - Discount
- Transaction total = Line items + Tax + Shipping + Duty - Discount
- Meaningful customer codes/PO numbers from actual orders

## Calculation Requirements

### Line Item Total Calculation

```text
Item Total = (Quantity × Unit Price) - Item Discount
```

**Example:**

- Quantity: 5 boxes
- Unit Price: $12.50 per box
- Item Discount: $2.50
- **Item Total: (5 × $12.50) - $2.50 = $60.00**

### Transaction Total Calculation

```text
Transaction Total = Sum of All Line Item Totals + Transaction Tax + Shipping + Duty - Order Discount
```

**Example:**

- Line Item 1: $60.00
- Line Item 2: $45.00
- Transaction Tax: $8.40
- Shipping: $10.00
- Duty: $0.00
- Order Discount: $3.40
- **Transaction Total: $60.00 + $45.00 + $8.40 + $10.00 + $0.00 - $3.40 = $120.00**

**Note**: Fleet fuel-only transactions have separate qualification rules and requirements.

## Disqualified Merchant Categories (MCCs)

The following MCCs cannot qualify for Level 2 (until April 2026) or CEDP Product 3:

| MCC Range | Category |
| --- | --- |
| 3000-3299 | Airlines |
| 3501-3999 | Car Rental / Hotels |
| 4112 | Passenger Railways |
| 4411 | Steamship and Cruise Lines |
| 4511 | Airlines and Air Carriers |
| 4722 | Travel Agencies and Tour Operators |
| 5812 | Eating Places and Restaurants |
| 5814 | Fast Food Restaurants |
| 5962 | Direct Marketing - Travel Related (High Risk) |
| 5966 | Direct Marketing - Outbound Telemarketing (High Risk) |
| 5967 | Direct Marketing - Inbound Teleservices (High Risk) |
| 7011 | Lodging - Hotels, Motels, Resorts |
| 7512 | Automobile Rental Agency |
| 7513 | Truck & Utility Trailer Rentals |
| 7519 | Motor Home and RV Rentals |

## Additional Qualification Requirements

### CEDP Product 3 (and Level 2 until April 2026)

- Transaction must be CPS (Custom Payment Service) compliant
- Capture must follow authorization within 1 business day
- Transaction must be authorized online (not CAT terminal)

### Large Ticket (>$6,980)

- Clearing within 2 business days (≤1 day between auth and capture)
- Corporate or Purchasing cards only

## Common Unit of Measure Codes

| Code | Description |
| --- | --- |
| EA | Each (individual units) |
| BX | Box |
| CTN | Carton |
| DZ | Dozen |
| LB | Pound |
| KG | Kilogram |
| FT | Foot |
| YD | Yard |
| HR | Hour |
| MO | Month |
| CS | Case |
| PK | Package |
| PR | Pair |
| RL | Roll |
| ST | Set |
