NAV Navbar
Logo

title: API Reference

language_tabs: - python - shell

toc_footers: - Sign Up for a Developer Key

includes: - paymenttypes - accounttypes - tendertypes - requeststatuses - responsetypes - errors - response_errors

search: true

About this Documentation

As such it is a work in progress and may be incomplete or incorrect in some areas. If you find anything that you feel may be incorrect or incomplete please contact Ezidebit and we will endeavour to improve this documentation and resolve any issues you may have.

eftpos-support@ezidebit.com.au

This document is intended to be used by software developers working for integrators with the responsibility of integrating this API into their application to provide the ability to manage an EFTPOS terminal.

The only endpoints currently supported are Tender and Request. Other endpoints are included so that you can become familiar with the final state of the API but they are not be used until we announce they are available.

Introduction

Welcome to the Ezidebit EFTPOS API.

The Ezidebit EFTPOS API is an easy to use API that allows you to integrate EFTPOS functionality directly into your application.

Enabling your users to:

  1. Process transactions at the POS
  2. Increase accuracy at the POS
  3. Increase the speed and throughput of your POS transactions
  4. Remove the need to rekey sales on the terminal
  5. Improve reconciliation
  6. Consolidate settlements with other Ezidebit payment channels

The Ezidebit EFTPOS API is an asynchronous API as a PinPad transaction may span several seconds and potentially more than one minute (a consumer may take some time to find and present a card). This means that there is both a request process (with an immediate response) and a separate response (via webhooks) to report the result of a request or progress during a request.

Your integration should expect to receive responses at any time and process them as required. The default method for returning responses to your application is HTTPS Webhooks. See Responses for more information.

Getting Started

Don’t have a Developer Account? .. get started now

Ezidebit EFTPOS API endpoints are hosted at the following base URL’s, you should use the Sandbox environment while developing and testing and the Production environment when your customers are using EFTPOS with a production terminal.

Environment Base URL
Production https://eftpos.ezidebit.com.au/api
Sandbox https://eftpos.demo.ezidebit.com.au/api

For example, the tender API’s full endpoint in production is:

https://eftpos.ezidebit.com.au/api/tender

All requests should be passed with the header:

Content-Type: application/json

otherwise, HTTP 415 error code will be returned. We currently only support JSON, other formats may be supported in the future.

To be able to connect to the EFTPOS platform you will need to provide some information to identify the business and the terminal that is being integrated.

Each terminal will have its own unique Terminal ID (TID) that will identify each individual terminal that is to be integrated.

Term Description
Terminal Id A terminal Id is a unique value that identifies the terminal that is being integrated. If a business location has more than one terminal they will have a terminal id for each terminal. Terminal Id’s will be supplied with the terminal when they are delivered to the business and you will receive a virtual terminal id with your developer account for testing.

The following diagram shows a high-level overview of the API Request Process and some error conditions that may occur.

HTTP Flow

Security

To ensure the security of your payment data the API can only be called over HTTPS and will only support TLS 1.2 or greater so if your client does not support TLS 1.2 you will need to upgrade your browser or client.

We recommend that you apply some security measures when you process our response webhooks to ensure they are legitimate responses from Ezidebit. See Webhook Security.

IP-Based Access Control

The Ezidebit API will apply access control to all requests where the credentials used (Integrator API Key and TerminalId) are used from more than 1 IP address and access is interleaved (accessed from one IP .. then another .. and then back to the original IP).

To accommodate for the ability for the IP to change the process will work as follows:

  1. We will record the IP associated with each request against the API Key and Terminal Id used.
  2. If a different IP is received for a credentials pair the request will be allowed.
  3. If the original IP is received again then further requests with different IP’s to the original will be blocked and you will be notified of the issue.

The block will be removed after 1 hour and if the situation occurs again it will again be blocked for 1 hour. Ezidebit support will also be able to remove the block if required.

Authentication

To access the Ezidebit EFTPOS API you will need an API key which you can get by registering on our Developer Portal.

Once you have your API key you will need to include it in all calls you make to the EFTPOS API in an Authorization header.

The API uses Basic Authentication where you pass your api_key as the username and there is no password.

Please consult the documentation on your http client on how best to implement basic authentication.

Handling Responses

See the Responses section for more information.

We support Webhooks or Polling for getting responses to asynchronous API calls. Webhooks are our preferred option but if your environment does not support this then you can poll for responses using the Request endpoint.

Testing

