Data model
Definition of request, response messages and properties used by the Fusion API's.
Data format
- Mandatory fields have a check (✔) mark in the "Requ" column.
- A mandatory field must be present (not null, not whitespace) and if a string, have a length > 0.
- Each field is marked with a data format. Available data formats are outlined below
| Type | Format |
|---|---|
| Integer (MIN, MAX) | A whole number.
|
| Decimal (MIN, MAX, PRECISION) | A decimal number.
|
| Currency (MIN, MAX) | Decimal formatted as $$$$$$$.CC.
|
| String (MIN, MAX) | String representing printable ASCII characters (character code 32-127).
|
| UUID | 128-bit text string formatted as: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| ISO8601 | iso8601 formatted date and time. See ISO 8601 - Wikipedia |
| Boolean | true or false. |
| Object | An object containing other properties. |
| Enum | One of an enumeration of values. |
| Array (X) | An array of specified data type. |
Request/response messages
SaleToPOI
The SaleToPOIRequest and SaleToPOIResponse are used to wrap request and response messages and contain at least two objects:
- A MessageHeader object.
- A
Payloadrequest or response object of variable types.
SaleToPOIRequest
Attributes | Requ. | Format | Description |
|---|---|---|---|
| MessageHeader | ✔ | Object | Message header |
| PaymentRequest | Object | If payment request | |
| LoginRequest | Object | If login request | |
| LogoutRequest | Object | If logout request | |
| DisplayRequest | Object | If display request | |
| InputRequest | Object | If input request | |
| PrintRequest | Object | If print request | |
| TransactionStatusRequest | Object | If transaction status request | |
| AbortRequest | Object | If abort request | |
| ReconciliationRequest | Object | If reconciliation request | |
| CardAcquisitionRequest | Object | If card acquisition request |
SaleToPOIRequest
{
"SaleToPOIRequest": {
"MessageHeader":{},
"PaymentRequest":{},
"LoginRequest":{},
"LogoutRequest":{},
"DisplayRequest":{},
"InputRequest":{},
"PrintRequest":{},
"TransactionStatusRequest":{},
"AbortRequest":{},
"ReconciliationRequest":{},
"CardAcquisitionRequest":{},
"BalanceInquiryRequest":{},
"StoredValueRequest":{},
}
}
SaleToPOIResponse
Attributes | Requ. | Format | Description |
|---|---|---|---|
| MessageHeader | ✔ | Object | Message header |
| PaymentRequest | Object | If payment request | |
| LoginRequest | Object | If login request | |
| LogoutRequest | Object | If logout request | |
| DisplayRequest | Object | If display request | |
| InputRequest | Object | If input request | |
| PrintRequest | Object | If print request | |
| TransactionStatusRequest | Object | If transaction status request | |
| AbortRequest | Object | If abort request | |
| ReconciliationRequest | Object | If reconciliation request | |
| CardAcquisitionRequest | Object | If card acquisition request |
SaleToPOIResponse
{
"SaleToPOIResponse": {
"MessageHeader":{},
"PaymentResponse":{},
"LoginResponse":{},
"LogoutResponse":{},
"DisplayResponse":{},
"InputResponse":{},
"PrintResponse":{},
"TransactionStatusResponse":{},
"AbortResponse":{},
"ReconciliationResponse":{},
"CardAcquisitionResponse":{},
"BalanceInquiryResponse":{},
"StoredValueResponse":{},
}
}
MessageHeader
A MessageHeader is included with each request and response. It defines the protocol and message type.
MessageHeader
"MessageHeader":{
"MessageClass":"",
"MessageCategory":"",
"MessageType":"",
"ServiceID":""
}
Attributes | Requ. | Format | Description |
|---|---|---|---|
| MessageClass | ✔ | Enum | Informs the receiver of the class of message. Possible values are "Service", "Device", or "Event" |
| MessageCategory | ✔ | Enum | Indicates the category of message. Possible values are "CardAcquisition", "Display", "Login", "Logout", "Payment" |
| MessageType | ✔ | Enum | Type of message. Possible values are "Request", "Response", or "Notification" |
| ServiceID | ✔ | UUID | A unique value which will be mirrored in the response. See ServiceID. |
Balance inquiry
Balance inquiry request/response currently in DRAFT status
The Sale System can send a balance inquiry to instruct the POI terminal to read a card and return the outstanding balance.
Balance inquiry request
Balance inquiry request
{
"BalanceInquiryRequest": {
}
}
The BalanceInquiryRequest node is intentionally empty.
Balance inquiry response
Balance inquiry response
{
"BalanceInquiryResponse": {
"Response": {
"Result": "Success | Failure",
"ErrorCondition": "xxx",
"AdditionalResponse": "xxx"
},
"PaymentAccountStatus": {
"PaymentInstrumentType": "Card",
"PaymentInstrumentData": {
"PaymentInstrumentType": "xxx",
"CardData": {
"EntryMode": "xxx",
"PaymentBrand": "xxx",
"PaymentBrandId": "xxx",
"PaymentBrandLabel": "xxx",
"Account": "xxx",
"MaskedPAN": "xxxxxx…xxxx",
"PaymentToken": {
"TokenRequestedType": "xxx",
"TokenValue": "xxx",
"ExpiryDateTime": "xxx"
}
},
"StoredValueAccountID": {
"StoredValueAccountType": "GiftCard | PhoneCard | Other",
"StoredValueProvider": "",
"OwnerName": "",
"ExpiryDate": "MMYY",
"EntryMode": "",
"IdentificationType": "",
"StoredValueID": ""
}
},
"CurrentBalance": 0.00,
"Currency": "AUD",
"PaymentAcquirerData": {
"AcquirerID": "xxx",
"MerchantID": "xxx",
"AcquirerPOIID": "xxx",
"AcquirerTransactionID": {
"TransactionID": "xxx",
"TimeStamp": "xxx"
},
"ApprovalCode": "xxx",
"ResponseCode": "xxx",
"HostReconciliationID": "xxx"
},
}
}
}
Attributes | Requ. | Format | Description |
|---|---|---|---|
| Response | ✔ | Object | Object indicating the result of the login |
| Result | ✔ | Enum | Indicates the result of the response. Possible values are "Success" and "Failure" |
| ErrorCondition | String(0,256) | Indicates the reason an error occurred. Only present when Result is "Failure". See ErrorCondition for more information on possible values. | |
| AdditionalResponse | String(0,1024) | Provides additional error information. Only present when Result is "Failure". See AdditionalResponse for more information on possible values. | |
| PaymentAccountStatus | |||
| PaymentInstrumentData | Object | ||
| PaymentInstrumentType | String(1,128) | "Card" or "Mobile" | |
| CardData | Object | ||
| EntryMode | ✔ | Enum | Indicates how the card was presented. |
| PaymentBrand | ✔ | String(1,128) | Deprecated. Use PaymentBrandId |
| PaymentBrandId | ✔ | String(4,4) | Indicates the payment type used. |
| PaymentBrandLabel | ✔ | String(0,256) | Descriptive label of the payment type used. |
| MaskedPAN | ✔ | String(1,64) | PAN masked with dots, first 6 and last 4 digits visible |
| Account | String(1,64) | Present if EntryMode is "MagStripe", "ICC", or "Tapped". Indicates the card account used. See Account | |
| StoredValueAccountID | Object | Present if the card presented was a gift card / stored value card | |
| StoredValueAccountType | ✔ | Enum | Type of stored value account. GiftCard |
| StoredValueProvider | String(1,256) | Identification of the provider of the stored value account. | |
| OwnerName | String(1,256) | If available, the name of the owner of a stored value account. | |
| EntryMode | Enum | Indicates how the payment type was presented. | |
| IdentificationType | ✔ | Enum | Type of account identification contained in StoredValueID. Values are PAN |
| StoredValueID | ✔ | String(128) | Stored value account identification |
| CurrentBalance | ✔ | Currency(0,999999.99) | Balance of an account. |
| Currency | ✔ | String(3,3) | Three character (ISO 4217 formatted) currency code. Set to "AUD". |
| PaymentAcquirerData | Object | Data related to the response from the payment acquirer | |
| AcquirerID | ✔ | String | The ID of the acquirer which processed the transaction |
| MerchantID | ✔ | String(1,32) | The acquirer merchant ID (MID) |
| AcquirerPOIID | ✔ | String(1,16) | The acquirer terminal ID (TID) |
| AcquirerTransactionID | ✔ | Object | |
| TransactionID | ✔ | String(1,128) | The acquirer transaction ID |
| TimeStamp | ✔ | ISO8601 | Timestamp from the acquirer, formatted as ISO8601 |
| ApprovalCode | ✔ | String(0,64) | The Acquirer Approval Code. Also referred to as the Authentication Code |
| ResponseCode | ✔ | String(0,8) | The Acquirer Response Code. Also referred as the PINPad response code |
| STAN | String(1,32) | The Acquirer STAN if available | |
| RRN | String(1,32) | The Acquirer RRN if available | |
| HostReconciliationID | ✔ | String(1,32) | Identifier of a reconciliation period with the acquirer. This normally has a date and time component in it |
| PaymentReceipt | Array(Object) | Array of payment receipt objects which represent receipts to be printed | |
| DocumentQualifier | ✔ | Enum | "CashierReceipt" for a merchant receipt, otherwise "SaleReceipt" |
| RequiredSignatureFlag | ✔ | Boolean | If true, the card holder signature is required on the merchant CashierReceipt. |
| OutputContent | Object | Payment receipt object which represents the receipt that needs to be printed | |
| OutputFormat | ✔ | String(0,32) | "XHTML" |
| OutputXHTML | ✔ | String(0,4096) | The payment receipt in XHTML format but coded in BASE64 |
| Currency | ✔ | String(3,3) | Three character (ISO 4217 formatted) currency code. Set to "AUD". |
| RequestedAmount | ✔ | Currency(0.01,999999.99) | The requested amount for the transaction sale items, including cash back and tip requested |
Login
The Sale System sends a Login request when it is ready to pair with a POI terminal. The Sale System can pair with multiple POI terminals by sending multiple Login requests.
Login request
Login request
{
"LoginRequest": {
"DateTime": "xxx",
"SaleSoftware": {
"ProviderIdentification": "xxx",
"ApplicationName": "xxx",
"SoftwareVersion": "xxx",
"CertificationCode": "xxx"
},
"SaleTerminalData": {
"TerminalEnvironment": "xxx",
"SaleCapabilities": [
"xxx",
"xxx",
"xxx"
],
"TotalsGroupID": "xxx"
},
"OperatorLanguage": "en",
"OperatorID": "xxx",
"ShiftNumber": "xxx",
"POISerialNumber": "xxx",
"Pairing": "true or false"
}
}
Attributes | Requ. | Format | Description |
|---|---|---|---|
| DateTime | ✔ | ISO8601 | Current Sale System time, formatted as ISO8601 DateTime. e.g. "2019-09-02T09:13:51.0+01:00" |
| SaleSoftware | ✔ | Object | Object containing Sale System identification |
| ProviderIdentification | ✔ | String(1,256) | The name of the company supplying the Sale System. Provided by DataMesh. |
| ApplicationName | ✔ | String(1,256) | The name of the Sale System application. Provided by DataMesh. |
| SoftwareVersion | ✔ | String(1,256) | The software version of the Sale System. Must be the software version of the current build. |
| CertificationCode | ✔ | GUID | Certification code for this Sale System. Provided by DataMesh. |
| SaleTerminalData | ✔ | Object | Object containing Sale System configuration |
| TerminalEnvironment | ✔ | Enum | "Attended", "SemiAttended", or "Unattended" |
| SaleCapabilities | ✔ | Array | Advises the POI System of the Sale System capabilities. See SaleCapabilities |
| TotalsGroupId | String(1,256) | Groups transactions in a login session | |
| OperatorLanguage | String(2,8) | Operator language. Set to 'en' | |
| OperatorId | String(1,128) | Groups transactions under this operator id | |
| ShiftNumber | String(1,128) | Groups transactions under this shift number | |
| POISerialNumber | String(1,128) | The POISerialNumber from the last login response, or absent if this is the first login | |
| Pairing | Boolean | True if the POI ID in the MessageHeader is the PairingPOIID value from the pairing QR code data for the QR POS Pairing |
Login response
Login response
{
"LoginResponse": {
"Response": {
"Result": "xxx",
"ErrorCondition": "xxx",
"AdditionalResponse": "xxx"
},
"POISystemData": {
"DateTime": "xxx",
"POISoftware": {
"ProviderIdentification": "xxx",
"ApplicationName": "xxx",
"SoftwareVersion": "xxx"
},
"POITerminalData": {
"TerminalEnvironment": "xxx",
"POICapabilities": [
"xxx",
"xxx",
"xxx"
],
"POIProfile": {
"GenericProfile": "Custom"
},
"POISerialNumber": "xxx"
},
"POIStatus": {
"GlobalStatus": "xxx",
"PEDOKFlag": "true or false",
"CardReaderOKFlag": "true or false",
"PrinterStatus": "xxx",
"CommunicationOKFlag": "true or false",
"FraudPreventionFlag": "true or false"
},
"TokenRequestStatus": "true or false"
}
}
}
Attributes | Requ. | Format | Description |
|---|---|---|---|
| Response | ✔ | Object | Object indicating the result of the login |
| Result | ✔ | Enum | Indicates the result of the response. Possible values are "Success" and "Failure" |
| ErrorCondition | String(0,256) | Indicates the reason an error occurred. Only present when Result is "Failure". See ErrorCondition for more information on possible values. | |
| AdditionalResponse | String(0,1024) | Provides additional error information. Only present when Result is "Failure". See AdditionalResponse for more information on possible values. | |
| POISystemData | Object | Only present when Result is "Success" | |
| DateTime | ✔ | ISO8601 | Time on the POI System, formatted as ISO8601 DateTime. e.g. "2019-09-02T09:13:51.0+01:00" |
| TokenRequestStatus | ✔ | Boolean | True if POI tokenisation of PANs is available and usable |
| POITerminalData | ✔ | Object | Object representing the POI Terminal |