Versions Compared

Key

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

...

Level I

Basic transaction data like card number and transaction amount that is required for standard consumer transactions and provides provide standard interchange rates.

Level II

More detailed transaction data, like a sales tax that , is required for B2B transactions and provides lower interchange rates.

Level III

Comprehensive transaction information like line item details and shipping, that is required for high-value (large ticket) B2B transaction transactions and provides the lowest interchange rates.

...

Info

Note: Each additional level of data submission, Level I to Level II to Level III data, requires all data from the previous level in addition to the new data required.

Example: In order to To submit Level III data, all Level I and Level II data requirements must already be met to qualify for Level III interchange rates.

...

All transactions, regardless of card brand, must meet these data requirements in order to qualify for basic interchange or Level I:

...

Each card brand will feature its own list of requirements necessary to receive interchange rates by using Level II or Level III data to qualify on its card network. Each major card brand - Visa, MasterCard, American Express, and Discover - has been listed below with individual details to clearly explain their requirements.

...

  1. Merchants must process 1 to 6 million Visa transactions per year.

  2. Merchants must process between $20,000 and $1,000,000 in annual e-commerce transactions per year.

  3. Merchants must submit the following forms to the Visa Verification team:

    1. Annual Attestation of Compliance (AOC)

    2. Annual Self-Assessment Questionnaire (SAQ)

    3. Quarterly Network Scan by an Approved Scan Vendor (ASV2)

...

Expand
titleVisa - Level II Data Requirements

Level II data must include all Level I data requirements in addition to the requirements listed below.

Sales Tax and Order Information - Sales tax information for each transaction including:

Sales Tax Amount

The total amount of sales tax applied to the transaction.

Note

Warning: The tax amount must be between 0.1% - 22% of the payment total to qualify. This is submitted using either a Sale or a Capture transaction type.

Sales Tax Indicator

Specify whether sales tax is included in the transaction amount or not.

Order Number

A unique identifier used by the merchant to locate the specific transaction information.

Note: “Order Number” and “Invoice Number” are interchangeable terms for Level II and Level III data submissionsubmissions.

Merchant Information - Details about the Merchant selling the product or service items including:

Customer Code

The unique identifier assigned to customers or entities within the Merchant’s records.

Merchant Zip Code

The zip code where the Merchant’s business is located.

Merchant TIN

The tax identification number issued to the Merchant by their governmental tax agency.

...

  1. Merchants must process a combined total of 1 to 6 million MasterCard & Maestro transactions per year.

  2. Merchants must process between $20,000 and $1,000,000 in annual e-commerce transactions per year.

  3. Merchants must submit the following forms to the MasterCard:

    1. Annual Attestation of Compliance (AOC)

    2. Annual Self-Assessment Questionnaire (SAQ)

    3. Quarterly Network Scan by an Approved Scan Vendor (ASV2)

...

Expand
titleMasterCard - Level II Data Requirements

Level II data must include all Level I data requirements in addition to the requirements listed below.

Sales Tax Information - Sales tax information for each transaction including:

Sales Tax Amount

The total amount of sales tax applied to the transaction.

Note

Warning: The tax amount must be between 0.1% - 30% of the payment total to qualify. This is submitted using either a Sale or a Capture transaction type.

Sales Tax Indicator

Specify whether sales tax is included in the transaction amount or not.

Order Number

A unique identifier used by the merchant to locate the specific transaction information.

Note: “Order Number” and “Invoice Number” are interchangeable terms for Level II and Level III data submissionsubmissions.

Merchant Information - Details about the Merchant selling the product or service items including:

Customer Code

The unique identifier assigned to customers or entities within the Merchant’s records.

Merchant TIN

The tax identification number issued to the Merchant by their governmental tax agency.

...

Expand
titleMasterCard - Additional Qualification Requirements

In addition to the interchange data requirements above, the MasterCard card network has specific additional requirements to qualify:

  • Clearing must follow an authorization request within 3 business days (no more than 2 days between auth Authorization and captureCapture).

Expand
titleMasterCard - Large Ticket Requirements

