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
Payload
request 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 |