# thru > Integration documentation for thru: stablecoin acquiring, hosted checkout, webhooks and settlement. Every page is also available as raw markdown. thru takes a stablecoin payment, hosts the payment page, and tells your server whether the money landed — by signed webhook, by a signed browser return, and by a list endpoint you can sweep. Every HTML page on https://docs.thru.la has a raw markdown twin at the same path with `.md` appended. Fetch the `.md` URL: it is the exact source the page renders, served as `text/markdown; charset=utf-8`, with no navigation, no scripts and no HTML to strip. The same content is served by the API, one topic at a time and as JSON, at `GET https://api.thru.la/v1/docs` and `GET https://api.thru.la/v1/docs/:topic`. The keys there are the paths here. ## Docs - [Start here](https://docs.thru.la/start-here.md): What thru is, the five facts every integration needs, and a table for choosing between checkout sessions, direct payments, payment links, invoices and agent payments - [Quickstart: your first testnet payment](https://docs.thru.la/quickstart.md): Create a key, register a webhook, create a 1 USDC payment on Arc testnet, pay it, and receive a signed payment.confirmed event, all with curl - [API keys, workspaces and environments](https://docs.thru.la/auth.md): The x-api-key header, creating and revoking keys in the console, what a key can do, testnet vs mainnet with one key, and the endpoints that need no key - [Hosted checkout with checkout sessions](https://docs.thru.la/checkout-sessions.md): Send a buyer to a thru-hosted page for one of your products, at its fixed price or at an amount your server locks per session; signed return, checkout.session.* and payment.* webhooks, the one-session-one-payment rule, statuses and reconciliation - [Recipe: sell prepaid credit (top-ups)](https://docs.thru.la/credit-topups.md): Let users top up a balance with any amount on the thru-hosted page: one custom_amount product, a checkout session per top-up with the amount locked, credit on payment.* from receivedAmount; table, handler, idempotent credit step, reconciliation; plus the direct-payments variant for your own screen - [Payments API (direct payments)](https://docs.thru.la/payments.md): POST /v1/payments field by field, the response, reads, the status lifecycle, confirmations, the seven-day late-transfer watch window, how a missed transfer is recovered and when its payout is manual, the single-use address, idempotency and common mistakes - [Webhooks](https://docs.thru.la/webhooks.md): Register endpoints and filters, which event family to listen to (and how not to count a sale twice), payload shapes, signature verification code, dedupe, retries, test sends and replay - [Chains and tokens](https://docs.thru.la/supported-chains.md): READ BEFORE OFFERING A CHAIN: which chain/network/token combinations confirm on api.thru.la today, contract addresses and decimals, and the ones the API accepts but never confirms - [Products and payment links](https://docs.thru.la/products.md): Catalogue items in two pricing modes: fixed (a plan or SKU with a price) and custom_amount (credit or quantity, the amount named per checkout within your min/max); per-chain rails, the server-generated slug, the anonymous /pay/:slug payment link, and the product lifecycle - [Invoices](https://docs.thru.la/invoices.md): Bill a named customer with line items: create, edit while draft, send, void, the hosted page at /i/:publicId, and how to tell when an invoice is paid (there is no invoice webhook) - [Refunds and settlement](https://docs.thru.la/refunds-and-settlement.md): Refund a payment (full or partial, and what fires), and how received funds are forwarded to your settlement addresses, with per-product routing and the change cool-down - [API conventions, errors and limits](https://docs.thru.la/api-conventions.md): Request and response conventions (decimal strings, ids, timestamps), the error body and every status code, list limits and pagination, idempotency, rate limits and time limits - [npm packages](https://docs.thru.la/sdks.md): @thru-payment/server (checkout sessions, return and webhook verification), checkout-core (headless, React or plain JS), pay-sdk (React components) and x402; what each covers and what it does not - [Go-live checklist](https://docs.thru.la/going-live.md): What to check before you accept real money: keys, network checks, chains, webhooks, idempotency, settlement and reconciliation - [Agent payments (x402 / MPP): not enabled yet](https://docs.thru.la/facilitator-x402.md): NOT ENABLED on api.thru.la (the /v1/facilitator/* endpoints return 404). Per-request HTTP 402 payments by AI agents: how the flow works, the @thru-payment/x402 middleware, chains and schemes ## Releases - [Changelog](https://docs.thru.la/changelog.md): every change to a public surface, newest first. - [changelog.json](https://docs.thru.la/changelog.json): the same list as JSON — `{ generatedAt, entries: [{ date, title, breaking, changes, migrationGuide, url }] }`, newest first. **Poll this** and compare `entries[0].date` with what you last saw, instead of re-reading the docs. `breaking` is always present, and `migrationGuide` is an absolute `.md` URL whenever it is true. ## Migration guides - [From flow.* to payment.flow.*](https://docs.thru.la/migrations/flow-wildcard-to-payment-flow.md): The webhook filter `flow.*` is now a 400. Replace it with `payment.flow.*`. No event delivery changes, because `flow.*` never matched anything. - [From Direct Pay subscriptions to checkout sessions](https://docs.thru.la/migrations/direct-pay-to-checkout-sessions.md): Direct Pay is removed. Sell the period as a checkout item, keep the expiry clock in your own application, and issue the next link when it runs down. There is no replacement endpoint, because there is no replacement object. ## Optional - [Index as markdown](https://docs.thru.la/index.md): this list, as a table. - [Console](https://thru.la): where API keys, webhook endpoints and settlement addresses are created.