# API reference

Base URL `https://paylynks.io/api/v1`. Authenticate with `Authorization: Bearer <key>`. Amounts are integer cents. Send `Idempotency-Key` on POSTs; the same key and body return the same response. Pin a version with `PayLynks-Version: 2026-10-21` (see [Security and API versions](/docs/security)).

| Method | Path | Key | Purpose |
| --- | --- | --- | --- |
| POST | /payment_intents | secret | Create a payment intent |
| GET | /payment_intents/:id | secret | Retrieve |
| POST | /payment_intents/:id/quote | pk or sk | Price for a card |
| POST | /payment_intents/:id/confirm | pk or sk | Charge (saved cards / off-session need sk; bank payments take `mandate`) |
| POST, GET | /payment_links | secret | Create, list |
| GET, POST | /payment_links/:id | secret | Retrieve, update / deactivate |
| POST, GET | /customers | secret | Create, list |
| GET | /customers/:id | secret | Retrieve |
| GET | /customers/:id/payment_methods | secret | Saved cards |
| DELETE | /payment_methods/:id | secret | Remove a saved card |
| POST | /customers/:id/portal_sessions | secret | One-time customer portal link |
| POST, GET | /invoices | secret | Create draft, list |
| GET | /invoices/:id | secret | Retrieve |
| POST | /invoices/:id/finalize, /send, /void | secret | Lifecycle |
| POST, GET | /payment_requests | secret | Create (and send), list |
| GET | /payment_requests/:id | secret | Retrieve |
| POST | /payment_requests/:id/send, /cancel | secret | Resend, cancel |
| POST, GET | /subscriptions | secret | Create, list |
| GET | /subscriptions/:id | secret | Retrieve |
| POST | /subscriptions/:id/pause, /resume, /cancel | secret | Manage |
| POST, GET | /donation_pages | secret | Create, list (with totals) |
| GET, POST | /donation_pages/:id | secret | Retrieve, update / pause |
| POST | /refunds | secret | Refund a payment |
| POST, GET | /webhook_endpoints | secret | Register (secret shown once), list |
| DELETE | /webhook_endpoints/:id | secret | Remove |
| POST | /webhook_endpoints/:id/test | secret | Send a test event |
| POST | /voice_sessions | secret | Start a phone payment |
| GET | /voice_sessions/:id | secret | Status |
| GET | /voice_sessions/:id/saved_cards | secret | Caller's saved cards |
| POST | /voice_sessions/:id/charge_saved, /send_link | secret | Returning caller, text a link |
| POST, GET | /merchants | partner secret | Create a sub-merchant (returns `onboarding_url`), list |
| GET | /merchants/:id | partner secret | Onboarding status |
| POST | /merchants/:id/onboarding_links | partner secret | Fresh onboarding link |

Other endpoints: `https://paylynks.io/api/mcp` ([MCP](/docs/mcp)), `https://paylynks.io/js/v1.js` (embedded checkout), `https://paylynks.io/js/button.js` (pay button).

See [Errors](/docs/errors) for the error format and [Webhooks](/docs/webhooks) for events.