Before your integration can be certified and released you should test your integration in the Sandbox environment with our Virtual Terminal.

Virtual Terminal

A virtual terminal allows you to test your integration without the need for a physical terminal to connect to. This allows you to get started with your integration immediately. You can complete most of your integration against a virtual terminal.

When you create your account we will automatically create credentials for you to use your virtual terminal.

When working with a virtual terminal your transactions will settle through the sandbox backend.

To use the virtual terminals send your virtual credentials to the API.

Certification

Before you can use your integration for live transactions it will have to be certified by Ezidebit. Once you have developed and tested your application please contact integrations to book in your certification.

The certification process will take a few weeks.

Versions

All calls to the API are against the latest version by default.

If you would like to specify a particular version of the API then please provide a version header to select the version of the API you would like to use.

Api-version: <VERSION>

You can also set your default version in your developer portal and this version will be used for all calls you make.

RequestId

Every request will be assigned a unique Request Id and will be returned in a response header.

Ezidebit-RequestId: <RequestId>

The RequestId is generated and returned on every request you make to the API (including requests that generate errors).

This RequestId will be returned in every response for the request and can be used at any time to query the status of a request and retrieve every response that occurred that originated from that request.

Response Idempotency

We will endeavour to deliver each webhook response once only (once you acknowledge it). If you would like to ensure your event processing is fully idempotent you can also manage a list of processed events and ensure you do not processed already logged events.

Transaction Control

The Ezidebit API automatically manages contention for a payment terminal for you and will apply restrictions on access for long running requests. Most operations are atomic and if they are accepted by the API (202) then they are processed without locking access to the terminal.

Ezidebit uses 2 different timeout periods to help you manage transactions, these are:

Timeout Default (seconds) Notes
Short Timeout 20 This timeout is used for operations that require no human intervention and should complete quickly
Long Timeout 60 This timeout is used for operations involving human interaction and the time to complete can be variable and delayed. It is important to set a reasonable timeout that allows reasonable time for operations to complete.

Timeouts are reset on each interaction, so a transaction that includes multiple steps may not timeout even if the total time runs longer than the default timeout.

Each endpoint provides the following Transaction Control. When access is blocked no other requests will be processed until the transaction completes, is canceled or times out.

Endpoint Timeout Blocks Access
Status Short No
Tender Long Yes
Cancel Short No
Print Short No
Manual Short No
Settle Long Yes
Respond Short No

When a transaction times out it will be cleared. If you call an endpoint while a transaction is in progress you will receive a 409 Conflict response.

Pair

Pair with PinPad.

Initiates trust relationshiop between Api and a PinPad.

Below is an example of how a typical pairing would flow. This transaction involves a pairing initiated from a client or Browser and response to be sent back synchronously. User needs to verify the match on the Response code and on the pinpad (By clicking Yes/No), and if so then pairing is successful. PinPad must be in a pairing state in order to accept pairing requests.

HTTP Request

GET https://eftpos.ezidebit.com.au/api/pair/terminal_id

HTTP PARAMETERS

Parameter Required Description
terminal_id Yes The Ezidebit Terminal ID (ETID).

A pair request will return one of the following status codes.

Code Description
200 The request was successfully received for processing with paring code generated for confirmation.
400 There was a problem with the request .. please check the request parameters.
403 The credentials you provided were not able to be authorised.
422 The request wasn’t processed. Most common issues: no connection with PinPad, PinPad already paired, pairing was not initiated on PinPad.
500 An error occurred while processing the request.

Result Body

Parameter Description
request_id The unique request id for the tender request. This is returned for all successful requests.
terminal_id The Ezidebit Terminal ID (ETID).
verification_code The code to verify against the one displayed in PinPad.

Key rolling.

Periodically every 7 days from the last key exchange the PinPad will request a key rolling, which updates security keys on both PinPad and in EFTPOS API. PinPad will initiate 3 attempts to complete this. Key rolling is handled by EFTPOS API and will be done automatically. In the unlikely event of unsuccessful Key rolling within 3 attempts, the keys will be removed from the PinPad and Pairing process will have to be repeated.

Status

Get the status of the PinPad.

The status will automatically be returned when you first connect but you can get the status at any time by calling this endpoint.

The status endpoint will return detailed information on the status and configuration of:

Item Notes Examples
PinPad Information about the PinPad and any of its configuration Serial #, MID, TID
Acquiring Bank Backend If available it will return information on the status of the Banking Platform Is connected?
Ezidebit Platform Information on the Ezidebiy Platform Version
PinPad Capabilites Eg. which API’s does the Platfom support for the EFTPOS partner associated with the Pinpad Does not support Cancel or Void
Integrator The integrator associated with the current terminal Integrator Name

