#PlutoPay API
Accept payments — online card, ACH bank debit, in-person Terminal, hosted checkout, and shareable links — on top of your PlutoPay merchant account. The API is organized around predictable resource URLs, accepts and returns JSON, and uses standard HTTP verbs and status codes.
- Base URL:
https://plutopayus.com/api - Version: every endpoint is namespaced under
/v1/ - Auth: a per-merchant secret API key, sent as a Bearer token
- Money: all amounts are integers in the smallest currency unit — cents for USD.
$47.50→4750.
Authentication →
Get an API key and make your first authenticated call.
Choosing an integration →
Links, hosted checkout, or Elements — pick the right fit.
Card payments →
Create, capture, cancel, and refund card charges.
API Reference →
Interactive reference for every endpoint, with “Try it”.
#Quick start
Create your first test-mode card payment:
curl https://plutopayus.com/api/v1/transactions \
-H "Authorization: Bearer sk_test_your_key_here" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order_1001" \
-d '{
"amount": 4750,
"currency": "usd",
"payment_method_type": "card",
"description": "Order #1001",
"receipt_email": "customer@example.com"
}'
The response includes a client_secret you confirm on the client with your publishable key (Stripe.js / Payment Element). The final state arrives by webhook — payment.succeeded or payment.failed.
#What you can build
| Product | How |
|---|---|
| Online card payments | POST /v1/transactions → confirm client-side with the Payment Element |
| Hosted checkout | POST /v1/checkout/sessions → redirect the customer to a hosted page |
| Payment links | POST /v1/payment-links → a shareable, no-code URL |
| ACH bank debit | POST /v1/transactions with payment_method_type: ach |
| In-person (Terminal) | connection-token → create-payment → process-payment |
#Conventions at a glance
- One error shape everywhere:
{ "error": { "type", "message", "code?", "param?" } }— see Errors. - Idempotency on every POST via the
Idempotency-Keyheader, echoed back on the response — see Idempotency. - Rate limits are per-merchant; every response carries
X-RateLimit-Limit/X-RateLimit-Remaining— see Rate limits. - Test mode rides the same endpoints as live — only the key differs.
Next: Authentication · Choosing an integration · API Reference