# Inlet > Crypto payment gateway. Create a payment in USD; the payer picks a network and coin; Inlet issues a fresh address and exact amount, watches the chain, and sends signed webhooks. Base URL: https://api.inlet.cash/v1. Auth: `Authorization: Bearer inl_test_…` (test) or `inl_live_…` (live). ## Docs - [Integration guide](https://api.inlet.cash/docs/integrate.md): create a payment, send the payer to the checkout, verify webhooks, test without coins, go live. - [OpenAPI 3.1](https://api.inlet.cash/v1/openapi.json): every route and schema. - Subscriptions: `POST /v1/subscriptions` schedules hosted invoices (a payment per period, emailed to the customer); mass payouts: `POST /v1/disbursements` (approved on the dashboard); on USDC the checkout pays by signature, Inlet pays the gas. - Payment links (no code): `POST /v1/links` makes a public page (`url`) for a fixed price, an open amount or a tip jar; payments made through it are ordinary payments with `metadata.link_id`. ## Rules an integration must follow 1. Verify `Inlet-Signature` on every webhook with the webhook secret, over the raw body. 2. Deduplicate webhooks by event `id`; they are delivered at least once. 3. Fulfil on `payment.paid` from the webhook or from `GET /v1/payments/:id`, never from the browser. 4. Amounts: `price_amount` is US cents; token amounts are integer strings in base units.