# Payment Types

## Card Payment

Represents a payment made using a physical payment card via a payment terminal.

{% hint style="info" %}
For the ReceiptHero Card Linking feature, it’s important to accurately map values for all required fields.
{% endhint %}

### Card Payment Example

```json
{
  "type": "CARD",
  "amount": 20720,
    "attributes": {
      "transactionType": "PURCHASE",
      "MID": "12346543",
      "timeStamp": "2022-09-01T12:35:34.678+02:00",
      "terminalId": "BS-4545F9",
      "referenceNumber": "220901015555",
      "authorizationCode": "HIU456",
      "transactionId": "05555",
      "receiptNumber": "12923",
      "maskedPAN": "525400******9876",
      "APP": "MASTERCARD DEBIT",
      "cardNetwork": "MASTERCARD",
      "cardType": "DEBIT",
      "cardProgram": "Nordic Tech Bank — MC Debit",
      "transactionRawText": "CARD TRANSACTION\n\nCard: Debit Mastercard\n **** **** **** 9876 LN\nApplication: A0000000041010\nTr.Nr/Auth: 05555/HIU456\nPayee/business: 0029432413000/0001\n\nReference: 220901015555\n\nCredit/Charge 207,20 EUR\nPayPass Contactless \n\n",
      "ENTRY": "Contactless ICC (07)",
      "ARC": "APPROVED (00)",
      "TVR": "8000008000",
      "TSI": "E800",
      "AID": "A0000000031010",
      "AC": "9F270180",
      "CID": "0x80",
      "cryptogramType": "ARQC",
      "CVM": "Online PIN"
    }
}
```

### Card Payment Fields

<table><thead><tr><th>Key</th><th>Type</th><th width="317.7257080078125">Description</th><th data-type="checkbox">Required</th><th>ISO 8583 Field</th><th>EMV Tag</th></tr></thead><tbody><tr><td><strong>type</strong></td><td>String</td><td>Payment type (CARD)</td><td>true</td><td></td><td></td></tr><tr><td><strong>amount</strong></td><td>Integer</td><td>Paid amount in fractional unit</td><td>true</td><td></td><td></td></tr><tr><td><strong>attributes</strong></td><td>Object</td><td>Card Payment attributes</td><td>true</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span><strong>transactionType</strong></td><td>String</td><td><p>Type of Transaction</p><pre data-title="Allowed values"><code>PURCHASE
REFUND
REVERSAL
RETURN (deprecated)
</code></pre></td><td>true</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> MID</td><td>String</td><td>Merchant Identification Number (sometimes referred to as Card Acceptor ID)</td><td>false</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <strong>timeStamp</strong></td><td>String</td><td>Payment ISO 8601 datetime with offset</td><td>true</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span><strong>terminalId</strong></td><td>String</td><td>Card Acceptor Terminal Identifier</td><td>true</td><td>DE 41</td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <strong>referenceNumber</strong></td><td>String</td><td>Retrieval Reference Number, RRN</td><td>true</td><td>DE 37</td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <strong>authorizationCode</strong></td><td>String</td><td>Authorization Code (6 characters, alphanumeric)</td><td>true</td><td>DE 38</td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> transactionId</td><td>String</td><td>Transaction ID</td><td>false</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> receiptNumber</td><td>String</td><td>Card Holder Receipt Number</td><td>false</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <strong>maskedPAN</strong></td><td>String</td><td>Payment Card Masked PAN. At least 4 last digits.</td><td>true</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> APP</td><td>String</td><td>Application Label (e.g. VISA CREDIT)</td><td>false</td><td></td><td>50</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> cardNetwork</td><td>String</td><td><p></p><p>Card Network</p><pre data-title="Allowed values"><code>AMERICAN_EXPRESS
BANCONTACT
CARTES_BANCAIRES
DANKORT
DINERS_CLUB
DISCOVER
EFTPOS
ELO
GIROCARD
HIPERCARD
HIPER
INTERAC
JCB
MAESTRO
MASTERCARD
MIR
RUPAY
UNIONPAY
VISA
VERVE
</code></pre></td><td>false</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> cardType</td><td>String</td><td>Card type (e.g. DEBIT, CREDIT or PREPAID)</td><td>false</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> cardProgram</td><td>String</td><td>Card Program free text (e.g. Chase Sapphire Preferred)</td><td>false</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> transactionRawText</td><td>String</td><td>Card holder receipt copy as raw text (including newlines as <code>\n)</code></td><td>false</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> preAuthorizedAmount</td><td>Number</td><td>Amount of the related pre-authorization</td><td>false</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> ENTRY</td><td>String</td><td>Point Of Service (POS) Entry Mode</td><td>false</td><td>DE 22</td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> ARC</td><td>String</td><td>Authorization Response Code</td><td>false</td><td>DE 39</td><td>8A</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> TVR</td><td>String</td><td>Terminal Verification Results</td><td>false</td><td></td><td>95</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> TSI</td><td>String</td><td>Transaction Status Information</td><td>false</td><td></td><td>9B</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> AID</td><td>String</td><td>Application Identifier</td><td>false</td><td></td><td>9F06</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> AC</td><td>String</td><td>Application Cryptogram</td><td>false</td><td></td><td>9F26</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> CID</td><td>String</td><td>Cryptogram Information Data</td><td>false</td><td></td><td>9F27</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> cryptogramType</td><td>String</td><td><p></p><pre data-title="Allowed values" data-full-width="true"><code>  AAC
  TC
  ARQC