REQUEST

GET https://eftpos.ezidebit.com.au/api/status

HTTP PARAMETERS

Parameter Required Description
terminal_id Yes The Ezidebit Terminal ID (ETID).
webhook_url Yes The URL where webhooks are to be sent for this request. If not specified then your default will be used.

RESPONSE

This endpoint is asynchronous please check for a webhook response.

Code Description
202 The request was successfully received for processing and processing is underway.
400 There was a problem with the request .. please check the request parameters.
403 The credentials you provided were not able to be authorised.
500 An error occurred while processing the request.

Webhook Response

StatusResponse

Parameter Description
event_type The event type this response is for. This will be set to STATUS.
request_id The RequestId corresponding to the original request that leads to this response.
terminal_id The Ezidebit Terminal Id where the status is for.
status An indication of whether the EFTPOS platform is active and available to successfully process a transaction. This will either be ACTIVE or INACTIVE.
data json data containing status information for the pinpad and other parts of the eftpos platform.

Tender

Tender an amount (Sale).

Start a sale on the PinPad for a specified amount.

Note: does not currently support cash out this will be added in a future update to the API.*

# With shell, you can just pass the correct header with each request
curl "https://eftpos.ezidebit.com.au/api/tender"
  -H "Authorization: <API KEY>"
{
  "TerminalId":"EZI-EFTPOC-003",
  "Command":"TenderResponse",
  "ResponseBody":{
    "Data":"",
    "Success":true,
    "ErrorMessage":"OK"
  }
}
import requests

# tender $20.00 on the PinPad

tender_body = {
  "terminal_id": "EZI100233",
  "amount": "2000"
}

requests.post("https://eftpos.ezidebit.com.au/api/tender", body=tender_body, headers={"Authorization": "<API KEY>"})
{
  "TerminalId":"EZI-EFTPOC-003",
  "Command":"TenderResponse",
  "ResponseBody":{
    "Data":"",
    "Success":true,
    "ErrorMessage":"OK"
  }
}

Below is an example of how a typical tender transaction would flow. This transaction involves a sale initiated from a client, causing the API to be called from the server and webhook responses to be handled via the server.

Tender Flow

HTTP Request

POST https://eftpos.ezidebit.com.au/api/tender

POST Body

Parameter Required Description
terminal_id Yes The Ezidebit Terminal ID (ETID).
webhook_url Yes The URL where webhooks are to be sent for this request. If not specified then your default will be used.
amount Yes The amount to be tendered in cents. Eg. $12.50 = 1250.
cashout_amount No The amount of Cash Out with the transaction. Eg. $12.50 = 12.50. Not currently supported
payment_type No The payment type that the tender is for (if known in advance). This is not currently supported.
reference No Your payment reference. This can be up to 16 characters and can be any printable ASCII characters.
transaction_type No The type of transaction to perform. If this is not specified then ‘Purchase’ is used.

A tender request will return one of the following status codes.

Code Description
202 The request was successfully received for processing and processing is underway.
400 There was a problem with the request .. please check the request parameters.
403 The credentials you provided were not able to be authorised.
409 A transaction is already in progress and this request cannot be accepted. Either cancel the transaction or wait for it to complete or timeout.
500 An error occurred while processing the request.

Result Body

Parameter Description
request_id The unique request id for the tender request. This is returned for all requests even failure.

Webhook Response

The tender request may result in more than one response as Status Responses are generated throughout the Tender process. You will always receive one TenderResponse at the end of each tender.

TenderResponse

Parameter Description
event_type The event type this response is for. This will be set to TENDER.
request_id The RequestId corresponding to the original request that leads to this response.
terminal_id The Ezidebit Terminal Id where the transaction occurred.
reference The integrators supplied reference for this tender transaction (specified in the request).
status The status of the tender transaction. Either SUCCESS or FAIL.
response_message A message describing the status of your tender transaction.
error_code The specific error code associated with the tender transaction. See Response Error codes for a full list.
amount The amount of the transacton in cents.
amount_tip The amount given as a tip in cents.
account_type The account type used for the transaction. Please see Account Types.
auth_code ?????
bank_date The date that the bank???.
bank_time The time that the bank???.
raised When the webhook resposnse was sent as an ISO8601 datetime string.
customer_receipt The content of the receipt formatted for printing.
masked_pan A masked version of the PAN for the card used.
card_type The card type used in the tender. See Payment Types.
host_response_code The direct code returned by the bank for this tender.
host_response_text The direct text response returned by the bank for this tender.
merchant_id The MID for the merchant associated with the tender.
rrn better description
stan better description

