Logo

How can we help you?

Search our knowledge base to get answers to your questions, access video training & more!

Developer

Send Level 3 Data to NMI

Updated 2 days ago

What is NMI Level 3 Data?

NMI's Level 3 data refers to a comprehensive set of information included with a payment transaction. Unlike Level 1 or Level 2 data, which may only capture basic transaction details such as amount and date, Level 3 includes line-item specifics such as item descriptions, quantities, tax amounts, and shipping information.

It’s especially useful for businesses that want transparency, need to prevent fraud, or are just tired of paying high credit card processing fees.

 

Why Use Level 3 Data?

Here’s what you get out of it:

  • Lower fees. Some card networks reward you with lower interchange rates if you include Level 3 data.

  • Less fraud. More detailed info means fewer shady transactions.

  • Better records. It’s easier to track what was bought, who bought it, and where it’s going.

  • More trust. Your customers (and your accountants) will love the transparency.

 

New Fields for NMI Processor Settings

To support Level 3 data, we’ve added several new fields to the NMI Processor Settings. These fields allow you to pass additional transaction details to NMI:

  • Merchant Category Code

  • Item Display Name

  • Item Quantity

  • Use Billing as Shipping Address (checkbox)

  • Item Tax Amount

Image

Note: If these fields are not visible on your page, you may need to update the page layout. To do this, edit the NMI Layout in the Payment Processor object and ensure the necessary fields are added and set to visible.

 

How It Works: Implementation Logic

Here’s how the system determines what to send to NMI, based on which fields are filled in:

  • If Merchant Category Code is provided:
    descriptor_mcc = payProcessor.fw1__Merchant_Category_Code__c
    descriptor_address = org.Street
    descriptor_city = org.City
    descriptor_state = org.State
    descriptor_postal = org.PostalCode
    descriptor_country = org.Country

  • If Item Display Name is provided:
    item_description_1 = payProcessor.fw1__Item_Display_Name__c

  • If Item Quantity is provided:
    item_quantity_1 = payProcessor.fw1__Item_Quantity__c

  • If Use Billing as Shipping Address is checked:
    shipping_address1=payment.fw1__Billing_Street__c
    shipping_city=payment.fw1__Billing_City__c
    shipping_state=payment.fw1__Billing_State__c
    shipping_country=payment.fw1__Billing_Country__c
    shipping_zip=payment.fw1__Billing_Zip__c
    shipping_postal=payment.fw1__Billing_Zip__c

  • If Item Tax Amount is provided:
    tax = payProcessor.fw1__Item_Tax_Amount__c
    item_tax_amount_1 = payProcessor.fw1__Item_Tax_Amount__c

 

Availability: Spring '25

Previous

Sandbox Refresh Safety

Next