- A payment profile that enables Card (Present).
- The
order.storeidentifiers that route the payment to a specific terminal. - A
publishconfiguration that initiates the payment on the terminal, andconfiguration.channel: in_storeto classify it as an in-store payment.
Endpoint
The Checkout API is now available under
https://api.dintero.com/v1/accounts/{account_id}/payments/.The previous https://checkout.dintero.com/v1/ base is still supported, so existing integrations continue to work without changes.1. Enable the payment method (payment profile)
In-person payments are enabled on a payment profile in Dintero Backoffice → Settings → Payment Profiles. Enable Card (Present) on the profile you reference withprofile_id, and the session accepts terminal payments without any payment-method configuration in the request body.
Managing payment methods through profiles means you can add or change methods without redeploying integration code. Avoid sending a hardcoded
configuration.seitatech block on the request - let the profile drive the payment method.2. Route to a terminal (order.store identifiers)
The payment profile toggles the payment method on; order.store says which physical terminal the payment runs on. The terminal ID belongs in order.store.terminal_id.
The
order.store.id you use today in the payment-link flow is fine to keep using - in-person payments use the same store identifier. You just need to add terminal_id and payout_destination_id alongside it.3. Initiate the payment on the terminal (publish)
Add a publish push/terminal configuration to the session request to initiate the payment on the terminal as soon as the session is created. Set configuration.channel to in_store as well.
seitatech.in_person is the only enabled payment method or there are other payment methods on the payment profile. The publish configuration initiates the payment on the terminal in both cases.
Sale: full request
This example combines all three pieces to create a session that immediately triggers a payment on terminalT0292 at store oslo-center for 399.00 NOK. The payment profile referenced by profile_id has Card (Present) enabled, and the publish configuration initiates the payment on the terminal.
Amounts are in the smallest unit of the currency.
39900 is 399.00 NOK.After you create the session
Cancelling a payment
Once Dintero starts the transaction on the terminal, you can cancel it in two ways:- From the terminal — the customer or operator cancels directly on the device.
- Via the API — call POST /sessions/{session_id}/cancel to cancel the session programmatically.
DECLINED.
Receiving the result
Use thecallback_url and webhooks to know when the transaction is authorized and captured. Terminal payments use auto-capture by default. See Checkout webhooks and transaction management.
Refund
seitatech.in_person supports both full and partial refunds. The refund
requires a terminal_id in the request body, and the cardholder must be
present at the terminal to approve by tapping their card.
Refunds use the standard refund endpoint:
Refund flow
- Your server sends the refund request. The API returns
202 Acceptedand the transaction receives anINITIATE_REFUNDevent while the status remainsCAPTURED. - The terminal prompts the cardholder to approve the refund by tapping their card.
- The refund completes when the cardholder approves, or is voided if they cancel on the terminal.
Terminal requirements
The terminal must be active on the samepayout_destination_id as the original transaction. It does not have to be the same terminal that processed the original payment.
A valid terminal_id always returns 202 Accepted. If the terminal is offline, the INITIATE_REFUND event expires after 120 seconds and the transaction is updated with a failed refund event.
Use
callback_url with report_event=REFUND or a webhooks subscription to receive a notification when the refund status is updated.