Terminal Payments
Retrieve historical payments processed by a single terminal. Use this endpoint for device level reconciliation, in store reporting, or quick troubleshooting at the terminal level.
This endpoint returns a different response schema. Terminal Payments does not return the same payment object as Merchant Payments and Partner Payments. The query parameters are identical across all three, but the response differs: Terminal Payments returns terminal and device oriented fields such as
trackingId,pageId,reqCurrencyId,payCurrencyId,emailReceipt,smsReceipt,cartItems,externalId, andmerchantLocation, and it does not returnbatchPeriod,locationId,locationName,merchantId,tenderType,transferType,originalSenderAddress, or the refund lifecycle fields. Do not write one response parser and reuse it across all three scopes.
For settlement lifecycle status, use the settlementId, batchId, and batchStatus fields on each payment together with the Settlement APIs. Note that batchPeriod is not available at terminal scope, read the payment from merchant or partner scope if you need it.
Endpoint
GET /Terminals/{id}/payments
Path parameters
id
string
Yes
The terminalId you want to query
Authentication
X-Api-Key: {apiKey}Send your API key in the X-Api-Key header. This is the preferred authentication method for Reporting endpoints, including Terminal Payments.
Existing integrations that already authenticate with an OAuth 2.0 bearer token can continue to do so, send Authorization: Bearer <access_token> instead. New integrations should use X-Api-Key.
Request headers
X-Api-Key
{apiKey}
Accept
application/json
Legacy alternative: Authorization: Bearer <access_token> in place of X-Api-Key.
Query parameters
Terminal Payments accepts the same query parameters as Partner Payments and Merchant Payments.
From
string, date-time
Yes
Start of the payment creation-time window, in UTC. Accepts either a full ISO 8601 timestamp (2025-09-01T00:00:00Z) or a date-only value (2025-09-01).
To
string, date-time
Yes
End of the payment creation-time window, in UTC. Accepts either a full ISO 8601 timestamp or a date-only value, same as From.
Page
integer
Yes
Zero based page number. The first page is 0, not 1. Default 0.
PageSize
integer
Yes
Items per page. Default 50, maximum 100.
StatusCode
array of strings
No
One or more of created, processing, completed, underpaid, overpaid, fullyRefunded, partiallyRefunded, expired, invalid, cancelled
TenderType
array of strings
No
Filter by one or more tender types. See Tender Types. Accepted as a filter, but tenderType is not returned on this endpoint's records.
TrackingId
string
No
Filter by a specific tracking identifier
PageId
string
No
Opaque cursor for continuation, echoed from a prior response
ReqCurrencyId
integer
No
Requested currency id filter
PayCurrencyId
integer
No
Payment currency id filter
CustomerId
string
No
Filter by customer id. Exact match.
DescriptionSearch
string
No
Case sensitive text search over the description
PaymentCode
string
No
Filter by payment code. Case-insensitive substring match.
Reference
string
No
Filter by merchant reference such as invoice number. Exact, case-sensitive match.
LocationName
string
No
Accepted but has no effect at this scope. See the callout below.
TerminalName
string
No
Accepted but has no effect at this scope. See the callout below.
SortBy
string
No
Field to sort by. Allowed values: statusCode, expiration, quoteExpiration, created, updated.
SortDirection
string
No
asc or desc
LocationNameandTerminalNamedo not filter at this scope. Both are accepted and return HTTP 200, but they have no effect on the result set: a value that matches nothing returns the same records as an unfiltered request. Confirmed by direct testing. This differs from Merchant Payments and Partner Payments, where both parameters filter as expected. Do not rely on either one here. This endpoint is already scoped to a single terminal, so filter client-side if you need to narrow further.
Parameter casing: all query parameters on this endpoint are capitalized (
From,To,Page,PageSize, and so on).
Pagination is zero based.
Page=0returns the first page. PassingPage=1skips the first page of results, since the request computesskip = page * pageSize.
Exact parameter definitions are also described on the Pagination and Sorting page.
Example request
Successful response 200
Field reference
id
string or null
Unique payment identifier
externalId
string or null
External identifier supplied by the integrator, when provided
terminalId, terminalName
string
Terminal that processed the payment
paymentCode
string
Short code for user facing references
settlementId
string or null
Settlement covering this payment. Null until the payment is included in a settlement.
batchId
string or null
Batch this payment belongs to. Null until the payment is batched.
batchStatus
string or null
Status of the batch containing this payment: open, closed, or hold. This is a batch state, not a settlement state.
trackingId
string or null
Pollable tracking identifier for in flight payments
pageId
string or null
Opaque continuation id that can be echoed to the PageId query parameter
reqCurrencyId, payCurrencyId
integer
Currency identifiers for requested and paid amounts
amounts
object
requested, paid, settleableAmount, and partnerFees
reference, description
string or null
Merchant supplied metadata fields
customerId
string or null
Merchant supplied customer id. A string at terminal scope, unlike merchant and partner scope where it is an object.
emailReceipt, smsReceipt
boolean
Whether a receipt was sent by email or SMS
cartItems
array
Line items associated with the payment, when supplied
expiration, quoteExpiration
date-time or null
Payment and quote expiry timestamps
paymentAddress
string or null
Destination address for the payment, where applicable to the tender
redirectUrl
string or null
Redirect target after payment completion, when configured
transactions
array
On chain transactions associated with the payment
conversions
array
Currency conversion details, when applicable
paymentNotifications
array
Notification records for the payment
webhookUrls
array of strings
Webhook targets registered for the payment
refundEmail
string or null
Email used for refund claims
merchantLocation
object or null
id, name, and address for the location
created, updated
date-time or null
ISO 8601 timestamps in UTC. Declared nullable at this scope, unlike merchant and partner scope where both are always present. They were populated in testing, but handle null defensively.
The response envelope is data, total, and page. PageSize is not echoed in the response.
Fields this endpoint does not return.
batchPeriod,locationId,locationName,merchantId,tenderType,transferType,originalSenderAddress,refundLifecycleStatus,refundInitiatedAt,refundCompletedAt, andrefundFailureReasonare not part of this endpoint's response. Use Merchant Payments or Partner Payments when you need any of them.
There is no
paymentSettlementStatusCodefield. It is not returned here and is not accepted as a filter. For settlement status, usesettlementId,batchId, andbatchStatuson the payment, together with Settlements, Batches, and Deposits.
Error responses
401
Missing or invalid X-Api-Key, or missing or invalid bearer token when using the legacy OAuth path
403
Authenticated but not permitted to view payments for this terminal
404
Terminal id does not exist or is not visible to your credentials
Best practices
Recommended patterns when using Terminal Payments
Remember that
Pagestarts at0, not1. PassingPage=1first skips the actual first page of results.Use a narrow time window, such as the last 24 hours, when polling for recent terminal activity.
Increase
PageSizefor one time backfills and reduce it for frequent dashboards or troubleshooting views, up to the maximum of 100.Use
SortBy=createdwithSortDirection=descto see the most recent payments first in device diagnostics.Handle
createdandupdatedas nullable at this scope. Merchant and partner scope always return both.Do not use
LocationNameorTerminalNamehere. Both are accepted but neither filters at this scope. Narrow client-side instead.Combine terminal scope with partner or merchant scope when investigating issues that may affect multiple devices, and expect a different field set from each.
Use
settlementId,batchId, andbatchStatustogether with the Settlement APIs to see how terminal level payments flow into merchant settlement batches and funding.
For portfolio level and store level views, see Partner Payments and Merchant Payments.
Last updated