PlutoPay Docs
API Reference Dashboard ↗

#Terminal (in-person)

Accept card-present payments on a physical reader. An external POS app drives the reader in three steps — steps 1 and 3 talk to the reader; step 2 creates the payment.

#1 · Connection token

Your POS app needs a short-lived connection token to initialize the Terminal SDK.

POST /v1/terminal/connection-token
{ "data": { "secret": "pst_test_Ab12Cd34…" } }

#2 · Create the terminal payment

POST /v1/terminal/create-payment
Field Type Required Description
amount integer Cents. Minimum 50.
currency string Defaults to account currency.
terminal_id uuid A registered PlutoPay terminal.
description string
customer_id uuid
metadata object
{
  "data": {
    "id": "019c8044-…",
    "reference": "txn_…",
    "client_secret": "pi_…_secret_…",
    "amount": 4750,
    "currency": "usd",
    "status": "pending"
  }
}

#3 · Process on the reader

POST /v1/terminal/process-payment
Field Type Required
payment_intent_id string
reader_id string
{ "data": { "reader_id": "tmr_…", "status": "in_progress", "action_type": "process_payment_intent" } }

The final result arrives by webhookpayment.succeeded / payment.failed.

#Readers & terminals

GET  /v1/terminal/readers          # list readers
GET  /v1/terminals                 # manage registered terminals (CRUD)
POST /v1/terminals                 # register a reader (name, registration_code)

In test mode, drive a simulated reader with POST /v1/terminal/simulate-payment — see Testing.