Terminal Payments
Integrate your POS (Point of Sale) terminal with Unipaas to accept in-person, card-present payments, giving your staff and customers a seamless checkout at the counter.
You initiate a payment from your server, the cardholder taps or inserts their card at the terminal, and Unipaas confirms the result through a webhook.
Before you begin
Section titled “Before you begin”To take terminal payments you need a Unipaas device. To find out more about getting a Unipaas device and to place an order for terminals, contact support@unipaas.com.
Send the payment request
Section titled “Send the payment request”To initiate a terminal payment, make a POST /pay-ins request from your server with isCardPresent set to true.
| Field | Type | Required | Description |
|---|---|---|---|
amount | Number | Yes | Amount to charge, in major currency units. |
currency | String | Yes | Currency code, for example GBP. |
country | String | Yes | Country code, for example GB. |
isCardPresent | Boolean | Yes | Must be true for terminal transactions. |
vendorId | String | Yes | Unique identifier of the vendor using the terminal. |
orderId | String | Yes | Your unique reference for this payment. |
curl --location --request POST 'https://sandbox.unipaas.com/platform/pay-ins' \--header 'Content-Type: application/json' \--header 'Authorization: Bearer --YOUR_PRIVATE_KEY--' \--data-raw '{ "amount": 19, "currency": "GBP", "country": "GB", "isCardPresent": true, "vendorId": "{{vendor_id}}", "orderId": "1000456"}'Listen for the authorization/update webhook
Section titled “Listen for the authorization/update webhook”After the customer taps or inserts their card at the terminal, Unipaas sends an authorization/update webhook to confirm the result. Listen for this webhook to reconcile the payment.
{ "event": "authorization/update", "data": { "transactionId": "txn_123456789", "status": "Captured", "amount": 19, "currency": "GBP", "cardType": "VISA", "cardLast4": "1234", "timestamp": "2025-05-29T14:32:10Z", "orderId": "1000456" }}| Field | Description |
|---|---|
transactionId | The Unipaas transaction identifier. |
status | Updates to Captured once the cardholder approves the transaction. You may also receive failed or declined statuses. |
amount | The amount of the payment. |
currency | The currency of the payment. |
cardType | The card scheme, for example VISA. |
cardLast4 | The last four digits of the card. |
timestamp | When the transaction was processed. |
orderId | Your reference, echoed back from the payment request. |
The status updates to Captured once the cardholder approves the transaction. You may also receive failed or declined statuses, so handle these in your POS interface and show the customer the outcome.
Best practices
Section titled “Best practices”- Confirm the terminal is connected and ready before you send the payment request.
- Display clear payment instructions on your POS screen while waiting for authorisation.
- Store the webhook response for reconciliation and support purposes.