Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Both card brands provide lower interchange rates on their respective networks, calculated and adjusted based exclusively on the cardholder’s card type (e.g. business card, corporate card, etc.).

...

To take advantage of lower interchange rates, this Level II and Level III data must be submitted alongside your transaction. This ensures the customer’s card brand network can receive and assess the data to determine which interchange rate the transaction will receive.

Info

Before you begin, we recommend checking each card’s eligibility for Level II and Level III processing as American Express and Discover don’t offer direct data submission options for Level II or III to qualify for lower interchange rates. A simple query shown below will quickly identify the card type:

GET https://test-api.payrix.com/bins

The response will display the method (card brand), type (debit, credit, or both), and card category (personal, corporate card, etc.), which will allow you to know before submitting the additional data if the card brand network supports lower interchange rates or Level II or Level III data submissions.

There are multiple methods to submit Level II or Level III data, read through the basic methods below to find the best workflow for your business:

Portal

The Portal offers a very simple way to manually enter and submit Level II and Level III values with payment transactions. Read the steps below to learn more:

Expand
titleSubmit Level II data using the Portal.

To submit Level II transaction data using the Create Payments page:

  • Step 1: Navigate to the Create Payment page under Payments

  • Step 2: Enter all applicable data. Then, under Customer Details, check “Submit this transaction as LEVEL 2 PROCESSING” to reveal Level II fields.

  • Step 3: Enter the TAX and ORDER NUMBER values.

    • Note: If the entity is tax-exempt, you may enter '0'. See the steps below to enable tax-exempt status.

    • Note: If you are not a tax-exempt entity, you must adhere to Visa, Mastercard, and local government sales tax rates and regulations to receive lower Level II interchange rates.

  • Step 4: (Optional) Follow the steps below to also include Level III data.

Click Process Payment to complete the submission.

...

titleEnable Tax Exempt Status using the Portal

Non-profit and Governmental entities that qualify for tax-exempt status can apply this setting to their platform entity. This provides the proper mapping for Level II data submission when tax amounts are set to 0%.

Note: To display the Parameters tab and Auto Tax Exempt Enabled parameter for your Group(s), contact your Payrix representative to enable visibility.

To apply tax-exempt status to non-profit entity groups from the Groups page:

  • Step 1: Navigate to the Groups page under the Management section.

  • Step 2: Click on the desired group (or Add a new Group if needed) & enter the Group Profile page.

  • Step 3: Click on the Parameters tab, then click the ADD PARAMETERS button.

  • Step 4: Click the edit icon in the upper-right corner, then check “Auto Tax Exempt Enabled” and confirm.

  • Step 5: Return to the Group Profile page, then click the ADD MEMBERS button to Add the Merchant as a Member.

Click Save to complete the Merchant enrollment in the Tax Exempt Group.

Tax Exempt Exceptions:

Note: A tax-exempt merchant can qualify for Level III rates for both MasterCard and Visa.

Note

Warning: Visa does not allow tax-exempt Merchants to qualify for Level II interchange regardless of MCC code.

Info

MasterCard allows the following MCCs to qualify for Level II interchange rates if the business is 100% tax-exempt:

...

MCC

...

Type / Description

...

4111

...

Transportation—Suburban and Local Commuter Passenger, including Ferries

...

4131

...

Bus Lines

...

4215

...

Courier Services

...

4468

...

Marinas, Marine Service/Supplies

...

4784

...

Bridge and Road Fees, Tolls

...

5499

...

Misc Food Stores

...

5541

...

Service Stations

...

5542

...

Automated Fuel Despenser

...

5983

...

Fuel Dealers

...

8211

...

Elementary and Secondary Schools

...

8220

...

Colleges

...

8398

...

Charities

...

8661

...

Religious Orgs

...

9211

...

Court Costs

...

9222

...

Gov’t Fines

...

9311

...

Tax Payments

...

9399

...

Gov’t Services Not Elsewhere Classified

...

9402

...

Gov’t Postal Services

Expand
titleSubmit Level III data using the Portal.