Refund an amount.

Start a refund transaction on the PinPad for a specified amount.

HTTP POST

POST https://eftpos.ezidebit.com.au/api/tender

POST Body

Parameter Required Description
terminal_id Yes The Ezidebit Terminal ID (ETID) for the terminal to perform the refund on.
amount Yes The amount to be refunded in cents. Eg. $12.50 = 1250.
reference Yes Your payment reference, this will be returned to you at the completetion of the refund.
transaction_type Yes The transaction type refund for a refund.
rrn Yes This is the RRN returned for the originating transaction that this refund is for. This is required for a refund.
webhook_url Yes The URL where responses are to be sent for this request. If not specified then your default will be used.

Void the previous Transaction

Voiding a transaction will remove it from t

HTTP POST

POST https://eftpos.ezidebit.com.au/api/tender

HTTP Body

Parameter Required Description
terminal_id Yes The Ezidebit Terminal ID (ETID).
webhook_url Yes The URL where webhooks are to be sent for this request. If not specified then your default will be used.
transaction_type Yes The transaction code 6 to void the previous transaction.

Cancel

Cancel the current transaction on the PinPad.

If you need to cancel the current transaction on the Pinpad you can call this endpoint. If the transaction is currently in a state that can be canceled the transaction will be canceled.

If the transaction cannot be canceled then you will need to either void or cancel the transaction once it completes.

HTTP Post

POST https://eftpos.ezidebit.com.au/api/cancel

POST Body

Parameter Required Description
terminal_id Yes The Ezidebit Terminal ID (ETTD).
webhook_url Yes The URL where webhooks are to be sent for this request. If not specified then your default will be used.

Print

Initiate a print process if the device supports printing (integrated receipt). If the device does not support integrated receipt it might return a status indicating the POS should handle printing with relevant details on the current tender.

HTTP POST

POST https://eftpos.ezidebit.com.au/api/print

HTTP Body

Parameter Required Description
terminal_id Yes The Ezidebit Terminal ID (ETTD).
webhook_url Yes The URL where webhooks are to be sent for this request. If not specified then your default will be used.

Manual

Initiate a manual transaction.

If the card will not work (swipe,tap,chip) then this tells the PinPad to allow the number to be manually entered at the request of the POS operator.

This may not be required for all terminals but this will be needed for terminals that lock down the ability to start a manual transaction at any time unless requested via software.

HTTP Post

POST https://eftpos.ezidebit.com.au/api/manual

HTTP Body

Parameter Required Description
terminal_id Yes The Ezidebit Terminal ID (ETTD).
webhook_url Yes The URL where webhooks are to be sent for this request. If not specified then your default will be used.

Settle

Settle a session on the PinPad.

This instructs the PinPad to settle the session at the current time and print a statement showing activity for this period.

HTTP Post

POST https://eftpos.ezidebit.com.au/api/settle

POST Body

Parameter Required Description
terminal_id Yes The Ezidebit Terminal ID (ETTD).
webhook_url Yes The URL where webhooks are to be sent for this request. If not specified then your default will be used.

Respond

Respond to a request from the API

Whenever the API sends you a PromptResponse we will expect a Response from you to indicate that you have received the response and how you have actioned the request.

For example, we may ask you to provide some information as part of the transaction. If you do not have that information you might have to prompt your user for the information and then pass it onto us.

You can respond by calling this endpoint with the content of your response and the associated response id.

Some responses will be mandatory.

See Prompt Response for information on how you will receive a PromptRequest webhook.

HTTP Post

POST https://eftpos.ezidebit.com.au/api/respond

POST Body

Parameter Required Description
request_id Yes The request id for the transaction that is being responded to.
response_type Yes The type of response that is being responded to.
response_value Yes The value to be returned for the given response type.

Request

The request endpoint will allow you to retrieve information on requests that are being processed or have been processed. This allows you to determine the status of a request at any time and to generate data to show your usage of the API over time.

Every request to the Ezidebit API will return a unique RequestId (even failure), this can be passed to this API to retrieve the history for that request.

Retrieve information on a request

HTTP Get

GET https://eftpos.ezidebit.com.au/api/request/<request_id>

