Skip to main content
POST
Error

Authorizations

Authorization
string
header
required

Merchant secret key, or a Platform secret key with delegation.

Headers

Ionic-Account
string

Merchant ID when an authorized Platform acts for a connected Merchant. Omit when authenticating directly as that Merchant.

Pattern: ^mer_
Idempotency-Key
string
required

Unique checkout-attempt key. Reuse the same value only when retrying the same request body and route.

Required string length: 1 - 255

Path Parameters

id
string
required

Terminal Payment identifier.

Pattern: ^tpr_

Response

The cancellation request was accepted; inspect status and terminal_interaction.

payment_context
object | null
required

Bounded observations for this payment attempt. Ownership attribution is internal to Ionic. Legacy payments have a null context.

payment_lifecycle
object
required

First observed lifecycle times. Null means not observed, including historical records; times are never inferred from later updates.

id
string
required

Unique identifier for the terminal payment (tpr_…).

Pattern: ^tpr_
object
enum<string>
required
Available options:
terminal_payment
merchant_id
string
required

ID of the account that owns the terminal payment (mer_…).

Pattern: ^mer_
terminal_id
string
required

ID of the terminal that took the payment (tmr_…).

Pattern: ^tmr_
payment_intent_id
string
required

ID of the PaymentIntent this attempt pays (pi_…).

Pattern: ^pi_
charge_id
string | null
required

Present only after an approved attempt creates a Charge.

Pattern: ^ch_
livemode
boolean
required
amount_requested
integer<int64>
required

PaymentIntent amount in minor currency units.

Required range: x >= 1
amount_approved
integer<int64>
required

Amount approved so far, in minor currency units. 0 until an approval is recorded.

Required range: x >= 0
amount_remaining
integer<int64>
required

Amount still to be collected (amount_requested minus amount_approved), in minor currency units.

Required range: x >= 0
currency
enum<string>
required

Three-letter ISO currency code, in lowercase.

Available options:
usd
payment_type
enum<string> | null
required

Authoritative tender for the payment. Null while the result is unresolved or when no trustworthy tender was returned. Credit and debit are currently available. EBT values depend on terminal capabilities and are reserved for forward compatibility.

Available options:
credit,
debit,
ebt_food,
ebt_cash
status
enum<string>
required

succeeded: approved; complete the sale. voided: authorized and then voided; do not complete the sale. declined: explicitly declined; request another tender. canceled: interaction canceled or timed out. When cancellation_requested is true, the PaymentIntent is also canceled; create a new PaymentIntent if payment is still needed. Otherwise, retry this PaymentIntent only after it returns to requires_payment_method, using a new Idempotency-Key. failed: known processing failure; show the failure before a new attempt. unknown: both the command response and the immediate read-only status check were inconclusive; do not process the order again. Ionic checks the original payment again about 2, 5, 10, 20, 40 and 80 seconds later, then at growing intervals, and updates this payment once the result is confirmed. pending or in_progress: retrieve this Terminal Payment until final.

Available options:
pending,
in_progress,
unknown,
succeeded,
voided,
declined,
failed,
canceled
terminal_interaction
enum<string>
required

Reader availability for this Terminal Payment, independent from its financial status. pending means Ionic accepted the operation but the terminal interaction has not started. active means the operation may currently occupy the reader. completed means its terminal interaction finished and this payment no longer blocks a new payment; continue retrieving any financially unknown result.

Available options:
pending,
active,
completed
cancellation_requested
boolean
required

Whether cancellation was requested. This alone does not mean the payment was canceled.

cancellation_requested_at
integer<int64> | null
required

Unix epoch seconds when cancellation was requested. Null when it was not requested.

failure_code
string | null
required

Stable Ionic detail for a known non-approval. This is intentionally an open string: branch on status, use recognized values for richer POS guidance, and fall back to failure_message for an unfamiliar value. Raw device responses are not returned.

Currently emitted values:

  • dispatch_not_started: Ionic rejected the command before payment processing began.
  • processor_error: Ionic confirmed a final processing failure.
  • invalid_routing: the Merchant's payment setup is invalid.
  • pin_processing_error: PIN processing failed.
  • do_not_honor: the payment received a generic decline.
  • insufficient_funds: the payment was declined for insufficient funds.
  • incorrect_pin: the payment was declined for an incorrect PIN.
  • pin_attempts_exceeded: the PIN retry limit was reached.
  • transaction_not_permitted: the transaction is not permitted for the selected payment setup.
failure_message
string | null
required

Safe Ionic explanation suitable for a POS.

created_at
integer<int64>
required

Unix epoch seconds when the terminal payment was created.

updated_at
integer<int64>
required

Unix epoch seconds when the terminal payment was last updated.