To submit Level III transaction data using the Create Payments page:

  • Step 1: Complete steps 1-3 above from the Level II submission step above.

  • Step 2: Check “Submit this transaction as LEVEL 3 PROCESSING (All fields must be completed)” to reveal Level III fields.

  • Step 3: Enter the SHIPPING AMOUNT, DUTY AMOUNT & ORDER DISCOUNT value.

  • Step 4: Under Order Items, enter the DESCRIPTION, COMMODITY CODE, PRODUCT CODE, ITEM PRICE, ITEM DISCOUNT, QUANTITY, UNIT OF MEASURE, and ITEM TOTAL for each item.

  • Step 5: (Optional) Add additional Order Items as needed by clicking Add Item at the bottom of each new item form.

Info

Note: Each additional item must have the all fields above for Level 3 Transaction Processing

Click Process Payment to complete the submission.

API

The Payrix API provides a straightforward method of submitting Level II and Level III data values alongside transactions. Read the information below to learn more.

...

titleSubmit Level II data using the Payrix API.

To submit Level II transaction data using the /txns Payrix API endpoint, send the following request:

Code Block
POST https://test-api.payrix.com/txns
Code Block
languagejson
{
   "merchant":"{yourMerchantID}",
   "payment":{
      "number":"{customerCardNumber}",
      "cvv":"{customerCardCVV}"
   }
   "expiration":"MMYY",
   "type":2,
   "order":"INVOICE#1",
   "total":7799,
}
Note

Warning: Tax rate must be set according to status and regulation:

  • If you are a tax-exempt entity, you may enter 0 in the tax field. See the steps below to enable tax-exempt status.

  • If you are not a tax-exempt entity, you must adhere to Visa, Mastercard, and local government sales tax rates and regulations to receive lower Level II interchange rates.

...

Required Parameters

...

Type

...

Description

...

Valid Values / Format

...

merchant

...

string

...

The identifier of the Merchant associated with this Transaction.

...

payment

...

object

...

The payment method associated with this Transaction, including the card details.

...

number

...

number

...

For credit payment method, the card number of the credit card associated with this Transaction.
For the eCheck payment method, the bank account number is associated with this Transaction.

...

cvv

...

integer

...

The Card Verification Value (CVV) number of the credit card associated with this Transaction.

...

This field is expressed as a 3-digit integer.

...

expiration

...

number

...

The expiration date of the credit card associated with this Transaction.

...

This field is stored as a text string in 'MMYY' format, where 'MM' is the number of a month and 'YY' is the last two digits of a year. For example, '0623' for June 2023.

...

type

...

integer

...

The type of Transaction.

...

1 - Credit Card Only: Sale Transaction. Processes a sale and charges the customer.

2 - Credit Card Only: Auth Transaction. Authorizes and holds the requested total on the credit card.

3 - Credit Card Only: Capture Transaction. Finalizes a prior Auth Transaction and charges the customer.

4 - Credit Card Only: Reverse Authorization. Reverses a prior Auth or Sale Transaction and releases the credit hold.

5 - Credit Card Only: Refund Transaction. Refunds a prior Capture or Sale Transaction (total may be specified for a partial refund).

7 - eCheck Only: eCheck Sale Transaction. Sale Transaction for eCheck payment.

8 - eCheck Only: eCheck Refund Transaction. Refund Transaction for prior eCheck Sale Transaction.

11 - eCheck Only: eCheck Redeposit Transaction. Attempt to redeposit a prior failed eCheck Sale Transaction.

12 - eCheck Only: eCheck Account Verification Transaction. Attempt to verify eCheck payment details.

...

total

...

number

...

The total amount of this Transaction.

...

This field is specified as an integer in cents.

...

tax

...

integer

...

The total sum of this Transaction’s tax amount.

...

This field is specified as an integer in cents.

...

titleEnable Tax Exempt Status using the Payrix API

Non-profit and Governmental entities that qualify for tax-exempt status can apply this setting to their platform entity. This option properly maps for Level II data submission when tax amounts are set to 0%.

Info

Tax-exempt status is available for Commercial Retail and Commercial Card Not Present transactions only.

Note

Warning: To enable the /parameters endpoint and autoTaxExemptEnabled parameter for your Group(s), contact your Payrix representative.