Result Body

Parameter Description
request_id The RequestId for the request.
status The current status of the request. (See Request Statuses).
responses A List of responses in reverse chronological order for the request at this point in time or a single response.

Retrieve information on transactions over a time period

HTTP Get

GET https://eftpos.ezidebit.com.au/api/request

Only requests associated with the current TerminalId will be returned.

Get Parameters

Parameter Description
from_time The DateTime from which requests should be returned as UTC ISO8601.
to_time The DateTime to which requests should be returned as UTC ISO8601. If to_time is omitted then all requests up to the current time are returned.

Result Body

Parameter Description

Responses

The Ezidebit EFTPOS API is different to most API’s as it is Asynchronous and you will submit a request and then receive a response on a different channel for many requests. This is because of the length of time some operations may take,often up to one minute, which makes it impracticle to wait for a response.

It is also possible you will receive multiple responses for each request, this will be the case when we send you status updates on the request while it is in progress. You should process all responses but you may decide that some are not necessary for your application and you can ignore them.

Ezidebit EFTPOS currently supports Webhooks and Polling for our response channel but we may develop other channels in the future such as websockets to fit particular cases.

Our preferred option is to receive responses via webhooks, the polling option should only be used when absolutely neccessary.

Webhooks

All responses will be in the form of webhooks which will be posted to the webhook address you supplied.

You should ensure your server is able to receive POST requests on the address you supplied in a timely manner.

It is up to you to decide how you will respond to each webhook and also whether you intend to handle then at all (if you don’t remember to return the appropriate status code).

Webhook Delivery

Responses will be sent until they are successfully received or they timeout. As a typical EFTPOS transaction is short our timeouts will also be short.

To acknowledge a webhook please:

If you do not respond then we will retry sending the webhook for up to 5 minutes.

Webhook Security

When you receive a response from the eizdebit EFTPOS API you should be checking to ensure these responses are coming from Ezidebit.

You can do this in 2 ways:

  1. Whitelist requests from Ezidebit IP’s.
  2. Setup a secret token and validate it on each request.

Whitelisting Ezidebit

When a request comes in you can check the request to determine the IP address of the requestor and only allow the message to be processed if it is on the whitelist.

The whitelist can be found by calling the config endpoint.

Setting your secret token

PROCESS TBA.

Something like defining a secret key on the Ezidebit Developer Portal and then setting this key on the integrators server so they can compare this value in each request .. key sent as some sort of header …

Note: Please use a random string with a high degree of entropy for the secret key.

Note: Don’t store this secret in an insecure location (including your source code), anyone with this secret can effectively send fake data posing as Ezidebit.

Rate Limiting Replies

One way your infrastructure can be attacked is via a Denial of Service (DOS) attack and the endpoint you provide to handle webhooks can also be attacked. You should apply your rate limiting policy to your webhook endpoints as well and if you are not rate limiting you should consider rate limiting your endpoints.

Please allow for a reasonable number of connections.

Polling

For integrators who cannot support webhooks we support (but do not recommend) polling via the Request endpoint. Each request will return a RequestId and this can be used to determine the status of that request.

When polling you should immediately enter a loop after making the initial request and then check for status often enough to be able to provide a responsive experience to the user. We recommend polling every 500ms, this can be lower but we will only support 200ms and above.

Remember to handle the case where a response is not provided and include appropriate timeouts. When using timeouts remember to reset the timeout after each response that is not a tender response (eg. a status response).

If a request has not generated any responses yet you will receive a 404 error for the request_id. If you receive an 404 error you should continue to poll until you reach the point you have decided to timeout the operation.

Response Structure

Each webhook response will contain different information but each response will contain some common information that you can use to help you decide on how best to process a response.

Common response elements are:

Field Description
response_type Reference the Response Type list for a list of all response types and their codes
response_time The date and time the webhook was raised on the server. This DateTime is UTC RFC3339 format.
terminal_id The Ezidebit terminal id the response is for.
user_client_id A user-defined identifier for the client that is associated with the response. This value can be passed in via the request and passed on via the webhook to help in determining which client the response should be delivered to.
status_code A general status code for the operation.
attempt_number The current attempt number for this webhook response. For the first try, this will be set to 1 and each subsequent attempt will increment this number.
process_time The number of milliseconds since the request that lead to this response was received. This is useful for understanding the time it takes to process payments.

In addition to the common response elements, there will be a specific set of responses for each response type listed below.

Response Types

