HeroJSON Specification

Merchant object

"merchant": {
"name": "Global Receipt Delicatesse",
"companyID": "123456-7",
"branch": {
"name": "Receipt Restaurant",
"subName":"FastFood",
"email": "restaurant@example.com",
"phone": "040-5086462",
"address": {
"streetAddress": "Itsenäisyydenkatu 17 a 15",
"city": "Tampere",
"zipCode": "33500",
"country": "Finland"
}
}

Key

Type

Description

Required

name

String

Company name

companyID

String

Company's business id or VAT number

Branch object

Key

Type

Description

Required

name

String

Branch name

subName

String

Freetext slogan etc, placed under branch name

email

String

Email address to branch / company support

phone

String

Phone number to branch / company support

address

Object

Address values

streetAddress

String

Branch location street address

city

String

Branch location city

zipCode

String

Branch location zip code

country

String

Branch location country

Products array

Products array contains all product on receipt

"products": [
{
"name": "Ground Control",
"EANCode": "42222130165",
"quantity": "4",
"productId": "1234",
"quantityCode": "PCS",
"freeText": "Product instructions etc",
"unitPriceIncVAT": 5180,
"unitPriceIncVATDecimal": "51,80",
"totalAmountExcVAT": 18836,
"totalAmountIncVAT": 20720,
"vats": [
{
"VATRate": "24",
"VATAmount": 1884,
"totalAmountExcVAT": 18836,
"totalAmountIncVAT": 20720
}
],
"discounts": [
{
"amount": 0,
"percentage": "0.00",
"description": ""
}
],
"customAttributes": [
{ "Warranty": "2 years" },
{ "Valid until": "2020-11-26" }
]
}
],

Key

Type

Description

Required

name

String

Product name

EANCode

String

Products EAN code

quantity

String

Quantity of product

productId

String

Merchants internal productID

quantityCode

String

Quantity code for product

freeText

String

Product related text field

unitPriceIncVAT

Integer

Unit price including VAT in

fractional unit (Cents in Euros etc.)

unitPriceIncVATDecimal

String

Unit price including VAT in main currency unit. Mainly used by petrol receipts

totalAmountExcVAT

Integer

Total price for product row without VAT in fractional unit

totalAmountIncVAT

Integer

Total price for product row with VAT in fractional unit

vats

Array

Product level VAT specifications

One object represents one VAT rate.

If product has multiple taxrates -> multiple objects

VATRate

String

VAT rate. Integer or Decimal

VATAmount

Integer

VAT amount in fractional unit

totalAmountExcVAT

Integer

Amount without VAT in fractional unit

totalAmountIncVAT

Integer

Amount with VAT in fractional unit

discounts

Array

Product level discount objects.

amount

Integer

Amount of discount in fractional unit

percentage

String

Discount percentage in decimal

description

String

Discount reason in free text

customAttributes

Array

Key value pair for custom attributes on product

These key value pair will be shown on receipt as table under product.

key

String

Free key name

value

String

Free value

Receipt VAT specification

"vats": [
{
"VATRate": "24",
"totalVATAmount": 1884,
"totalAmountExcVAT": 18836,
"totalAmountIncVAT": 20720
}
],

Key

Type

Description

Required

vats

Array

Receipt total VATs as array of objects per VAT rate

VATRate

String

VAT rate. Integer or Decimal

totalVATAmount

Integer

VAT amount in fractional unit

totalAmountExcVAT

Integer

Amount without VAT in fractional unit

totalAmountIncVAT

Integer

Amount with VAT in fractional unit

Payments

Card Payment

"payments": [
{
"type": "CARD",
"amount": 20720,
"attributes": {
"cardType": "PaymentCard",
"maskedPAN": "401288******1881",
"timeStamp": "2018-11-26T12:35:34.678Z",
"terminalId": "BS-4545F9",
"unixTimeStamp": 1543235735,
"referenceNumber": "12315352349",
"authorizationCode": "HIU456HDDF67FH",
"authorizationMethodType": "00948",
"transactionId": "123e4567-e89b-12d3-a456-426655440000"
},
"customAttributes": [
{ "key": "value" }
]

Key

Type

Description

Required

type

String

Payment type CARD | CASH | LOYALTY

amount

Integer

Paid amount in fractional unit

(POINT ECR API Amount, field 14)

attributes

Object

Payment terminal attributes

All these should be got from payment terminal

cardType

String

Card type description if available.

maskedPan

String

Cards masked PAN. At least 4 last digits

(POINT ECR API Card Number field 6)

timeStamp

String

Payment ISO 8601 datetime in UTC

(POINT ECR API Date and time of transaction field 13)

terminalId

String

Terminal ID from terminal.

(POINT ECR API Reader serial number, field 16)

unixTimeStamp

Integer

Payment unix timestamp

referenceNumber

String

Reference number / filingcode for transaction

(POINT ECR API Filing code, field 12)

authorizationCode

String

Payment authorization code

(POINT ECR API Transaction Certificate, field 8)

authorizationMethodType

String

Payment authorization method free text

transactionId

String

Transaction id

(POINT ECR API TransactionID, field 11)

customAttributes

Array

Key value pair for custom attributes on payment

These key value pair will be shown on receipt as table under payment.

key

String

Free text key name

value

String

Free text value

Cash Payment

{
"type": "CASH",
"amount": 34920,
"attributes": {
"handedAmount": 40000
}

Key

Type

Description

Required

type

String

CASH

amount

Integer

Paid amount in fractional unit

attributes

Object

Cash payment attributes

handedAmount

Integer

Amount that is handed in cash in fractional unit

Loyalty Payment

{
"type": "LOYALTY",
"amount": 20720,
"attributes": {
"cardType": "Plussa",
"maskedPAN": "1881"
},
"customAttributes": [
{ "ExtraBonus": "234 points" },
]
},

Key

Type

Description

Required

type

String

LOYALTY

amount

Integer

Paid amount in fractional unit

attributes

Object

Loyalty card details

cardType

String

Free text card type / name

maskedPAN

String

If loyalty card has number it can be placed here

Other Payment

{
"type": "OTHERPAYMENT",
"amount": 20720,
"attributes": {
"externalType": "Klarna",
}
},

Key

Type

Description

Required

type

String

LOYALTY

amount

Integer

Paid amount in fractional unit

attributes

Object

Loyalty card details

externaType

String

Free text card type / name

Payment custom attributes

All payment objects can have custom attributes.

"customAttributes": [
{ "ExtraBonus": "234 points" },

Key

Type

Description

Required

customAttributes

Array

Key value pair list

Key

String

Free text key

Value

String

Free text value

General Receipt Data

"customAttributes": [
{ "key": "value" },
{ "key2": "value2" },
{ "key3": "value3" }
],
"freeText": "Custom greetings etc",
"receiptNumber": "89942344234",
"receiptTimeStamp": "2018-11-26T12:35:34.678Z",
"currencyISOCode": "EUR",
"totalVATAmount": 1884,
"totalPriceExcVAT": 18836,
"totalPriceIncVAT": 20720,
}

Key

Type

Description

Required

freeText

String

Freetext field to be displayed on receipt

receiptNumber

String

Merchant's internal receiptnumber

receiptTimeStamp

String

ISO 8601 datetime in UTC , when purchase is made

currencyIOSCode

String

Currency code

totalVATAmount

Integer

Total VAT amount in fractional unit

totalPriceExcVAT

Integer

Total price excluding VAT

totalPriceIncVAT

Integer

Total price including VAT

customAttributes

Array

Key value pair list, to be show on receipt

Key

String

Free text key

Value

String

Free text value