Skip to navigation

Card Present Overview

Accept card-present payments from your POS with the Run Developer Terminal API.

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-card to 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

Unified — charge-cardTwo-step — read-card and Payments API
Calls to take a paymentOne callA Read request, then a separate Charge request
Signature captureinclude_signatureinclude_signature
Print receiptprint_receipt inlineCall print-receipt after charging
Email receiptsend_receipt and email inlineCall /api/v1/send_receipt after charging
ResultCharge response (+ signature, stage_errors)Card token, name, expiry, amount (+ signature)
Best forMost POS integrationsIntegrations that need to act between read and charge (e.g., custom charge logic, tipping, or vaulting via the Payments API)

Supported devices

The Terminal API is compatible with the following integrated card readers:

FamilyModelsSignaturePrinter
CloverFlex, MiniSupportedSupported
CloverCompact, PocketSupportedNot supported
IngenicoLink 2500, Lane 3600Not supportedNot supported
IngenicoLane 7000, Lane 8000SupportedNot supported

Always drive feature availability from the live capabilities object on each terminal (see Terminal capabilities) rather than hard-coding by model.

Expected flow

1

Get a UAT device

Work with Integration Delivery (integrations@runpayments.io) to order a UAT device and assist with provisioning.

2

Authenticate

Authenticate using your Run Developer API credentials. See Getting Started.

3

Check terminal capabilities

List your terminals and read their capabilities to decide which features (signature, printing) to offer.

4

Process a transaction

Either:

  • Unified: call charge-card and retrieve the result by polling or WebSocket, or
  • Two-step: call read-card and retrieve the result to collect the tokenized card data from the device, then run a Charge request with the Payments API.
5

Deliver receipts

Print receipts on the device and/or email them — at charge time or afterward.

6

Reconcile

Leverage webhooks or the Reporting API to reconcile data.

In this guide