P3 Qualification (L2/L3)
P3 Qualification (L2/L3)
Overview
CEDP — Visa’s Commercial Enhanced Data Program — is a network initiative that modernizes how B2B and B2G transactions qualify for preferred interchange rates. It replaces legacy Level 2/Level 3 data programs with a validated, structured data standard enforced at the network level.
At Run, we refer to the additional payload fields required for CEDP eligibility as P3 Qualification. When a commercial card transaction includes a complete set of P3 fields, it becomes eligible for lower interchange rates — a meaningful cost reduction for high-volume B2B merchants.
Who does this apply to? CEDP requirements apply to merchants processing commercial (corporate, purchasing, or business) credit cards in B2B or B2G contexts. Consumer card transactions are unaffected. P3 fields are supported on Cardpointe, Payroc, and Cybersource gateways.
How P3 Qualification Works
To qualify a transaction at P3, the charge request must include:
- Order-level fields — tax amounts, freight, duty, purchase order number, and order date
- Shipping details — destination ZIP, origin ZIP, and destination country
- A populated
line_itemsarray with at least one complete line item - Each line item must include a description, quantity, unit cost, net amount, and tax amount
Example Request
The following is a complete charge request payload including all fields required to qualify for P3. Standard charge fields (mid, amount, account_token, etc.) are included for context — the P3-specific fields begin at tax_exempt.
P3 Parameter Reference
All P3 fields are optional on the base charge endpoint but required as a complete set for CEDP qualification. Submitting a partial set may result in data validation failure at the network level.
Order-Level Fields
Shipping Fields
Line Items — line_items[]
The line_items array contains individual product or service line items for the order. At least one fully populated line item is required for P3 qualification. All monetary values should be expressed as decimal strings.
Implementation Notes
Field completeness matters. CEDP validation occurs at the network level. A transaction with missing or zero-valued required fields may pass authorization but fail data qualification, resulting in a downgrade. Populate all P3 fields for every eligible commercial card transaction.
Detecting commercial cards: The charge response includes a comm_card flag (Y/N). You can use this in your post-authorization logic to verify that a P3 payload was correctly submitted for commercial card transactions.
order_date format: order_date uses the YYDDD format. For example, April 25, 2024 is the 116th day of 2024, so the value would be 24116. Most server-side date libraries can convert a standard date to a day-of-year value with a single call.
Tax reconciliation: Visa validates that the sum of item_tax_amount across all line items aligns with the order-level tax_amount. Mismatches can trigger qualification failures. If tax is zero across all items, pass 0 at both levels.
Surcharging: When a merchant is enrolled in a Compliant Surcharge Program through the gateway, the surcharge amount is applied at settlement rather than being included in the original charge amount. Because CEDP validation reconciles line-item totals against the transaction amount, the surcharge must still be represented in the line_items array so the data aligns at qualification. Add a dedicated surcharge line item with description: "Surcharge Total" and net_amount set to the surcharge amount. All other standard line-item fields should still be populated.
Questions? Contact integrations@runpayments.io to confirm CEDP enrollment status for your merchant account or for guidance on integration testing.