> ## Documentation Index
> Fetch the complete documentation index at: https://kb.paymentsmojo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Level 3 data

> Send invoice lines with a payment so corporate and purchasing cards qualify for lower rates.

Corporate and purchasing cards cost less to accept when the payment carries the invoice's details: the purchase
order, tax, shipping and each line item. Visa now checks those lines before it gives the lower rate. Sending them is
optional: a POS that never sends Level 3 data takes payments exactly as before.

`POST https://posgateway.paymentsmojo.com/Links/Level3`

## When to send it

Send it any time before the payment settles (the day's batch closes):

| You send it | What happens |
| - | - |
| Before the sale, with the sale's `OrderId` | Held, then sent with the payment as soon as it's approved. |
| After the sale, with its `OrderId` or `RetRef` | Sent now if the payment is captured, or with its capture if not. |
| After the payment settled | Refused: it's too late for this payment. |

Use the same `OrderId` you send with the sale. If you send data twice for the same payment, the newer data is used.

## Request

The same key fields as every action (`CardPointeUsername` is the key id, `CardPointePassword` the secret), plus:

| Field | Required | Notes |
| - | - | - |
| `MerchId` | Yes | The MID. |
| `RetRef` or `OrderId` | One of them | Which payment. |
| `PONumber` | Recommended | The customer's purchase order, up to 36 characters. |
| `TaxAmnt` | Recommended | Tax on the order, in dollars. `0` means tax-exempt. |
| `FrtAmnt`, `DutyAmnt` | No | Freight and duty, in dollars. |
| `OrderDate` | No | `yyyyMMdd` (or `yyyy-MM-dd`). |
| `ShipToZip`, `ShipFromZip` | Recommended | 5 or 9 digit ZIP codes. |
| `ShipToCountry` | No | Two letters; `US` if left out. |
| `Items` | Recommended | The invoice's lines (below). |

Each line:

| Field | Notes |
| - | - |
| `LineNo` | Up to 4 digits; numbered 1, 2, 3… if left out. |
| `Material` | The product's commodity code, up to 16 characters. |
| `Description` | Cut to 32 characters. |
| `UPC` | Up to 14 characters. |
| `Quantity` | More than 0; decimals allowed. |
| `UOM` | Unit of measure, up to 8 characters (`EA`, `BX`, `LB`). |
| `UnitCost`, `NetAmnt`, `TaxAmnt`, `DiscAmnt` | Dollars. |

Send at least a PO number, a tax amount or the lines. Amounts are always dollars and cents.

<CodeGroup>
  ```json JSON theme={null}
  {
    "merchId": "496000000000",
    "orderId": "INV-10442",
    "poNumber": "PO-77",
    "taxAmnt": 8.25,
    "shipToZip": "73102",
    "items": [
      { "material": "31162800", "description": "Hex cap screw 1/2-13 x 2", "quantity": 2, "uom": "BX", "unitCost": 75.00, "netAmnt": 150.00 }
    ],
    "cardPointeUsername": "pgk_…",
    "cardPointePassword": "pgs_…"
  }
  ```

  ```xml XML theme={null}
  <Level3Request>
    <MerchId>496000000000</MerchId>
    <OrderId>INV-10442</OrderId>
    <PONumber>PO-77</PONumber>
    <TaxAmnt>8.25</TaxAmnt>
    <ShipToZip>73102</ShipToZip>
    <Items>
      <Item><Material>31162800</Material><Description>Hex cap screw 1/2-13 x 2</Description><Quantity>2</Quantity><UOM>BX</UOM><UnitCost>75.00</UnitCost><NetAmnt>150.00</NetAmnt></Item>
    </Items>
    <CardPointeUsername>pgk_…</CardPointeUsername>
    <CardPointePassword>pgs_…</CardPointePassword>
  </Level3Request>
  ```
</CodeGroup>

## Response

| Field | Meaning |
| - | - |
| `RespStat` | `A` when accepted; `E` with `RespMessage` saying what to fix. |
| `Status` | `Sent` (CardPointe has it) or `Held` (it goes with the payment). |
| `Message` | When a held payment's data will be sent. |
| `RetRef`, `OrderId`, `Lines` | The payment, and how many lines were taken. |

## Good to know

* **Payments never wait on it.** If the processor refuses the Level 3 data, the payment still goes through, and we
  follow up with you.
* **Your MID must be set up for Level 3** for the lower rate to apply. Ask us at [hello@paymentsmojo.com](mailto:hello@paymentsmojo.com).
* Only corporate and purchasing cards earn a lower rate from it; other cards are charged as usual.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.