Process a PaymentIntent on a Terminal
Prompts one physical Terminal assigned to your account to collect the amount on an existing PaymentIntent.
The PaymentIntent must be in requires_payment_method, use automatic
capture, use USD, and belong to the same account and mode as the
Terminal. Do not first attach or confirm a normal card PaymentMethod.
Reusing the same Idempotency-Key safely returns the same HTTP result.
An existing active attempt is returned only when its Terminal and
payment type match this request; a mismatch returns HTTP 409.
If the Terminal’s response is ambiguous, Ionic performs a read-only
status check before responding. If the returned Terminal Payment is
still unknown, retrieve it; do not process the order again, because
the original payment may still complete.
Authorizations
Merchant secret key, or a Platform secret key with delegation.
Headers
Merchant ID when an authorized Platform acts for a connected Merchant. Omit when authenticating directly as that Merchant.
^mer_Unique checkout-attempt key. Reuse the same value only when retrying the same request body and route.
1 - 255Path Parameters
Physical Terminal selected by the POS for this checkout.
^tmr_Body
Existing PaymentIntent in requires_payment_method.
^pi_"pi_01JEXAMPLEF9W6B3C2D7K4M8N"
Tender behavior requested from the Terminal. This is not a
PaymentMethod type. debit invokes the terminal's PIN-debit path
and requires a terminal whose debit_pin capability is ready.
credit, debit Response
The Terminal Payment. Inspect status; only succeeded
means the payment was approved.
^tpr_terminal_payment ^mer_^tmr_^pi_Present only after an approved attempt creates a Charge.
^ch_PaymentIntent amount in minor currency units.
x >= 1x >= 0x >= 0usd Tender type used for this attempt.
credit, debit, ebt_food, ebt_cash 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.
pending or in_progress: retrieve this Terminal Payment until final.
pending, in_progress, unknown, succeeded, voided, declined, failed, canceled Whether cancellation was requested. This alone does not mean the payment was canceled.
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.
Safe Ionic explanation suitable for a POS.