To apply tax-exempt status to non-profit entity groups using the /parameters Payrix API endpoint, send the following request:

Code Block
POST https://test-api.payrix.com/parameters
Code Block
languagejson
{
  "login": "{{yourLoginID}}",
  "org":"{{merchantsOrg/GroupID}}",
  "autoTaxExemptEnabled":"1",
  "inactive":"0",
  "frozen":"0",
  }

Tax Exempt Exceptions:

Note: A tax-exempt merchant can qualify for Level III rates for both MasterCard and Visa.

Note

Warning: Visa does not allow tax-exempt Merchants to qualify for Level II interchange regardless of MCC code.

Info

MasterCard allows the following MCCs to qualify for Level II interchange rates if the business is 100% tax-exempt:

...

MCC

...

Type / Description

...

4111

...

Transportation—Suburban and Local Commuter Passenger, including Ferries

...

4131

...

Bus Lines

...

4215

...

Courier Services

...

4468

...

Marinas, Marine Service/Supplies

...

4784

...

Bridge and Road Fees, Tolls

...

5499

...

Misc Food Stores

...

5541

...

Service Stations

...

5542

...

Automated Fuel Despenser

...

5983

...

Fuel Dealers

...

8211

...

Elementary and Secondary Schools

...

8220

...

Colleges

...

8398

...

Charities

...

8661

...

Religious Orgs

...

9211

...

Court Costs

...

9222

...

Gov’t Fines

...

9311

...

Tax Payments

...

9399

...

Gov’t Services Not Elsewhere Classified

...

9402

...

Gov’t Postal Services

Warning

Error: If you do not first contact Payrix to enable access to the /parameters endpoint, you will receive the error below:

Code Block
languagejson
{
    "errors": [
        {
            "code": 23,
            "severity": 2,
            "msg": "Invalid request for this type of user authentication"
        }
    ]
}

Your successful response should look like the following:

Code Block
languagejson
{
    
    "id": "t1_par_1abc2d34ef5g6h7ij89kl01",
    "created": "2023-10-05T13:00:33.442Z",
    "modified": "2023-10-05T13:00:33.442Z",
    "creator": "t1_log_1abc2d34ef5g6h7ij89kl01",
    "modifier": "t1_log_1abc2d34ef5g6h7ij89kl01",
    "login": "t1_log_1abc2d34ef5g6h7ij89kl01",
    "org": "t1_org_1abc2d34ef5g6h7ij89kl01",
    "division": "t1_div_1abc2d34ef5g6h7ij89kl01",
    "partition": "t1__1abc2d34ef5g6h7ij89kl01",
    "autoTaxExemptEnabled": "1",
    "inactive": "0",
    "frozen": "0",
    "minTxnTotal": "null",
    "maxTxnTotal": "null",
    "maxTxnDailyTotal": "null",
    "maxTxnDailyNum": "null",
    "maxTxnMonthlyTotal": "null",
    "maxTxnMonthlyNum": "null",
    "maxSubscriptionFailures": "null",
    "minPayoutCreditTotal": "0001",
    "maxPayoutCreditTotal": "null",
    "minPayoutDebitTotal": "-0001",
    "maxPayoutDebitTotal": "null",
    "minAvailableFunds": "null",
    "minStatementDebitPayoutDelay": "5",
    "minFundsPayoutTotal": "500",
    "minPayoutDelay": "3",
    "minFirstPayoutDelay": "3",
    "payoutDelayIncludeOffDays": "0",
    "payoutIncludePending": "0",
    "amexEnabled": "0",
    "optBlueEnabled": "0",
    "discoverEnabled": "0",
    "discoverAcquiredEnabled": "0",
    "mc3dsEnabled": "0",
    "visa3dsEnabled": "0",
    "amex3dsEnabled": "0",
    "discover3dsEnabled": "0",
    "eCheckEnabled": "0",
    "fundingEnabled": "0",
    "debtRepaymentEnabled": "0",
    "verifyDisabled": "0",
    "verifyForBoardingNotRequired": "0",
    "verifyForPayoutNotRequired": "0",
    "refundReleasesReserve": "0",
    "vendorFeesEnabled": "0",
    "vendorFeesExternal": "0",
    "visaMisuseSettlement": "10",
    "visaMisuseTravelAutoSettlement": "20",
    "visaMisuseCardPresentReversal": "24",
    "visaMisuseCardNotPresentReversal": "168",
    "mcMisuseSettlement": "120",
    "minEcheckCaptureDelay": "0",
    "minDebitProcessingDelay": "5",
    "minBoardingOwnership": "0",
    "boardingExemptionsDisabled": "0",
    "mcMisuseCardPresentReversal": "24",
    "mcMisuseCardNotPresentReversal": "72",
    "mcMisuseTravelAutoReversal": "480",
    "boardingDisabled": "0",
    "autoReboardDays": "60",
    "surchargeEnabled": "0",
    "mcInstantPayoutsEnabled": "0",
    "visaInstantPayoutsEnabled": "0",
    "mcInstantPayoutMin": "0",
    "mcInstantPayoutMax": "7500000",
    "visaInstantPayoutMin": "0",
    "visaInstantPayoutMax": "5000000",
    "sameDayPayoutsEnabled": "0",
    "applePayEnabled": "0",
    "googlePayEnabled": "0",
    "sameDayPayoutsDailyMax": "null",
    "minSameDayPayoutCreditTotal": "null",
    "maxSameDayPayoutCreditTotal": "null",
    "minSameDayPayoutDebitTotal": "null",
    "maxSameDayPayoutDebitTotal": "null",
    "accountUpdaterEnabled": "0",
    "updateAllTokensEnabled": "0",
    "accountUpdaterFrequency": "30",
    "minDebitedAvailableFunds": "0",
    "getParametersEnabled": "0",
    "payoutCutoffTime": "null",
    "declineNotificationEmail": "0",
    "decisionMicroserviceEnabled": "0",
    "holdMessagesDisabled": "0",
    "txnDecisionMicroserviceEnabled": "0",
    "omniTokenEnabled": "0",
    "passTokenEnabled": "0",
    "debitGracePeriod": "null",
    "negativeBalanceLimit": "null",
    "negativeBalanceEmail": "0",
    "positiveBalanceEmail": "0"
}

Note: All other non-applicable response parameters above are set with their default values.

Visit our API Documentation to read more about the other available response fields' descriptions.

See the descriptions below for the applicable response parameters.

...

Parameter

...

Description

...

Notes

...

id

...

The Org parameter configurations ID.

...

Recall this ID if you want to enable, change, or disable any individual org parameter.

...

created

...

The date and time at which this resource was created.

...

modified

...

The date and time at which this resource was modified.

...

creator

...

The identifier of the Login that created this resource.

...

modifier

...

The identifier of the Login that last modified this resource.

...

login

...

The Login that owns this resource.

...

org

...

The identifier of the Org resource that this Parameter resource is associated with.

...

autoTaxExemptEnabled

...

Whether to assume a transaction is tax-exempt if no tax is set for Level II processing.

...

Valid Values:

  • 0 - Disabled

  • 1 - Enabled

Inelgibile Merchant Types (MCCs) for Tax Exempt Level II Interchange Rates

...

Ineligible MCCs

...

Descriptions of Merchant Type

...

3000–3999

...

Airlines/Car Rental Companies/Hotels

...

4112

...

Passenger Railways

...

4411

...

Steamship and Cruise Lines

...

4468

...

Marinas, Marine Service, and Supplies

...

4511

...

Airlines and Air Carriers

...

4722

...

Travel Agencies and Tour Operators

...

5499

...

Misc Food Stores - Speciality Markets and Convenience

...

5541

...

Gas/Service Stations with/without Ancillary Services

...

5542

...

Automated Fuel Dispensers

...

5812

...

Eating Places and Restaurants

...

5814

...

Fast Food Restaurants

...

5962

...

Direct Marketing – Travel Related Arrangements Services (High Risk)

...

5966

...

Direct Marketing – Outbound Telemarketing Merchant (High Risk)

...

5967

...

