Ionic-Account. That merchant owns its locations, terminals, PaymentIntents,
and the payments that result. Point-of-sale software on your platform can take
a sale at any connected account’s counter with one set of platform keys.
The payment flow, statuses, and failure codes match
Accept in-person terminal payments.
Before you begin
- A platform secret key from Connect → API keys, kept on your server.
- An active connection in the same mode. The platform key and the merchant’s connection both grant each permission an operation needs:
- A unique
Idempotency-Keyon each mutatingPOST. Reuse a key only to retry the same request.
CONNECTED_ACCOUNT_ID is the merchant’s mer_… ID, selected by your
application’s authorization logic.
Find the merchant’s terminals
Every test account, including a connected account’s, includes two test locations and three ready simulated terminals. List them for the merchant:test_profile of approved, declined, or
delayed. Choose one and keep its tmr_… ID. See
Test without physical hardware
for each profile’s behavior.
Take a payment at the counter
1
Create the merchant's PaymentIntent
Create a USD PaymentIntent with automatic capture and no payment method.
2
Process it on the merchant's terminal
Select the terminal in the route and send the PaymentIntent ID. The
terminal, the PaymentIntent, and the request belong to the same merchant
and mode.
3
Read the result
A Then handle each status and failure code.
202 response means Ionic recorded the attempt. Retrieve the returned
terminal payment for the same merchant until it reaches a final status.404.
Request cancellation and
Retrieve an unresolved attempt
work the same way with Ionic-Account.
Equip a merchant’s location
Physical terminals belong to a location in the merchant’s account.- Create the location with
Ionic-Accountandlocations:write. A location needs adisplay_name,address,timezone, andmerchant_category_code. See Create a terminal location. - Request hardware for that location with
Ionic-Accountandterminals:write. The request takes thelocation_id, alabel, and optionalmetadata. See Request physical terminal hardware. - Retrieve the provisioning request until its
statusisready. Itsterminal_idthen references the merchant’s new terminal.
Ionic-Account. See
List terminal provisioning options.
Refunds and receipts
Refund a merchant’s in-person payment withIonic-Account and
refunds:write. Include terminal_id to run a card-present refund on that
terminal. When the merchant has automatic refund receipts on, its receipt
prints there. Print a receipt on request with
Print a refund receipt on a terminal,
which needs payments:write. See
Refunds and captures for connected accounts
and Refund receipts.
Batches and events
Read and refresh the merchant’s terminal batches and settlement profiles withIonic-Account and terminals:read. A platform webhook endpoint receives each
merchant’s events when that merchant’s connection grants the matching read
permission:
The event’s
account field names the merchant. See
Webhooks for platforms.
Keep terminal data with the correct merchant
Test before going live
Cover an approval, a decline, a delayed result, a retried request with the sameIdempotency-Key, a cancellation, a refund, and a batch refresh against a
connected test merchant’s simulated terminals. Then run acceptance testing on an
Ionic-assigned physical test terminal before the merchant uses production
hardware. Live terminal payments require the merchant’s account to accept live
payments. See Test before going live.
What’s next
Refund and capture
Refund, capture, or cancel a connected account’s payment from your platform.
Read the Terminal object
Check each terminal’s setup, connection, and capability states.
Handle webhooks
Receive every connected account’s events on one endpoint and match each to its connected account.

