Settlement

In this guide, you will learn how to trigger a settlement, query settlement totals for today or a previous date, and poll for the result.

Overview

When a customer pays using their card, the funds are not sent to the merchant's bank account immediately. They are only transferred when the merchant performs a settlement - typically at the end of the trading day. A settlement totals all payments received and subtracts all refunds, then sends the net amount to the bank in a single transfer.

Here is a simple example:

TransactionAmount
Purchase of shirt+$20.00
Purchase of hat+$10.00
Refund of hat−$10.00
Total settled$20.00

Settlements and settlement enquiries are both submitted to the same endpoint:

POST /v1/settlements

Once created, poll for the result using:

GET /v1/settlements/{settlement_id}

The polling loop for settlements is identical to the one used for transactions - see Transactions Overview for the full polling loop implementation.


Settlement

A settlement closes the current batch and sends the net total to the merchant's bank.

POST /v1/settlements

{
  "type": "SETTLEMENT"
}

The terminal will display settlement progress to the merchant. Poll the returned settlement_id until the settlement reaches FINALISED.


Settlement enquiry

A settlement enquiry retrieves a summary of transactions without closing the batch or transferring any funds. Enquiries can be made any number of times throughout the day.

Today's settlement

POST /v1/settlements

{
  "type": "ENQUIRY"
}

Settlement for a specific date

POST /v1/settlements

{
  "type": "ENQUIRY",
  "enquiry_date": {
    "year": 2024,
    "month": 11,
    "day": 7
  }
}
FieldTypeRequiredDescription
enquiry_dateobjectNoThe date to query. If omitted, returns today's settlement summary
enquiry_date.yearintegerYes (if date provided)Four-digit year
enquiry_date.monthintegerYes (if date provided)Month (1–12)
enquiry_date.dayintegerYes (if date provided)Day of month (1–31)

Polling

After submitting a settlement or enquiry, poll the returned settlement_id using:

GET /v1/settlements/{settlement_id}?min_version={min_version}

Pass the min_version from the last response to receive only updates. Continue polling until the settlement reaches FINALISED.

See Transactions Overview for the complete polling loop implementation, including backoff strategy and Action Framework callbacks.


Receipt codes

Settlement and settlement enquiry receipts use three-letter codes to identify transaction types:

CodeTransaction type
PURPurchases
TIPTips
SURSurcharges
REFRefunds
CASCashouts
TOTTotals

Action Framework callbacks

Settlements trigger the following Action Framework callbacks:

Action codeDescription
SETTLEMENT_COMPLETEThe settlement has completed. Trigger any post-settlement logic in your POS, such as printing a settlement report or resetting the current transaction batch.
RETRY_SETTLEMENTThe settlement needs to be retried. Resubmit the same settlement request.

Recovery

Settlement uses the same polling loop as transactions and is subject to the same failure scenarios - network disconnection, terminal offline, and timeout. The override flow applies to settlements in the same way.

See Transaction recovery for full details.