Large Ticket transactions refer to transactions with a larger total dollar amount. Based Your interchange rate may change based on the transaction amount , your interchange rate may change to offer better pricing from MasterCard’s large ticket program for high-dollar-value transactions.

In addition to the data requirements above, the MasterCard network has specific additional requirements to qualify for Large Ticket interchange pricing:

  • Clearing must follow authorization within 2 business days (no more than 1 day between auth and capture).

Note

Warning: The following card types are ineligible for MasterCard’s large ticket program:

  • MAP - Mastercard Commercial Payments Account

  • MAQ - Mastercard Prepaid Commercial Payments Account

  • MEF - Mastercard Electronic Payment Account

...

Warning

Unavailable: American Express does not offer discounts or changes in interchanges interchange rates for Level III data submissions

...

Warning

Unavailable: American Express does not offer any discounts or changes in interchanges interchange rates for Level II or Level III data submissions.

...

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 is able to 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.

...

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.

Expand
titleEnable Level II Tax Exempt Status using the Portal

Non-Profit and Governmental entities that qualify for a 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%.

Tip

Warning: 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.

...

Expand
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,
   "tax":100,
}
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 amount of the total sum of this Transaction that is made up of taxTransaction’s tax amount.

This field is specified as an integer in cents.

Expand
titleEnable Level II Tax Exempt Status using the Payrix API

Non-Profit and Governmental entities that qualify for a 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%.

Tip

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",
  }

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 tax-exempt if no tax is set for Level II processing.

Valid Values:

  • 0 - Disabled

  • 1 - Enabled

Expand
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.

...

<!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> <div id="submit"> <!-- Button needed for PayFrame --> </div> <script> PayFields.button = {element: "#submit", value: "Pay"}; </script> <script> PayFields.fields = [
Expand
titleSubmit Level II data using PayFields.

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

Code Block
languagehtml
<body>
  <div>
        <label for="tax">Tax Rate:</label>
        <div id="number" value="yourTaxRate"></div>
  </div>
  <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>
</body>
Code Block
  <body>
    
  
Code Block
languagehtml

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 3: 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>

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>
Expand
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: "dicount", element: "#dicount"},
    {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.dicount = {discount number};
  PayFields.config.shipping = {shipping number};
  PayFields.config.duty = {duty number};
  PayFields.config.items = {items Object}
</script>

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: "
number
dicount", element: "
#number
#dicount"},
    {type: "
cvv
shipping", element: "
#cvv
#shipping"},
    {type: "
name
duty", element: "
#name
#duty"},
    {type: "
address
items", element: "
#address
#items"}
,

  ];
</script>
<script>
  
{type:
PayFields.config.apiKey = "
expiration", element: "#expiration"} {type: "tax", element: "#tax"} {type: "order", element: "#order"} ]; </script> <script> PayFields.config.apiKey = "ab123c4def5g6hijkl7890m12345no6p"
ab123c4def5g6hijkl7890m12345no6p";
  PayFields.config.merchant = "t1_mer_123ab4c567defg8h90123i45";
  PayFields.config.amount = 500;
  PayFields.config.order = {orderNumber};
  PayFields.config.tax = {taxRatePercent};
  PayFields.config.dicount = {discountNumber};
  PayFields.config.shipping = {shippingNumber};
  PayFields.config.duty = {duty number};
  PayFields.config.
merchant
items = 
"t1_mer_123ab4c567defg8h90123i45"
{items Object};
  PayFields.config.
amount
billingAddress = {
500;
 
</script>
 
<script>
  
PayFields.customizations = {
address: '123 Madison Street',
    
style
city: 
{
'New York',
    
".input": {
state: 'NY',
    zip: '12345',
    
color
email: 
"#555"
'',
    phone: '5555555555',
  
font:
 
"14px
 
Arial, Helvetica, sans-serif"
address2: 'Suite 555',
    company: 'Essential Co',
 
background:
 
"white"
  country: 'USA'
  
};
  PayFields.config.invoiceResult = {invoiceObject}
}
</script>
</body>
</html>