</code></pre></td><td>false</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> CVM</td><td>String</td><td><p>Cardholder Verification Method Results</p><pre data-title="Examples" data-full-width="true"><code>  ONLINE PIN  
  SIGNATURE VERIFIED  
  NO CVM REQUIRED
</code></pre></td><td>false</td><td></td><td>9F34</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <del>authorizationMethodType</del></td><td>String</td><td>Deprecated (<code>CVM</code>  should be used instead)</td><td>false</td><td></td><td></td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> currency</td><td><a data-mention href="#currency-object">#currency-object</a></td><td>Foreign currency information</td><td>false</td><td></td><td></td></tr></tbody></table>

## Cash Payment

Represents a payment made in cash, including the amount handed over by the customer for calculating change.

### Cash Payment Example

```json
{
  "type": "CASH",
  "amount": 39998,
  "attributes": {
    "handedAmount": 40000,
    "roundingAmount": 2
  }
}
```

### Cash Payment Fields

<table><thead><tr><th>Key</th><th>Type</th><th>Description</th><th data-type="checkbox"></th></tr></thead><tbody><tr><td><strong>type</strong></td><td>String</td><td>CASH</td><td>true</td></tr><tr><td><strong>amount</strong></td><td>Integer</td><td>Paid amount in fractional unit</td><td>true</td></tr><tr><td><strong>attributes</strong></td><td>Object</td><td>Cash payment attributes</td><td>true</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <strong>handedAmount</strong></td><td>Integer</td><td>Amount that is handed in cash in fractional unit</td><td>true</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <strong>roundingAmount</strong></td><td>Integer</td><td>Amount rounded</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> currency</td><td><a data-mention href="#currency-object">#currency-object</a></td><td>Foreign currency information</td><td>false</td></tr></tbody></table>

## Online Payment

Represents a payment processed through an online payment service provider (PSP), such as Paytrail, Stripe, or Klarna.

### Online Payment Example

```json
{
  "amount": 4590,
  "type": "ONLINE_PAYMENT",
  "attributes": {
    "provider": "PAYTRAIL",
    "paymentMethod": "APPLE_PAY",
    "transactionType": "PURCHASE",
    "timeStamp": "2025-04-03T15:30:00+02:00",
    "cardType": "VISA DEBIT",
    "maskedPAN": "411111******1111",
    "authorizationCode": "A1B2C3",
    "referenceNumber": "250403123456",
    "filingCode": "1A2B3C4D5E6F7G8H9I0J1K2L3M4N5O6P",
    "orderReference": "4940046476",
    "transactionId": "7d781f54-ebbb-450e-852b-7ff133caa6c6",
  }
}
```

### Online Payment Fields

