# Crypto Invoice API > Public REST API to create cryptocurrency invoices, accept payments via Binance (on-chain or Binance Pay), and receive signed webhook (IPN) notifications. Base URL: `https://pay.itemodeverify.com` Authentication: `Authorization: Bearer :` (or `x-api-key` / `x-api-secret` headers). Generate keys at /api inside the dashboard. Webhook signatures: every IPN POST includes `X-Signature: ` where the hex is `HMAC_SHA256(webhook_secret, raw_request_body)`. Compare in constant time before trusting the payload. ## Docs - [Developer hub](/developers): Full REST + webhook reference with cURL, JavaScript, Python, and PHP samples. - [OpenAPI 3.1 spec](/api/openapi.json): Machine-readable schema for the public endpoints. - [In-app docs](/docs): Quickstart inside the dashboard. - [Python + Telegram bot guide](/python): Full setup for building a crypto-payment Telegram bot in Python — `/pay` command, hosted pay page, signed IPN webhook, auto-notify the buyer. Public, no login required. - [TypeScript + Telegram bot guide](/typescriptsetup): Full setup for building a crypto-payment Telegram bot in TypeScript (Telegraf + Express) — deposit flow with live FX quotes per wallet, signed IPN webhook, automatic balance credit. AI-friendly, public, no login required. - [Universal AI-builder website setup](/websetup): Language-agnostic REST + webhook spec any AI builder (Lovable, Replit, Bolt) can implement. - [Python quickstart](/docs/py): Python-only API examples and key health check. - [Telegram bot docs](/docs/tgbot): Telegram bot integration overview. ## Endpoints - [POST /api/public/v1/invoices](/developers#create-invoice): Create a new invoice and get a hosted pay URL. - [GET /api/public/v1/invoices/:id](/developers#get-invoice): Read an invoice and its current status. - [POST /api/public/v1/invoices/:id/cancel](/developers#cancel-invoice): Cancel a pending invoice. ## Webhook events - `invoice.paid` — payment matched on-chain or via Binance Pay. - `invoice.cancelled` — invoice cancelled by the merchant. - `invoice.expired` — invoice passed its `expires_at` without payment. - `ping` — manual test delivery from the dashboard.