tmr_ and belongs to exactly one Merchant and
mode. A Terminal accepts payments through
POST /terminals/{id}/process_payment_intent; the same call works for a
simulated Terminal and a physical one.
Related objects
Every Terminal belongs to a Location. A Merchant can operate many Terminals
across many Locations; each Terminal processes one payment at a time.
Three independent states
A Terminal reports three states that answer different questions. They change independently, so read the one that matches your question.Status
status tracks setup, not reachability. During physical Terminal provisioning,
the provisioning request moves through its own lifecycle and exposes a
terminal_id only when it becomes ready; the resulting Terminal is then
available as ready. A simulated Terminal is also created ready. Do not use
Terminal status to infer the state of an unfinished provisioning request.
Payments require ready; a payment sent to a Terminal in any other status
fails without reaching the device.
Connection status
connection_status reports observed reachability, together with
connection_observed_at and connection_status_stale. A ready Terminal
can be offline: the device is set up correctly but unplugged or off the
store network. When the last observation is too old to trust, Ionic reports
connection_status as unknown and sets connection_status_stale to
true; connection_observed_at preserves when the last real observation
happened.
Capabilities
capabilities maps each tender, such as credit or debit_pin, to two values:
support states whether the capability can be offered at all, while status
states whether it is operationally ready now. A conditional support value
means availability depends on the Merchant, device, payment setup, or
approval. A payment that selects payment_type: debit requires the Terminal’s
debit_pin capability to be ready, independently of its setup and connection
states.
Simulated and physical Terminals
Both kinds are the same object with the same fields and the same payment call.
A simulated Terminal is durable: create it once, store the
tmr_…, and
reuse it across test runs. Use it with
Terminal payment scenarios
to configure deterministic payment outcomes.
A physical Terminal arrives through a provisioning request. Create the
request at a Location, then retrieve it until status is ready; its
terminal_id then references the new Terminal. Ionic manages fulfillment,
and required_actions lists anything Ionic needs from you to continue.
Identifiers
Send only Ionic IDs. Requests never identify a Terminal by a hardware serial number, device credential, or another external device identifier. Ionic manages device identity so a Terminal can keep itstmr_… across hardware
replacement.
