Skip to navigation

Endpoints & Errors

Terminal API endpoint summary, HTTP response codes, and error messages.

Service endpoints

For full request and response schemas, see the Terminal API reference.

EndpointMethod & pathDescription
WebSocket auth tokenPOST /api/ws-tokenIssues a single-use, 60-second token for opening a WebSocket connection to receive interaction status updates.
ConnectPOST /api/terminal/{device_id}/connectEstablishes a session with the terminal. Optional — all endpoints auto-connect. Use force: true to reconnect.
DisconnectDELETE /api/terminal/{device_id}/disconnectCloses the active session, releasing the device.
List terminalsGET /api/terminalReturns each terminal’s name, device_id, and capabilities.
PingPOST /api/terminal/{device_id}/pingConfirms the terminal is connected and responsive. Recommended health check before a transaction.
Read cardPOST /api/terminal/{device_id}/read-cardStarts a card read (tap, dip, or swipe). Returns an interaction_id; result contains the card token for a subsequent Charge request.
Read card statusGET /api/terminal/{device_id}/read-card/{interaction_id}Polls the result of a read-card interaction.
Charge cardPOST /api/terminal/{device_id}/charge-cardRead, optional signature, charge, and optional print/email in one interaction. Returns an interaction_id.
Charge card statusGET /api/terminal/{device_id}/charge-card/{interaction_id}Polls the result of a charge-card interaction, including stage_errors.
Cancel interactionDELETE /api/terminal/{device_id}/cancel/{interaction_id}Cancels a pending read-card interaction on the terminal. Not supported for charge-card.
Print receiptPOST /api/terminal/{device_id}/print-receiptPrints or reprints a receipt for the latest transaction in an order.
Send receiptPOST /api/v1/send_receiptEmails a receipt from stored transaction data. No device or session required.

HTTP response codes

CodeStatusDescription
200OKRequest succeeded.
202AcceptedInteraction accepted (read-card, charge-card). Retrieve the outcome by polling or WebSocket using the returned interaction_id.
400Bad RequestMalformed request or invalid/missing parameters (e.g., Field amount is invalid).
401UnauthorizedAccess token missing, invalid, or expired — refresh and retry. On print-receipt, {"error":"Failed CardPointe terminal authentication"} indicates an upstream terminal auth failure instead.
403ForbiddenThe credential is valid but the device_id isn’t associated with the calling MID.
404Not FoundThe terminal, session, or interaction doesn’t exist — including interactions past their 3-minute TTL.
409ConflictThe terminal already has an active session. Resend connect with force: true.
422Unprocessable EntityWell-formed but can’t be processed — e.g., cancelling an interaction that isn’t pending, or an invalid receipt email.
429Too Many RequestsThe per-credential rate limit was exceeded. Applies to every terminal endpoint — see Rate limiting.
500Internal Server ErrorUpstream timeout or processor error. Retry; contact support if it persists.
503Service UnavailableService temporarily unavailable. For read-card / charge-card, the interaction was never queued and is safe to retry.

print-receipt returns 400 with one of these messages, which you can match on:

MessageCause
Field trans_id is requiredMissing or invalid parameter.
Not supportedDevice has no printer.
No transaction found for the given trans_idNo match for this merchant.
No order_id found for the given transactionTransaction has no order.
trans_id is not for the most recent transaction within this orderStale reprint attempt.
Terminal is unavailable.Device offline or busy.
Terminal in merchant mode. Launch customer mode and try again.Device in the wrong mode.
Interaction was cancelled.Cancelled at the device.

Upstream vendor errors may also surface as a 400 carrying the vendor’s own message — treat this list as the set you can match on, not an exhaustive set.

Questions?

Contact integrations@runpayments.io for provisioning support, UAT device requests, or to confirm endpoint availability for your integration phase.