Card Present Overview
The Terminal API connects your point-of-sale (POS) application to Run Payments’ P2PE-validated, card-present payment acceptance solution. Customers swipe, dip, or tap their card on an integrated card reader, and your POS receives the result — without card data ever touching your systems.
Runner.js is not needed for card-present payments. Tokenization happens on the device.
Two ways to take a payment
The Terminal API supports two integration paths:
- Unified (
charge-card): read the card, optionally capture a signature, charge, and optionally print and/or email a receipt — in a single call. - Two-step (read + charge): use
read-cardto tokenize the card on the device, then submit the token and amount to the Payments API yourself.
The API also provides per-terminal capability flags, inline signature capture, and standalone receipt endpoints for printing and emailing.
Choosing an integration path
Supported devices
The Terminal API is compatible with the following integrated card readers:
Always drive feature availability from the live capabilities object on each terminal (see Terminal capabilities) rather than hard-coding by model.
Expected flow
Get a UAT device
Work with Integration Delivery (integrations@runpayments.io) to order a UAT device and assist with provisioning.
Check terminal capabilities
List your terminals and read their capabilities to decide which features (signature, printing) to offer.
Process a transaction
Either:
- Unified: call
charge-cardand retrieve the result by polling or WebSocket, or - Two-step: call
read-cardand retrieve the result to collect the tokenized card data from the device, then run a Charge request with the Payments API.