Direct Marketing – Inbound Teleservices Merchant (High Risk)

...

5983

...

Fuel Dealers - Fuel, Oil, Wood, Coal, Lique

...

7011

...

Lodging – Hotels, Motels, and Resorts

...

7512

...

Automobile Rental Agency

...

7513

...

Truck & Utility Trailer Rentals

To s

...

titleSubmit Level III data using the Payrix API.

To submit Level III transaction data using the /txns Payrix API endpoint, send the following request:

Code Block
POST https://test-api.payrix.com/txns
Code Block
languagejson
{
   "merchant":"{yourMerchantID}",
   "payment":{
      "number":"{customerCardNumber}",
      "cvv":"{customerCardCVV}"
   }
   "expiration":"MMYY",
   "type":2,
   "order":"INVOICE#1",
   "total":7799,
   "tax":100,
   "items":[
      {
         "item":"Line Item #1",
         "description":"Line Item Description"
         "quantity":1,
         "price":7799,
         "um":"EACH",
         "commodityCode":"1111999",
         "total":5799,
         "discount":-2000,
         "productCode":"UPC12345"
      }
   ]
}

Note: Descriptions for Level II data shown here are available in the Submit Level II data using the Payrix API section above.

...

Required Parameters

...

Type

...

Description

...

Valid Values / Format

...

items

...

array of objects

...

The item or list of items associated with the transaction/order.

...

item

...

string

...

The line item name.

...

description

...

string

...

The line item description.

...

Max length: 500 characters

...

quantity

...

integer

...

The total number of units for the line item.

...

price

...

number

...

The individual line item price.

...

um

...

string

...

The line item units of measure.

Example: “pounds”, “days”, “hours”.

...

Max length: 100 characters

...

commodityCode

...

string

...

The commodity code for this Item.

...

Max length:12 characters

...

total

...

integer

...

The total price for the line item.

...

This field is specified as an integer in cents

...

discount

...

integer

...

The discount for the line item.

...

This field is specified as an integer in cents.

...

productCode

...

string

...

The product code for this Item such as UPC, catalog number, or inventory number.

PayFields

PayFields is a unique offering that seamlessly integrates a payment gateway into your existing HTML website package and eliminates PCI Compliance risk. Submitting Level II

...

titleSubmit Level II data using PayFields.

Step 1: Under your <script> tag containing PayFields.fields add the following to add new Tax and Order fields to the PayFields

Code Block
<script>
  PayFields.fields = [
    {type: "number", element: "#number"},
    {type: "cvv", element: "#cvv"},
    {type: "name", element: "#name"},
    {type: "address", element: "#address"},
    {type: "expiration", element: "#expiration"}
    {type: "tax", element: "#tax"}
    {type: "order", element: "#order"}
  ];
</script>

Step 2: Under a new <script> tag, add the API Key, Merchant ID, and Transaction Amount:

Code Block
languagehtml
<script>
  PayFields.config.apiKey = "ab123c4def5g6hijkl7890m12345no6p";
  PayFields.config.merchant = "t1_mer_123ab4c567defg8h90123i45";
  PayFields.config.amount = {Transaction Amount};
  <!---- continued by Step 3 ----> 

Step 43: Under the same <script> tag as Step 2, add the Order Field, Tax Field, and Billing Address:

Code Block
languagejs
<!---- preceeded by Step 2 ---->
  PayFields.config.order = {order number};
  PayFields.config.tax = {tax number};
  PayFields.config.billingAddress = {
    address: '123 Madison Street',
    city: 'New York',
    state: 'NY',
    zip: '12345',
    email: '',
    phone: '5555555555',
    address2: 'Suite 555',
    company: 'Essential Co',
    country: 'USA'
  };
  PayFields.config.invoiceResult = {Invoice Object}
</script>

Step 4: Add each new applicable field to your HTML file using the following <div> format:

Code Block
<div>     
  <label for="tax">Tax:</label>     
    <!-- Div for tax field iframe  -->     
    <div id="tax" class="form-row">     
    </div>   
</div>

Result: Example HTML File

Code Block
languagehtml
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <script type="text/javascript" src="https://test-api.payrix.com/payFieldsScript"></script>
  <title>PayFields Test</title>
