# 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>
