---
updatedAt: 2026-04-27T17:34:59.000Z
agentTools:
  projectIndex: https://developers.bluesnap.com/llms.txt
---

# Level 2/3 Data

Card processing is categorized into levels, based on the amount of data required to process the transaction. Enhanced data levels such as Level 2/3 require additional information to process the transaction. For example, corporate and government agencies require detailed transaction data to monitor and track expenses. Level 2/3 data is used to qualify the transaction for lower interchange fees.

BlueSnap's Payment API supports Level 2/3 data processing for all currencies, enabling you to expand your business-to-business (B2B) and business-to-government (B2G) sales opportunities.

<Callout icon="📘" theme="info">
  **Note**

  Always verify that you are sending the correct Level 2/3 data according to the issuer requirements. The issuer determines whether the transaction qualifies for a lower interchange fee. BlueSnap only validates the format of the transmitted data, not whether the data meets issuer requirements.
</Callout>

## Before you Begin

<Callout icon="🚧" theme="warn">
  **Important**

  * Level 2/3 Data is supported for select configurations. Contact [Merchant Support](https://bluesnap.zendesk.com/hc/en-us/requests/new?ticket_form_id=360000127087) for more details.
  * Level 2 and Level 3 interchange rates are only possible on Commercial, Corporate, Fleet, and Purchase Cards. Consumer and business cards are not eligible for interchange rates.
</Callout>

Review the following requirements and restrictions before you process transactions with Level 2/3 data:

* Do not include the pipe character (`|`) in a property value.
* If you do not know the card type, pass as many `level3Data` properties as possible.
* BlueSnap truncates any request property value that exceeds the maximum length.
* If BlueSnap detects that the card does not support Level 2/3 data, then the `level3Data` properties are not sent in the request.
* If you send Level 3 data in both Auth Only and Capture requests, the Level 3 data from the Auth Only request is ignored.
* If you send Level 3 data in the Auth Only request but not the Capture request, BlueSnap includes the Level 3 data from the Auth Only request with the Capture request.

  **Note**: If the Capture amount is different than the Auth Only amount (such as in partial capture), you must pass the updated Level 3 data in the Capture request to prevent amount mismatch errors.
* If you manage your own subscriptions, you must send `level3Data` for each charge.

## Data Level Support

| Card brand              | Level 2 | Level 3 |
| :---------------------- | :------ | :------ |
| MasterCard              | Yes     | Yes     |
| Visa                    | Yes     | Yes     |
| American Express (Amex) | Yes     | No      |

<Callout icon="📘" theme="info">
  **Notes**

  * **Visa** has replaced its Level 2/3 program with the **Commercial Enhanced Data Program (CEDP)**.  
    CEDP validates Level 2/3 transaction data and assigns merchants a status of `Verified` or `Not Verified`, which affects interchange eligibility. For details, refer to [Visa Commercial Enhanced Data Program (CEDP)](./visa-cedp).
  * **Amex** also supports **Level 2 with TAA (Transaction Advice Addendum)**. This is an Amex-specific level that contains item data in addition to Level 2 properties. For details, refer to [American Express](#american-express) .
</Callout>

## Request Properties

Request properties are categorized as "order-level" and "item-level", depending on whether they refer to the entire order or individual items in the order. Item-level properties are nested under order-level properties. For example, this is the basic structure of a JSON request that contains both order- and item-level properties:

```json
{
  "cardTransactionType": "CAPTURE",
  "transactionId": "12345678",
  "level3Data": {
    // Order-level properties,
    "level3DataItems": [
      {
        // Item-level properties
      }
    ]
  }
}
```

### MasterCard

The following sections describe the Level 2 and Level 3 data required by MasterCard.

#### Level 2 Properties

MasterCard requires the following Level 2 order-level properties:

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Property (JSON / XML)
      </th>

      <th>
        Mandatory
      </th>

      <th>
        Notes
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `customerReferenceNumber`<br /> `customer‑reference‑number`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces, we replace the value with `NA`.
      </td>
    </tr>

    <tr>
      <td>
        `salesTaxAmount`

        `sales‑tax‑amount`
      </td>

      <td>
        Yes
      </td>

      <td>
        Pass 0 if tax exempt and you are using one of the following MCCs: 4111, 4131, 4215, 4784, 5499, 8211, 8220, 8398, 8661, 9211, 9222, 9311, 9399, 9402.

        If not, you must pass a sales tax value between 0.1% and 30%.
      </td>
    </tr>
  </tbody>
</Table>

#### Level 3 Properties

##### Order-level

For a description of each property, refer to the following:

* [level3Data](https://developers.bluesnap.com/v8976-JSON/reference/level3data) (JSON)
* [level-3-data](https://developers.bluesnap.com/v8976-XML/reference/level-3-data) (XML)

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Property (JSON / XML)
      </th>

      <th>
        Mandatory
      </th>

      <th>
        Notes
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `customerReferenceNumber`<br /> `customer‑reference‑number`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces, we replace the value with `NA`.
      </td>
    </tr>

    <tr>
      <td>
        `salesTaxAmount`  
        `sales‑tax‑amount`
      </td>

      <td>
        Yes
      </td>

      <td>
        If Transaction is Tax Exempt, Zero fill.
      </td>
    </tr>

    <tr>
      <td>
        `freightAmount`  
        `freight-amount`
      </td>

      <td>
        No
      </td>

      <td>
        If a value is sent and the value we receive is all spaces, we replace the value with all zeros.
      </td>
    </tr>

    <tr>
      <td>
        `dutyAmount`  
        `duty‑amount`
      </td>

      <td>
        No
      </td>

      <td>
        If a value is sent and the value we receive is all spaces, we replace the value with all zeros.
      </td>
    </tr>

    <tr>
      <td>
        `destinationZipCode`  
        `destination‑zip‑code`
      </td>

      <td>
        No
      </td>

      <td>
        If a value is sent and the value we receive is all spaces, we replace the value with 0.
      </td>
    </tr>

    <tr>
      <td>
        `destinationCountryCode`  
        `destination‑country‑code`
      </td>

      <td>
        No
      </td>

      <td>
        If a value is sent and the value is not valid, we replace the value with all spaces.
      </td>
    </tr>

    <tr>
      <td>
        `shipFromZipCode`  
        `ship‑from‑zip‑code`
      </td>

      <td>
        Yes
      </td>

      <td>
        Must be the merchant's business zip code.
      </td>
    </tr>

    <tr>
      <td>
        `discountAmount`  
        `discount‑amount`
      </td>

      <td>
        No
      </td>

      <td>
        If a value is sent and the value we receive is not a valid value (numeric 0–9), we replace the value with all zeros.
      </td>
    </tr>

    <tr>
      <td>
        `taxAmount`  
        `tax‑amount`
      </td>

      <td>
        No
      </td>

      <td>
        If the value is sent and it is not valid, we replace the value with all zeros. Also, if any value is sent, even all zeros, Tax Rate is required.
      </td>
    </tr>

    <tr>
      <td>
        `taxRate`  
        `tax‑rate`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the Tax Amount is present — If the value we receive is not a valid value, we replace the value with all zeros.
      </td>
    </tr>

    <tr>
      <td>
        `level3DataItem`  
        `level‑3‑data‑item`
      </td>

      <td>
        Yes
      </td>

      <td>
        Container for the data item properties shown below.
      </td>
    </tr>
  </tbody>
</Table>

#### Item-level

You can pass the following properties for each item. A maximum of 97 line items is supported. If you send more than 97 line items in the request, the first 97 will be accepted and the rest will be ignored.

For a description of each property, refer to the following:

* [level3DataItems](https://developers.bluesnap.com/v8976-JSON/reference/level3dataitems) (JSON)
* [level-3-data-items](https://developers.bluesnap.com/v8976-XML/reference/level-3-data-item) (XML)

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Property (JSON / XML)
      </th>

      <th>
        Mandatory
      </th>

      <th>
        Notes
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `lineItemTotal` `line‑item‑total`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces or all zeros, we replace the value with 1.
      </td>
    </tr>

    <tr>
      <td>
        `commodityCode`  
        `commodity‑code`
      </td>

      <td>
        No
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        `description`  
        `description`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces or all zeros, we replace the value with NA.
      </td>
    </tr>

    <tr>
      <td>
        `discountAmount`  
        `discount‑amount`
      </td>

      <td>
        No
      </td>

      <td>
        If a value is sent and the value we receive is not a valid value (numeric 0–9), we replace the value with all zeros.
      </td>
    </tr>

    <tr>
      <td>
        `discountIndicator`  
        `discount‑indicator`
      </td>

      <td>
        No
      </td>

      <td>
        If the value is not Y or N, we replace the value with N.
      </td>
    </tr>

    <tr>
      <td>
        `grossNetIndicator`  
        `gross‑net‑indicator`
      </td>

      <td>
        No
      </td>

      <td>
        If the value is not Y or N, we replace the value with N.
      </td>
    </tr>

    <tr>
      <td>
        `productCode`  
        `product‑code`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces or all zeros, we replace the value with NA.
      </td>
    </tr>

    <tr>
      <td>
        `itemQuantity`  
        `item‑quantity`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces or all zeros, we replace the value with 1.
      </td>
    </tr>

    <tr>
      <td>
        `taxAmount`  
        `tax‑amount`
      </td>

      <td>
        No
      </td>

      <td>
        If the value is sent and it is not valid, we replace the value with all zeros. Also, if any value is sent, even all zeros, Tax Rate is required.
      </td>
    </tr>

    <tr>
      <td>
        `taxRate`  
        `tax‑rate`
      </td>

      <td>
        Yes, if `Tax Amount` is present
      </td>

      <td>
        If the value we receive is not a valid value, we replace the value with all zeros.
      </td>
    </tr>

    <tr>
      <td>
        `taxType`  
        `tax‑type`
      </td>

      <td>
        No
      </td>

      <td>
        If a value is sent and the value we receive is not a valid value, we replace the value with all spaces.
      </td>
    </tr>

    <tr>
      <td>
        `unitOfMeasure`  
        `unit‑of‑measure`
      </td>

      <td>
        No
      </td>

      <td>
        If the value we receive is all spaces or all zeros, we replace the value with NA.
      </td>
    </tr>
  </tbody>
</Table>

### Visa

The following sections describe the Level 2 and Level 3 data required by Visa. Refer to [Visa Commercial Enhanced Data Program (CEDP)](./visa-cedp-error-codes) to use that program instead.

#### Level 2 Properties

Visa requires the following Level 2 order-level properties:

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Property (JSON / XML)
      </th>

      <th>
        Mandatory
      </th>

      <th>
        Notes
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `customerReferenceNumber`<br /> `customer‑reference‑number`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces, we replace the value with `NA`.
      </td>
    </tr>

    <tr>
      <td>
        `salesTaxAmount`  
        `sales‑tax‑amount`
      </td>

      <td>
        Yes
      </td>

      <td>
        If Transaction is Tax Exempt, Zero fill.  
        This value must be between 0.1% and 22% of the purchase price.
      </td>
    </tr>
  </tbody>
</Table>

#### Level 3 Properties

##### Order-level

For a description of each property, refer to the following:

* [level3Data](https://developers.bluesnap.com/v8976-JSON/reference/level3data) (JSON)
* [level-3-data](https://developers.bluesnap.com/v8976-XML/reference/level-3-data) (XML)

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Property (JSON / XML)
      </th>

      <th>
        Mandatory
      </th>

      <th>
        Notes
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `customerReferenceNumber`<br /> `customer‑reference‑number`
      </td>

      <td>
        No
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        `salesTaxAmount`  
        `sales‑tax‑amount`
      </td>

      <td>
        No
      </td>

      <td>
        If Transaction is Tax Exempt, Zero fill.
      </td>
    </tr>

    <tr>
      <td>
        `freightAmount`  
        `freight‑amount`
      </td>

      <td>
        No
      </td>

      <td>
        If a value is sent and the value we receive is all spaces, we replace the value with all zeros.
      </td>
    </tr>

    <tr>
      <td>
        `dutyAmount`  
        `duty‑amount`
      </td>

      <td>
        No
      </td>

      <td>
        If a value is sent and the value we receive is all spaces, we replace the value with all zeros.
      </td>
    </tr>

    <tr>
      <td>
        `destinationZipCode`  
        `destination‑zip‑code`
      </td>

      <td>
        No
      </td>

      <td>
        We do not change the value.
      </td>
    </tr>

    <tr>
      <td>
        `destinationCountryCode`  
        `destination‑country‑code`
      </td>

      <td>
        No
      </td>

      <td>
        If a value is sent and the value we receive is not a valid value, we replace the value with all spaces.
      </td>
    </tr>

    <tr>
      <td>
        `shipFromZipCode`  
        `ship‑from‑zip‑code`
      </td>

      <td>
        No
      </td>

      <td>
        We do not change the value.
      </td>
    </tr>

    <tr>
      <td>
        `discountAmount`  
        `discount‑amount`
      </td>

      <td>
        No
      </td>

      <td>
        If a value is sent and the value we receive is not a valid value (numeric 0–9), we replace the value with all zeros.
      </td>
    </tr>

    <tr>
      <td>
        `taxAmount`  
        `tax‑amount`
      </td>

      <td>
        No
      </td>

      <td>
        If the value is sent and it is not valid, we replace the value with all zeros. Also, if any value is sent, even all zeros, Tax Rate is required.
      </td>
    </tr>

    <tr>
      <td>
        `taxRate`  
        `tax‑rate`
      </td>

      <td>
        Yes, if `Tax Amount` is present
      </td>

      <td>
        If the value we receive is not a valid value, we replace the value with all zeros.
      </td>
    </tr>

    <tr>
      <td>
        `level3DataItem`  
        `level‑3‑data‑item`
      </td>

      <td>
        Yes
      </td>

      <td>
        Container for the data item properties shown below. Refer to details below.
      </td>
    </tr>
  </tbody>
</Table>

##### Item-level

You can pass the following properties for each item. A maximum of 97 line items is supported. If you send more than 97 line items in the request, the first 97 will be accepted and the rest will be ignored.

For a description of each property, refer to the following:

* [level3DataItems](https://developers.bluesnap.com/v8976-JSON/reference/level3dataitems) (JSON)
* [level-3-data-items](https://developers.bluesnap.com/v8976-XML/reference/level-3-data-item) (XML)

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Property (JSON / XML)
      </th>

      <th>
        Mandatory
      </th>

      <th>
        Notes
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `lineItemTotal` `line‑item‑total`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces or all zeros, we replace the value with 1.
      </td>
    </tr>

    <tr>
      <td>
        `commodityCode`  
        `commodity‑code`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces or all zeros, we replace the value with 00101.
      </td>
    </tr>

    <tr>
      <td>
        `description`  
        `description`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces or all zeros, we replace the value with NA.
      </td>
    </tr>

    <tr>
      <td>
        `discountAmount`  
        `discount‑amount`
      </td>

      <td>
        No
      </td>

      <td>
        If a value is sent and the value we receive is not a valid value (numeric 0–9), we replace the value with all zeros.
      </td>
    </tr>

    <tr>
      <td>
        `productCode`  
        `product‑code`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces or all zeros, we replace the value with NA.
      </td>
    </tr>

    <tr>
      <td>
        `itemQuantity`  
        `item‑quantity`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces or all zeros, we replace the value with 1.
      </td>
    </tr>

    <tr>
      <td>
        `taxAmount`  
        `tax‑amount`
      </td>

      <td>
        No
      </td>

      <td>
        If the value is sent and it is not valid, we replace the value with all zeros. Also, if any value is sent, even all zeros, Tax Rate is required.
      </td>
    </tr>

    <tr>
      <td>
        `taxRate`  
        `tax‑rate`
      </td>

      <td>
        Yes, if `Tax Amount` is present
      </td>

      <td>
        If the value we receive is not a valid value, we replace the value with all zeros.
      </td>
    </tr>

    <tr>
      <td>
        `unitCost`  
        `unit‑cost`
      </td>

      <td>
        Yes
      </td>

      <td>
        If the value we receive is all spaces or all zeros, we replace the value with 1.
      </td>
    </tr>

    <tr>
      <td>
        `unitOfMeasure`  
        `unit‑of‑measure`
      </td>

      <td>
        No
      </td>

      <td>
        If the value we receive is all spaces or all zeros, we replace the value with NA.
      </td>
    </tr>
  </tbody>
</Table>

### American Express

The following table outlines the required properties for **Amex Level 2 with TAA (Transaction Advice Addendum)**.  This is an Amex-specific level that contains item data (such as item description and quantity) in addition to Level 2 fields.  Only the following fields are applicable:

#### Order-level

For a description of each property, refer to the following:

* [level3Data](https://developers.bluesnap.com/v8976-JSON/reference/level3data) (JSON)
* [level-3-data](https://developers.bluesnap.com/v8976-XML/reference/level-3-data) (XML)

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Property (JSON / XML)
      </th>

      <th>
        Mandatory
      </th>

      <th>
        Notes
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `customerReferenceNumber`<br /> `customer‑reference‑number`
      </td>

      <td>
        Yes
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        `salesTaxAmount`  
        `sales‑tax‑amount`
      </td>

      <td>
        Yes
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        `destinationZipCode`  
        `destination‑zip‑code`
      </td>

      <td>
        No
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        `level3DataItem`  
        `level‑3‑data‑item`
      </td>

      <td>
        Yes
      </td>

      <td>
        Container for the data item properties shown below.
      </td>
    </tr>
  </tbody>
</Table>

#### Item-level

You can pass the following properties for each item. A maximum of 97 line items is supported. If you send more than 97 line items in the request, the first 97 will be accepted and the rest will be ignored.

For a description of each property, refer to the following:

* [level3DataItems](https://developers.bluesnap.com/v8976-JSON/reference/level3dataitems) (JSON)
* [level-3-data-items](https://developers.bluesnap.com/v8976-XML/reference/level-3-data-item) (XML)

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Property (JSON / XML)
      </th>

      <th>
        Mandatory
      </th>

      <th>
        Notes
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `lineItemTotal` `line‑item‑total`
      </td>

      <td>
        No
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        `description`  
        `description`
      </td>

      <td>
        Yes
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        `itemQuantity`  
        `item‑quantity`
      </td>

      <td>
        No
      </td>

      <td>

      </td>
    </tr>
  </tbody>
</Table>

## Sending Level 3 Data Examples

Level 3 data is supported in Auth Capture, as well as in the Auth Only and Capture requests.

### JSON Examples

#### Auth Capture request and response

For additional details, refer to [Auth Capture](https://developers.bluesnap.com/v8976-JSON/reference/auth-capture) .

```json Auth Capture with Level 3 data - request
{
  "cardTransactionType": "AUTH_CAPTURE",
  "softDescriptor": "DescTest",
  "amount": 10.60,
  "currency": "USD",
  "cardHolderInfo": {
    "firstName": "test first name",
    "lastName": "test last name",
    "zip": "123456"
  },
  "creditCard": {
    "cardNumber": "4005 5192 0000 0004",
    "securityCode": "111",
    "expirationMonth": "09",
    "expirationYear": 2028
  },
  "level3Data": {
    "customerReferenceNumber": "1234A",
    "salesTaxAmount": 0.6,
    "freightAmount": 0,
    "dutyAmount": 0,
    "destinationZipCode": "12345",
    "destinationCountryCode": "us",
    "shipFromZipCode": "12345",
    "discountAmount": 0,
    "taxAmount": 0.6,
    "taxRate": 6.0,
    "level3DataItems": [{
      "lineItemTotal": 10.00,
      "description": "test_desc",
      "discountAmount": 0,
      "productCode": "test_code",
      "itemQuantity": 1.0,
      "taxAmount": 0.60,
      "taxRate": 6.0,
      "unitOfMeasure": "lb",
      "commodityCode": "123",
      "discountIndicator": "Y",
      "grossNetIndicator": "Y",
      "taxType": "test",
      "unitCost": 10.00
    }]
  }
}
```
```json Response
{
  "cardTransactionType": "AUTH_CAPTURE",
  "vendorsInfo": {},
  "transactionId": "1015836179",
  "softDescriptor": "BLS*DescTest",
  "amount": 10.60,
  "currency": "USD",
  "avsResponseCode": "G",
  "cardHolderInfo": {
    "firstName": "test first name",
    "lastName": "test last name",
    "zip": "123456"
  },
  "vaultedShopperId": 22391925,
  "creditCard": {
    "cardLastFourDigits": "0004",
    "cardType": "VISA",
    "cardSubType": "CREDIT",
    "cardCategory": "CORPORATE T&E"
  },
  "level3Data": {
    "customerReferenceNumber": "1234A",
    "salesTaxAmount": 0.6,
    "freightAmount": 0,
    "dutyAmount": 0,
    "destinationZipCode": "12345",
    "destinationCountryCode": "us",
    "shipFromZipCode": "12345",
    "discountAmount": 0,
    "taxAmount": 0.6,
    "taxRate": 6,
    "transactionProcessedWithL3dSupportedAcquirer": true,
    "level3DataItems": [{
      "lineItemTotal": 10,
      "commodityCode": "123",
      "description": "test_desc",
      "discountAmount": 0,
      "discountIndicator": "Y",
      "grossNetIndicator": "Y",
      "productCode": "test_code",
      "itemQuantity": 1,
      "taxAmount": 0.6,
      "taxRate": 6,
      "taxType": "test",
      "unitCost": 10,
      "unitOfMeasure": "lb"
    }]
  },
  "processingInfo": {
    "processingStatus": "success",
    "cvvResponseCode": "NR",
    "avsResponseCodeZip": "U",
    "avsResponseCodeAddress": "U",
    "avsResponseCodeName": "U"
  },
  "fraudResultInfo": {
    "deviceDataCollector": "N"
  }
}
```

#### Auth Only request and response

For details, refer to [Auth Only](https://developers.bluesnap.com/v8976-JSON/reference/auth-only).

```json Auth Only with Level 3 data - Request
{
  "cardTransactionType": "AUTH_ONLY",
  "softDescriptor": "DescTest",
  "amount": 10,
  "currency": "USD",
  "cardHolderInfo": {
    "firstName": "test first name",
    "lastName": "test last name"
  },
  "creditCard": {
    "cardNumber": 4012000033330026,
    "securityCode": 111,
    "cardType": "VISA",
    "expirationMonth": "09",
    "expirationYear": 2028
  },
  "level3Data": {
    "customerReferenceNumber": "test",
    "salesTaxAmount": 87,
    "freightAmount": 10,
    "dutyAmount": 1,
    "destinationZipCode": "12345",
    "destinationCountryCode": "us",
    "shipFromZipCode": "12345",
    "discountAmount": 10,
    "vatTaxAmount": 3,
    "vatTaxRate": 3,
    "level3DataItems": [
      {
        "lineItemTotal": 12377,
        "itemCommodityCode": "123",
        "description": "test_desc",
        "discountAmount": 1,
        "discountIndicator": "Y",
        "grossNetIndicator": "Y",
        "productCode": "test_code",
        "itemQuantity": 10,
        "vatTaxAmount": 3,
        "vatTaxRate": 3,
        "taxTypeApplied": "test",
        "unitCost": 7,
        "unitOfMeasure": "usd"
      }
    ]
  }
}
```
```json Response
{
  "cardTransactionType": "AUTH_ONLY",
  "transactionId": "38550326",
  "softDescriptor": "BLS*DescTest",
  "amount": 10.0,
  "usdAmount": 10.0,
  "currency": "USD",
  "avsResponseCode": "G",
  "cardHolderInfo": {
    "firstName": "test first name",
    "lastName": "test last name"
  },
  "vaultedShopperId": 19590368,
  "creditCard": {
    "cardLastFourDigits": "0026",
    "cardType": "VISA",
    "binCategory": "CONSUMER",
    "binNumber": "401200",
    "expirationMonth": "09",
    "expirationYear": "2023"
  },
  "level3Data": {
    "customerReferenceNumber": "test",
    "salesTaxAmount": 87,
    "freightAmount": 10,
    "dutyAmount": 1,
    "destinationZipCode": "12345",
    "destinationCountryCode": "us",
    "shipFromZipCode": "12345",
    "discountAmount": 10,
    "transactionProcessedWithL3DSupportedAcquirer": true,
    "level3DataItems": [
      {
        "lineItemTotal": 12377,
        "description": "test_desc",
        "discountAmount": 1,
        "discountIndicator": "Y",
        "grossNetIndicator": "Y",
        "productCode": "test_code",
        "itemQuantity": 10,
        "unitCost": 7,
        "unitOfMeasure": "usd"
      }
    ]
  },
  "networkTransactionInfo": {
    "originalNetworkTransactionId": "751005569293609",
    "networkTransactionId": "751005569293609"
  },
  "processingInfo": {
    "processingStatus": "success",
    "cvvResponseCode": "MA",
    "authorizationCode": "055099",
    "avsResponseCodeZip": "U",
    "avsResponseCodeAddress": "U",
    "avsResponseCodeName": "U",
    "networkTransactionId": "751005569293609"
  },
  "fraudResultInfo": {
    "deviceDataCollector": "N"
  }
}
```

#### Capture request and response

For details, refer to [Capture](https://developers.bluesnap.com/v8976-JSON/reference/capture)

```json Capture with Level 3 Data - Request
{
  "cardTransactionType": "CAPTURE",
  "transactionId": "38550328",
  "level3Data": {
    "customerReferenceNumber": "test",
    "salesTaxAmount": 87,
    "freightAmount": 10,
    "dutyAmount": 1,
    "destinationZipCode": "12345",
    "destinationCountryCode": "us",
    "shipFromZipCode": "12345",
    "discountAmount": 10,
    "vatTaxAmount": 3,
    "vatTaxRate": 3,
    "level3DataItems": [
      {
        "lineItemTotal": 12377,
        "itemCommodityCode": "123",
        "description": "test_desc",
        "discountAmount": 1,
        "discountIndicator": "Y",
        "grossNetIndicator": "Y",
        "productCode": "test_code",
        "itemQuantity": 10,
        "vatTaxAmount": 3,
        "vatTaxRate": 3,
        "taxTypeApplied": "test",
        "unitCost": 7,
        "unitOfMeasure": "usd"
      }
    ]
  }
}
```
```json Response
{
  "cardTransactionType": "CAPTURE",
  "transactionId": "38550328",
  "softDescriptor": "BLS*BS",
  "amount": 20.0,
  "usdAmount": 20.0,
  "openToCapture": 0,
  "currency": "USD",
  "transactionApprovalDate": "01/05/2021",
  "transactionApprovalTime": "07:58:07",
  "cardHolderInfo": {
    "firstName": "John",
    "lastName": "Blue",
    "email": "test@bluesnap. com",
    "country": "us"
  },
  "vaultedShopperId": 19590370,
  "creditCard": {
    "cardLastFourDigits": "1111",
    "cardType": "VISA",
    "cardSubType": "CREDIT",
    "binCategory": "CONSUMER",
    "binNumber": "411111",
    "cardRegulated": "Y",
    "issuingBank": "JPMORGAN CHASE BANK, N.A.",
    "expirationMonth": "7",
    "expirationYear": "2023",
    "issuingCountryCode": "us"
  },
  "level3Data": {
    "customerReferenceNumber": "test",
    "salesTaxAmount": 87,
    "freightAmount": 10,
    "dutyAmount": 1,
    "destinationZipCode": "12345",
    "destinationCountryCode": "us",
    "shipFromZipCode": "12345",
    "discountAmount": 10,
    "transactionProcessedWithL3DSupportedAcquirer": true,
    "level3DataItems": [
      {
        "lineItemTotal": 12377,
        "description": "test_desc",
        "discountAmount": 1,
        "discountIndicator": "Y",
        "grossNetIndicator": "Y",
        "productCode": "test_code",
        "itemQuantity": 10,
        "unitCost": 7,
        "unitOfMeasure": "usd"
      }
    ]
  },
  "networkTransactionInfo": {
    "originalNetworkTransactionId": "751005573403769",
    "networkTransactionId": "751005573403769"
  },
  "processingInfo": {
    "processingStatus": "SUCCESS",
    "cvvResponseCode": "MA",
    "authorizationCode": "772239",
    "avsResponseCodeZip": "U",
    "avsResponseCodeAddress": "U",
    "avsResponseCodeName": "U",
    "networkTransactionId": "751005573403769"
  },
  "fraudResultInfo": {
    "deviceDataCollector": "N"
  }
}
```

### XML Examples

#### Auth Capture request and response

For additional details, refer to [Auth Capture](https://developers.bluesnap.com/v8976-XML/reference/auth-capture).

```xml Auth Capture with Level 3 data - request
<?xml version="1.0" encoding="UTF-8"?>
<card-transaction xmlns="http://ws.plimus.com">
  <card-transaction-type>AUTH_CAPTURE</card-transaction-type>
  <soft-descriptor>MYSTORE</soft-descriptor>
  <amount>10.60</amount>
  <currency>USD</currency>
  <card-holder-info>
    <first-name>test first name</first-name>
    <last-name>test last name</last-name>
    <zip>02453</zip>
    <country>us</country>
  </card-holder-info>
  <credit-card>
    <card-number>4005 5192 0000 0004</card-number>
    <security-code>111</security-code>
    <expiration-month>09</expiration-month>
    <expiration-year>2028</expiration-year>
  </credit-card>
  <level-3-data>
    <customer-reference-number>1234A</customer-reference-number>
    <sales-tax-amount>0.6</sales-tax-amount>
    <freight-amount>0</freight-amount>
    <duty-amount>0</duty-amount>
    <destination-zip-code>12345</destination-zip-code>
    <destination-country-code>us</destination-country-code>
    <ship-from-zip-code>12345</ship-from-zip-code>
    <discount-amount>0</discount-amount>
    <tax-amount>0.6</tax-amount>
    <tax-rate>6.0</tax-rate>
    <level-3-data-item>
      <line-item-total>10.60</line-item-total>
      <commodity-code>123</commodity-code>
      <description>test_desc</description>
      <discount-amount>0</discount-amount>
      <discount-indicator>Y</discount-indicator>
      <product-code>test_code</product-code>
      <item-quantity>1.0</item-quantity>
      <tax-amount>0.60</tax-amount>
      <tax-rate>6.0</tax-rate>
      <unit-of-measure>usd</unit-of-measure>
      <gross-net-indicator>Y</gross-net-indicator>
      <unit-cost>10.00</unit-cost>
    </level-3-data-item>
  </level-3-data>
</card-transaction>
```
```xml Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<card-transaction xmlns="http://ws.plimus.com">
    <card-transaction-type>AUTH_CAPTURE</card-transaction-type>
    <transaction-id>1020736769</transaction-id>
    <soft-descriptor>BLS&#x2a;MYSTORE</soft-descriptor>
    <amount>10.60</amount>
    <usd-amount>10.60</usd-amount>
    <currency>USD</currency>
    <avs-response-code>J</avs-response-code>
    <card-holder-info>
        <first-name>test first name</first-name>
        <last-name>test last name</last-name>
        <country>us</country>
        <zip>02453</zip>
    </card-holder-info>
    <vaulted-shopper-id>24122703</vaulted-shopper-id>
    <credit-card>
        <card-last-four-digits>0004</card-last-four-digits>
        <card-type>VISA</card-type>
        <card-sub-type>CREDIT</card-sub-type>
        <card-category>CORPORATE T&#x26;E</card-category>
        <bin-category>COMMERCIAL</bin-category>
        <card-regulated>N</card-regulated>
        <issuing-country-code>us</issuing-country-code>
    </credit-card>
    <level-3-data>
        <customer-reference-number>1234A</customer-reference-number>
        <sales-tax-amount>0.6</sales-tax-amount>
        <freight-amount>0</freight-amount>
        <duty-amount>0</duty-amount>
        <destination-zip-code>12345</destination-zip-code>
        <destination-country-code>us</destination-country-code>
        <ship-from-zip-code>12345</ship-from-zip-code>
        <discount-amount>0</discount-amount>
        <tax-amount>0.6</tax-amount>
        <tax-rate>6</tax-rate>
        <transaction-processed-with-l3d-supported-acquirer>true</transaction-processed-with-l3d-supported-acquirer>
        <level-3-data-item>
            <line-item-total>10.6</line-item-total>
            <commodity-code>123</commodity-code>
            <description>test_desc</description>
            <discount-amount>0</discount-amount>
            <discount-indicator>Y</discount-indicator>
            <gross-net-indicator>Y</gross-net-indicator>
            <product-code>test_code</product-code>
            <item-quantity>1</item-quantity>
            <tax-amount>0.6</tax-amount>
            <tax-rate>6</tax-rate>
            <unit-cost>10</unit-cost>
            <unit-of-measure>usd</unit-of-measure>
        </level-3-data-item>
    </level-3-data>
    <processing-info>
        <processing-status>success</processing-status>
        <cvv-response-code>NR</cvv-response-code>
        <avs-response-code-zip>U</avs-response-code-zip>
        <avs-response-code-address>U</avs-response-code-address>
        <avs-response-code-name>U</avs-response-code-name>
    </processing-info>
    <fraud-result-info>
        <device-data-collector>N</device-data-collector>
    </fraud-result-info>
</card-transaction>
```

#### Auth Only request and response

For details, refer to [Auth Only](https://developers.bluesnap.com/v8976-XML/reference/auth-only).

```xml Auth Only with Level 3 Data - Request
<card-transaction xmlns="http://ws.plimus.com">
  <card-transaction-type>AUTH_ONLY</card-transaction-type>
  <soft-descriptor>DescTest</soft-descriptor>
  <amount>10.60</amount>
  <currency>USD</currency>
  <card-holder-info>
    <first-name>test first name</first-name>
    <last-name>test last name</last-name>
    <zip>02453</zip>
    <country>us</country>
  </card-holder-info>
  <credit-card>
    <card-number>4005 5192 0000 0004</card-number>
    <security-code>111</security-code>
    <expiration-month>09</expiration-month>
    <expiration-year>2028</expiration-year>
  </credit-card>
  <level-3-data>
    <customer-reference-number>1234A</customer-reference-number>
    <sales-tax-amount>0.6</sales-tax-amount>
    <freight-amount>0</freight-amount>
    <duty-amount>0</duty-amount>
    <destination-zip-code>12345</destination-zip-code>
    <destination-country-code>us</destination-country-code>
    <ship-from-zip-code>12345</ship-from-zip-code>
    <discount-amount>0</discount-amount>
    <tax-amount>0.6</tax-amount>
    <tax-rate>6.0</tax-rate>
    <level-3-data-item>
      <line-item-total>10.60</line-item-total>
      <description>test_desc</description>
      <discount-amount>0</discount-amount>
      <product-code>test_code</product-code>
      <item-quantity>1</item-quantity>
      <tax-amount>0.60</tax-amount>
      <tax-rate>6.0</tax-rate>
      <unit-of-measure>usd</unit-of-measure>
      <commodity-code>123</commodity-code>
      <discount-indicator>Y</discount-indicator>
      <gross-net-indicator>Y</gross-net-indicator>
      <unit-cost>10.00</unit-cost>
    </level-3-data-item>
  </level-3-data>
</card-transaction>
```
```xml Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<card-transaction xmlns="http://ws.plimus.com">
  <card-transaction-type>AUTH_ONLY</card-transaction-type>
  <transaction-id>38550322</transaction-id>
  <recurring-transaction>ECOMMERCE</recurring-transaction>
  <soft-descriptor>BLS&#x2a;DescTest</soft-descriptor>
  <amount>10.60</amount>
  <usd-amount>10.60</usd-amount>
  <currency>USD</currency>
  <avs-response-code>J</avs-response-code>
  <card-holder-info>
    <first-name>test first name</first-name>
    <last-name>test last name</last-name>
    <country>us</country>
    <zip>02453</zip>
  </card-holder-info>
  <vaulted-shopper-id>19590366</vaulted-shopper-id>
  <credit-card>
    <card-last-four-digits>0004</card-last-four-digits>
    <card-type>VISA</card-type>
    <bin-category>CONSUMER</bin-category>
    <bin-number>400551</bin-number>
    <expiration-month>09</expiration-month>
    <expiration-year>2023</expiration-year>
  </credit-card>
  <level-3-data>
    <customer-reference-number>1234A</customer-reference-number>
    <sales-tax-amount>0.6</sales-tax-amount>
    <freight-amount>0</freight-amount>
    <duty-amount>0</duty-amount>
    <destination-zip-code>12345</destination-zip-code>
    <destination-country-code>us</destination-country-code>
    <ship-from-zip-code>12345</ship-from-zip-code>
    <discount-amount>0</discount-amount>
    <tax-amount>0.6</tax-amount>
    <tax-rate>6</tax-rate>
    <transaction-processed-with-l3d-supported-acquirer>true</transaction-processed-with-l3d-supported-acquirer>
    <level-3-data-item>
      <line-item-total>10.6</line-item-total>
      <commodity-code>123</commodity-code>
      <description>test_desc</description>
      <discount-amount>0</discount-amount>
      <discount-indicator>Y</discount-indicator>
      <gross-net-indicator>Y</gross-net-indicator>
      <product-code>test_code</product-code>
      <item-quantity>1</item-quantity>
      <tax-amount>0.6</tax-amount>
      <tax-rate>6</tax-rate>
      <unit-cost>10</unit-cost>
      <unit-of-measure>usd</unit-of-measure>
    </level-3-data-item>
  </level-3-data>
  <network-transaction-info>
    <original-network-transaction-id>751005562553365</original-network-transaction-id>
    <network-transaction-id>751005562553365</network-transaction-id>
  </network-transaction-info>
  <processing-info>
    <processing-status>success</processing-status>
    <cvv-response-code>NR</cvv-response-code>
    <authorization-code>092476</authorization-code>
    <avs-response-code-zip>U</avs-response-code-zip>
    <avs-response-code-address>U</avs-response-code-address>
    <avs-response-code-name>U</avs-response-code-name>
    <network-transaction-id>751005562553365</network-transaction-id>
  </processing-info>
  <fraud-result-info>
    <device-data-collector>N</device-data-collector>
  </fraud-result-info>
</card-transaction>
```

#### Sample Capture request and response

For details, refer to [Capture](https://developers.bluesnap.com/v8976-XML/reference/capture).

```xml Capture with Level 3 Data - Request
<card-transaction xmlns="http://ws.plimus.com">
  <card-transaction-type>CAPTURE</card-transaction-type>
  <transaction-id>38550320</transaction-id>
  <level-3-data>
    <customer-reference-number>1234A</customer-reference-number>
    <sales-tax-amount>0.6</sales-tax-amount>
    <freight-amount>0</freight-amount>
    <duty-amount>0</duty-amount>
    <destination-zip-code>12345</destination-zip-code>
    <destination-country-code>us</destination-country-code>
    <ship-from-zip-code>12345</ship-from-zip-code>
    <discount-amount>0</discount-amount>
    <tax-amount>0.6</tax-amount>
    <tax-rate>6.0</tax-rate>
    <level-3-data-item>
      <line-item-total>10.60</line-item-total>
      <description>test_desc</description>
      <discount-amount>0</discount-amount>
      <product-code>test_code</product-code>
      <item-quantity>1</item-quantity>
      <tax-amount>0.60</tax-amount>
      <tax-rate>6.0</tax-rate>
      <unit-of-measure>usd</unit-of-measure>
      <commodity-code>123</commodity-code>
      <discount-indicator>Y</discount-indicator>
      <gross-net-indicator>Y</gross-net-indicator>
      <unit-cost>10.00</unit-cost>
    </level-3-data-item>
  </level-3-data>
</card-transaction>
```
```xml Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<card-transaction xmlns="http://ws.plimus.com">
  <card-transaction-type>CAPTURE</card-transaction-type>
  <transaction-id>38550320</transaction-id>
  <soft-descriptor>BLS&#x2a;BS</soft-descriptor>
  <amount>20.00</amount>
  <usd-amount>20.00</usd-amount>
  <open-to-capture>0</open-to-capture>
  <currency>USD</currency>
  <transaction-approval-date>01/05/2021</transaction-approval-date>
  <transaction-approval-time>07:27:48</transaction-approval-time>
  <card-holder-info>
    <first-name>John</first-name>
    <last-name>Blue</last-name>
    <email>test&#x40;bluesnap. com</email>
    <country>us</country>
  </card-holder-info>
  <vaulted-shopper-id>19590364</vaulted-shopper-id>
  <credit-card>
    <card-last-four-digits>1111</card-last-four-digits>
    <card-type>VISA</card-type>
    <card-sub-type>CREDIT</card-sub-type>
    <bin-category>CONSUMER</bin-category>
    <bin-number>411111</bin-number>
    <card-regulated>Y</card-regulated>
    <issuing-bank>JPMORGAN CHASE BANK, N.A.</issuing-bank>
    <expiration-month>7</expiration-month>
    <expiration-year>2023</expiration-year>
    <issuing-country-code>us</issuing-country-code>
  </credit-card>
  <level-3-data>
    <customer-reference-number>1234A</customer-reference-number>
    <sales-tax-amount>0.6</sales-tax-amount>
    <freight-amount>0</freight-amount>
    <duty-amount>0</duty-amount>
    <destination-zip-code>12345</destination-zip-code>
    <destination-country-code>us</destination-country-code>
    <ship-from-zip-code>12345</ship-from-zip-code>
    <discount-amount>0</discount-amount>
    <tax-amount>0.6</tax-amount>
    <tax-rate>6.0</tax-rate>
    <transaction-processed-with-l3d-supported-acquirer>true</transaction-processed-with-l3d-supported-acquirer>
    <level-3-data-item>
      <line-item-total>10.60</line-item-total>
      <commodity-code>123</commodity-code>
      <description>test_desc</description>
      <discount-amount>0</discount-amount>
      <discount-indicator>Y</discount-indicator>
      <gross-net-indicator>Y</gross-net-indicator>
      <product-code>test_code</product-code>
      <item-quantity>1</item-quantity>
      <tax-amount>0.60</tax-amount>
      <tax-rate>6.0</tax-rate>
      <unit-cost>10.00</unit-cost>
      <unit-of-measure>usd</unit-of-measure>
    </level-3-data-item>
  </level-3-data>
  <network-transaction-info>
    <original-network-transaction-id>751005553983001</original-network-transaction-id>
    <network-transaction-id>751005553983001</network-transaction-id>
  </network-transaction-info>
  <processing-info>
    <processing-status>SUCCESS</processing-status>
    <cvv-response-code>MA</cvv-response-code>
    <authorization-code>436908</authorization-code>
    <avs-response-code-zip>U</avs-response-code-zip>
    <avs-response-code-address>U</avs-response-code-address>
    <avs-response-code-name>U</avs-response-code-name>
    <network-transaction-id>751005553983001</network-transaction-id>
  </processing-info>
  <fraud-result-info>
    <device-data-collector>N</device-data-collector>
  </fraud-result-info>
</card-transaction>
```

## Test Cards

The following cards are used for testing of Level 2/3 Data:

| Card Brand                | Number           | Expiration |
| :------------------------ | :--------------- | :--------- |
| Visa                      | 4111111111111111 | 02/2028    |
| MasterCard                | 5199701234567892 | 02/2028    |
| Amex (L2 with TAA fields) | 340000000000009  | 02/2028    |