</head>
<body>
<input type="button" id="submit" value="Pay"></input>
  <!-- Button needed for PayFrame -->
<script>
    PayFields.button = {element: "#submit", value: "Pay"};
</script>
<script>
  PayFields.fields = [
    {type: "number", element: "#number"},
    {type: "cvv", element: "#cvv"},
    {type: "name", element: "#name"},
    {type: "address", element: "#address"},
    {type: "expiration", element: "#expiration"},
    {type: "tax", element: "#tax"},
    {type: "order", element: "#order"},
  ];
</script>
<script>
  PayFields.config.apiKey = "ab123c4def5g6hijkl7890m12345no6p";
  PayFields.config.merchant = "t1_mer_123ab4c567defg8h90123i45";
  PayFields.config.amount = 500;
  PayFields.config.order = {orderNumber};
  PayFields.config.tax = {taxNumber};
  PayFields.config.billingAddress = {
    address: '123 Madison Street',
    city: 'New York',
    state: 'NY',
    zip: '12345',
    email: '',
    phone: '5555555555',
    address2: 'Suite 555',
    company: 'Essential Co',
    country: 'USA'
  };
  PayFields.config.invoiceResult = {invoiceObject}
</script>
</body>
</html>

...

titleSubmit Level III data using PayFields.

Step 1: Complete Steps 1-3 above.

Step 2: Under your <script> tag containing PayFields.fields add the following to include Discount, Shipping, Duty, and Item [details] Objects fields in your PayField:

Code Block
languagehtml
<script>
  PayFields.fields = [
    {type: "discount", element: "#discount"},
    {type: "shipping", element: "#shipping"},
    {type: "duty", element: "#duty"},
    {type: "items", element: "#items"}    
  ];
</script>

Step 3: Under your <script> tag containing PayFields.config add the following:

Code Block
<script>
  PayFields.config.discount = {discount number};
  PayFields.config.shipping = {shipping number};
  PayFields.config.duty = {duty number};
  PayFields.config.items = {items Object}
</script>

Step 4: Add each new applicable field to your HTML file using the following <div> format:

Code Block
<div>     
  <label for="tax">Tax:</label>     
    <!-- Div for tax field iframe  -->     
    <div id="tax" class="form-row">     
    </div>   
</div>

Result: Example HTML File

Code Block
languagehtml
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <script type="text/javascript" src="https://test-api.payrix.com/payFieldsScript"></script>
  <title>PayFields Test</title>
</head>
<body>
<input type="button" id="submit" value="Pay"></input>
  <!-- Button needed for PayFrame -->
<script>
    PayFields.button = {element: "#submit", value: "Pay"};
</script>
<script>
  PayFields.fields = [
    {type: "number", element: "#number"},
    {type: "cvv", element: "#cvv"},
    {type: "name", element: "#name"},
    {type: "address", element: "#address"},
    {type: "expiration", element: "#expiration"},
    {type: "tax", element: "#tax"},
    {type: "order", element: "#order"},
    {type: "discount", element: "#discount"},
    {type: "shipping", element: "#shipping"},
    {type: "duty", element: "#duty"},
    {type: "items", element: "#items"}
  ];
</script>
<script>
  PayFields.config.apiKey = "ab123c4def5g6hijkl7890m12345no6p";
  PayFields.config.merchant = "t1_mer_123ab4c567defg8h90123i45";
  PayFields.config.amount = 500;
  PayFields.config.order = {orderNumber};
  PayFields.config.tax = {taxRatePercent};
  PayFields.config.discount = {discountNumber};
  PayFields.config.shipping = {shippingNumber};
  PayFields.config.duty = {duty number};
  PayFields.config.items = {items Object};
  PayFields.config.billingAddress = {
    address: '123 Madison Street',
    city: 'New York',
    state: 'NY',
    zip: '12345',
    email: '',
    phone: '5555555555',
    address2: 'Suite 555',
    company: 'Essential Co',
    country: 'USA'
  };
  PayFields.config.invoiceResult = {invoiceObject}
</script>
</body>
</html>