Take payments in person — at a counter, market, or event — using Stripe Terminal hardware. The same account, ledger, and reporting cover both online and in-person payments.
1. Register a location
A location groups readers by physical site.
curl https://payments.leffelconsulting.com/v1/terminal/locations \
-H "X-Api-Key: lc_live_XXXXXXXXXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{
"displayName": "Main Counter",
"line1": "123 Main St",
"city": "Austin",
"state": "TX",
"postalCode": "78701"
}'
2. Register a reader
Use the registration code shown on the physical reader and attach it to a location.
curl https://payments.leffelconsulting.com/v1/terminal/readers \
-H "X-Api-Key: lc_live_XXXXXXXXXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{ "registrationCode": "simulated-wpe", "locationId": "tml_1Nxyz...", "label": "Front register" }'
3. Get a connection token
Your point-of-sale app initializes the Terminal SDK with a short-lived connection token:
curl -X POST https://payments.leffelconsulting.com/v1/terminal/connection-token \
-H "X-Api-Key: lc_live_XXXXXXXXXXXXXXXXXXXX"
{ "secret": "pst_test_..." }
4. Take the payment
Create a payment the same way as online — POST /v1/payments/intents —
then collect and process it at the reader with the Terminal SDK. The reader captures the card and the
payment settles to the merchant, with the platform fee applied.
Tip
Card-present payments plug into the same lifecycle as online payments — you still receive
payment_intent.succeeded and can look up the payment by lcPaymentId.
See the Terminal API reference for every field.