Pay at Table

Create a payment intent

Terminal initiates a payment intent for a tab. The tab transitions to PAYING if it is in OPEN or PAUSED; PAYING tabs are no-op idempotent. On a PAUSED → PAYING transition POSLink auto-emits a TAB_RESUMED SSE event before the PAY_REQUEST. The ePOS then calls POST /v3/payment-requests (with tab_id and payment_type) to materialise the payment. Supports FULL and SPLIT payment types with CARD or CASH methods.

post/poslink/v1/tabs/{tab_id}/payment-intents

Request

Path parameters

tab_idstring uuid required

The tab identifier

Request body

terminal_idstring required

The terminal identifier

method'CARD' | 'CASH' required

Payment method

type'FULL' | 'SPLIT' required

Payment type

Example request

{
  "terminal_id": "term-001",
  "amount": {
    "amount": 1500,
    "currency": "EUR"
  },
  "method": "CARD",
  "type": "SPLIT"
}

Response

Payment intent accepted and forwarded to ePOS

tab_idstring uuid

Tab identifier

terminal_idstring

Terminal that initiated the pay intent

method'CARD' | 'CASH'

Payment method

type'FULL' | 'SPLIT'

Payment type

status'FORWARDED'

Intent status

show_bill_expires_atstring date-time

Show-bill expiry timestamp (ISO 8601, UTC), updated by this pay intent. Null when no show-bill is active for the tab.

Example response

{
  "tab_id": "3f2b6a2e-9d3e-4a1f-8f1e-6b2e5a8c9d01",
  "terminal_id": "term-001",
  "amount": {
    "amount": 1500,
    "currency": "EUR"
  },
  "method": "CARD",
  "type": "SPLIT",
  "status": "FORWARDED",
  "show_bill_expires_at": "2026-05-26T15:30:00Z"
}

Changes

No recorded changes to this operation across all 1 revision of this API.