<table><thead><tr><th>Key</th><th>Type</th><th>Description</th><th data-type="checkbox">Required</th></tr></thead><tbody><tr><td><strong>type</strong></td><td>String</td><td>ONLINE_PAYMENT</td><td>true</td></tr><tr><td><strong>amount</strong></td><td>Integer</td><td>Paid amount in fractional unit</td><td>true</td></tr><tr><td><strong>attributes</strong></td><td>Object</td><td>Online Payment details</td><td>true</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <strong>provider</strong></td><td>String</td><td>Online Payment provider (see <a data-mention href="#online-payment-providers">#online-payment-providers</a>)</td><td>true</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <strong>paymentMethod</strong></td><td>String</td><td>Underlying Payment method (see<a data-mention href="#online-payment-methods">#online-payment-methods</a>)</td><td>true</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <strong>transactionType</strong></td><td>String</td><td><p>Type of Transaction</p><pre data-title="Allowed values"><code>  PURCHASE
  RETURN
</code></pre></td><td>true</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> timeStamp</td><td>String</td><td>Transaction timestamp as ISO 8601 datetime with offset</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> cardType</td><td>String</td><td>Card type description if available. (e.g. Debit Mastercard)</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> maskedPAN</td><td>String</td><td>Payment Card Masked PAN. At least 4 last digits.</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> authorizationCode</td><td>String</td><td>Payment Authorization code (6 characters, alphanumeric)</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> referenceNumber</td><td>String</td><td>Payment Retrieval Reference Number</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> filingCode</td><td>String</td><td>Bank Transfer filing code (relevant mostly for bank transfers in Finland)</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> orderReference</td><td>String</td><td>Reference number of online order / purchase</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> transactionId</td><td>String</td><td>Transaction identifier</td><td>false</td></tr></tbody></table>

#### Online Payment Providers

{% hint style="info" %}
Supported `provider` values are listed below. This list is subject to change, and new providers can be introduced upon request.
{% endhint %}

<pre data-line-numbers><code><strong>  ADYEN
</strong>  AUTHORIZE_NET
<strong>  KLARNA
</strong>  NETS
<strong>  PAYPAL
</strong>  PAYTRAIL
<strong>  STRIPE
</strong>  TRUSTLY
<strong>  VISMA_PAY
</strong>  VIVA
</code></pre>

#### Online Payment Methods

{% hint style="info" %}
Supported `paymentMethod` values are listed below. This list is subject to change, and new methods can be introduced upon request.
{% endhint %}

<pre data-line-numbers><code><strong>  CARD
</strong>  BANK_TRANSFER
<strong>  APPLE_PAY
</strong>  GOOGLE_PAY
<strong>  MOBILEPAY
</strong>  PAYPAL
<strong>  SIIRTO
</strong>  SWISH
<strong>  INVOICE
</strong></code></pre>

## Gift Card Payment

Represents a payment made using a prepaid or store-issued gift card, optionally including issuer, balance, and reference details.

### Gift Card Payment Example

```json
{
  "amount": 2500,
  "type": "GIFT_CARD",
  "attributes": {
    "id": "GC-987654321",
    "issuer": "StoreBrand",
    "name": "Holiday Gift Card",
    "referenceNumber": "REF1234567890",
    "expirationDate": "2025-12-31T23:59:59+02:00",
    "balanceBefore": 5000,
    "balanceAfter": 2500
  }
}
```

### Gift Card Payment Fields

<table><thead><tr><th>Key</th><th>Type</th><th>Description</th><th data-type="checkbox">Required</th></tr></thead><tbody><tr><td><strong>type</strong></td><td>String</td><td>GIFT_CARD</td><td>true</td></tr><tr><td><strong>amount</strong></td><td>Integer</td><td>Paid amount in fractional unit</td><td>true</td></tr><tr><td><strong>attributes</strong></td><td>Object</td><td>Gift Card details</td><td>true</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <strong>id</strong></td><td>String</td><td>Gift Card ID</td><td>true</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> issuer</td><td>String</td><td>Gift Card issuer name</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> name</td><td>String</td><td>Gift Card title or name</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> referenceNumber</td><td>String</td><td>Purchase or Order reference number</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> expirationDate</td><td>String</td><td>Gift Card expiration date as ISO 8601 datetime with offset</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> balanceBefore</td><td>Number</td><td>Gift Card balance before purchase in fractional unit</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> balanceAfter</td><td>Number</td><td>Gift Card balance after purchase in fractional unit</td><td>false</td></tr></tbody></table>

## Voucher Payment

Represents a payment made using a voucher or coupon, identified by a reference number or id.

### Voucher Payment Example

```json
{
  "type": "VOUCHER",
  "amount": 20720,
  "attributes": {
    "referenceNumber": "1234567890"
  }
}
```

### Voucher Payment Fields

<table><thead><tr><th>Key</th><th>Type</th><th>Description</th><th data-type="checkbox">Required</th></tr></thead><tbody><tr><td><strong>type</strong></td><td>String</td><td>VOUCHER</td><td>true</td></tr><tr><td><strong>amount</strong></td><td>Integer</td><td>Paid amount in fractional unit</td><td>true</td></tr><tr><td>attributes</td><td>Object</td><td>Payment details</td><td>false</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> referenceNumber</td><td>String</td><td>Voucher reference number or id</td><td>false</td></tr></tbody></table>

## Loyalty Payment

Represents a payment or partial payment made using a loyalty or bonus program, such as a store-issued loyalty card.

### Loyalty Payment Example

```json
{
  "type": "LOYALTY",
  "amount": 20720,
  "attributes": {
    "cardType": "Plussa",
    "maskedPAN": "1881"
  },
  "customAttributes": [{ "Earned Bonus": "234 points" }]
}
```

### Loyalty Payment Fields

<table><thead><tr><th>Key</th><th>Type</th><th>Description</th><th data-type="checkbox">Required</th></tr></thead><tbody><tr><td><strong>type</strong></td><td>String</td><td>LOYALTY</td><td>true</td></tr><tr><td><strong>amount</strong></td><td>Integer</td><td>Paid amount in fractional unit</td><td>true</td></tr><tr><td><strong>attributes</strong></td><td>Object</td><td>Loyalty card details</td><td>true</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <strong>cardType</strong></td><td>String</td><td>Free text card type / name</td><td>true</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> <strong>maskedPAN</strong></td><td>String</td><td>Masked Loyalty Card number</td><td>true</td></tr></tbody></table>

## Other Payment

Represents a non-standard payment method not covered by predefined types, including an external type identifier for classification.

### Other Payment Example

```json
{
  "type": "OTHERPAYMENT",
  "amount": 20720,
  "attributes": {
    "externalType": "Mobile Carrier Billing"
  }
}
```

### Other Payment Fields

<table><thead><tr><th>Key</th><th>Type</th><th>Description</th><th data-type="checkbox">Required</th></tr></thead><tbody><tr><td><strong>type</strong></td><td>String</td><td>OTHERPAYMENT</td><td>true</td></tr><tr><td><strong>amount</strong></td><td>Integer</td><td>Paid amount in fractional unit</td><td>true</td></tr><tr><td><strong>attributes</strong></td><td>Object</td><td>Payment details</td><td>true</td></tr><tr><td><span data-gb-custom-inline data-tag="emoji" data-code="3030">〰️</span> externalType</td><td>String</td><td>Payment type free text</td><td>false</td></tr></tbody></table>

## Payment Custom Attributes

All payment objects support custom attributes to allow including data that is not covered by the core specification.

```json
"customAttributes": [
   { "Earned Bonus": "234 points" }
]
```

| Key                    | Type   | Description         | Required |
| ---------------------- | ------ | ------------------- | :------: |
| customAttributes       | Array  | Key value pair list |          |
| :wavy\_dash: **Key**   | String | Free text key       |          |
| :wavy\_dash: **Value** | String | Free text value     |          |

## Foreign Currency Mapping

Foreign currency mapping is used when a customer pays with cash or a card in a currency different from the merchant’s local currency, requiring the payment amount to be converted using an exchange rate.

Foreign currency details are mapped as a `currency` object within the payment attributes; see the *Currency Object* section for full documentation.

```json
{
  "type": "CARD|CASH",
  "amount": 1100,
  "attributes": {
    ...
    "currency": {
      "currencyISOCode": "DKK",
      "amount": 8216,
      "exchangeRate": "0.13389"
    }
  }
}
```

### Currency Object

<table><thead><tr><th>Key</th><th>Type</th><th>Description</th><th data-type="checkbox">Required</th></tr></thead><tbody><tr><td><strong>currencyISOCode</strong></td><td>String</td><td>ISO 4217 Currency Code</td><td>true</td></tr><tr><td><strong>amount</strong></td><td>Integer</td><td>Foreign currency amount in fractional unit</td><td>true</td></tr><tr><td><strong>exchangeRate</strong></td><td>String</td><td>Rate used to convert the foreign currency amount into the merchant’s local currency.</td><td>true</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.receipthero.io/filetypes/receipthero-json/herojson-specification/payment-types.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