You can expect to receive webhooks with these response types, you can decide which are appropriate for your application and process only those.

Type Notes
tender_response This response occurs when a sale has been completed. This response will be sent in all cases regardless of the outcome of the sale.
refund_response This response occurs when a refund has been completed. This response will be sent in all cases regardless ofthe outcome of the refund.
timeout An operation timed out and is now considered abandoned. Any subsequent activity will be considered part of a new transaction.
status_response A response to a requested status or an updated on the current status of the current operation. Many operations will return a status_response rather than a specific response to the request.
response_request A request by the API to provide some information. This action is usually initiated by the payment terminal and should only be required in certain conditions.

Tender & Refund Response Data

A tender response will include the following additional fields.

Field Desciption
account_type
amount The amount originally tendered and charged (if successful) (In cents).
amount_purchase The amount of he transaction that was purchases (in cents).
amount_tip the amount of any tip given as part of the transaction (in cents).
auth_code The 'Authorisation Code’ returned by the Host.
bank_date The date the financial transaction occured on. Format is DDMMYYY.
bank_time The time the financial transaction occured on. Format is HHMMSS.
customer_receipt The customer receipt formatted to be printed. This can be sent to a printer or receipt printer for printing.
card_type
cash_out The cash out amount in cents. Note not currently supported.
error_code
event_type REFUND for a refund. You should check this field to determine when a refund has been completed.
host_response_code The response code returned by the host for the refund.
host_response_text A text description of the resposne returned for the refund.
masked_pan The Primary Account Number (PAN) for the card that was used in this refund. The PAN is masked and will only include the last 4 digits.
merchant_id
raised When the refund was originally raised on the Ezidebit EFTPOS platform. Format is an ISO8601 datetime.
reference The reference you provided when you initiated this refund. Use this field to identify the refund in your system.
request_id An ezidebit assigned unique identifier for the refund transaction.
response_message
rrn The Retrieval Reference Number (RRN) for the refund.
stan The Sequential Transaction Audit Number (STAN) for the refund.
status
terminal_id The Ezidebit terminal id where the refund transaction occured.
payment_type The type of payment used if available. Please refer to payment types for definitions.
transaction_reference An Ezidebit unique reference for the transaction that was processed.
user_transaction_reference A unique transaction reference provided by the user and relayed in the response to help in reconciling the transaction.
transaction_status The status of the transaction. See transaction statuses for valid statuses.
status A message indicating the status of the transaction. This message is intended as a user readable statement of the status of the transaction that was just processed. You can either use this message in your own user interface or generate your own.

Response_Request

Field Description
response_type The type of response that is being requested. Refer to Response Types.
response_values The list of valid responses for this request. eg. ['Yes’, 'No’].
seconds_available The number of seconds within which a response is required. This is governed by timeouts on the terminal and a response may need to be provided within this period for the operation to continue.

Timeout Response Data

A timeout response returns little additional data other than responding with the timeout period that was enforced. The general status code will indicate the timeout.

Field Description
timeout_seconds The timeout period that was enforced for this timeout in seconds. This is useful if you feel the timeout setting needs to be changed.

Configuration

To be able to identify your terminal to the EFTPOS architecture you will need to provide some identifying information on some or all calls. This information will have to be configured in your application so that it is available when you make a call to the API.

You should decide the best solution for your application.

You need to store the following information for each terminal at a location and know which terminal is associated with which client.

Field Description
Terminal Id This is a unique identifier indicating your terminal

Store in configuration

You can store the values in a configuration file where they cannot be modified and can be set on install or during an update.

This makes it harder for users and technicians to make changes but your users are less likely to change a setting they shouldn’t.

Have a configuration screen

If you add a configuration screen then users and technicians can easily set and update the configuration data. If you do have a configuration screen we recommend that you lock it down so that it can only be accessed with a password as changing these settings may make your EFTPOS integration inoperable.

Data

Date Formats

All dates in the API will be strings formatted to the RFC3339 or ISO8601 specification.

JSON

All data will be exchanged as JSON data. XML and other formats are not supported.

Troubleshooting

If you are having problems accessing the API then we recommend the following tools to troubleshoot your usage of the API.

Tool Link Notes
Curl https://curl.haxx.se/ A command line tool to help you call the API and see detailed information on the call. Output from curl can be submitted to our support department to help with resolving any issues.
Postman https://www.getpostman.com/postman A powerful API development platform that allows you to work with API’s in an easy to use interface.

Reference