# PaidPilot Invoice API > JSON in, invoice PDF out. Pay per PDF in USDC over x402. No accounts, no API keys. Payments: x402 v2, scheme "exact", USDC on Base mainnet (eip155:8453), asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x2dAF658B01e257206375798a15832E9f547D65dD. No accounts or API keys. Flow: call the paid URL -> HTTP 402 with a base64 JSON PAYMENT-REQUIRED header -> sign an EIP-3009 USDC authorization for one of `accepts` -> retry with PAYMENT-SIGNATURE -> 200 + PAYMENT-RESPONSE (settlement receipt). Invalid input returns 400 and is never charged; upstream failures return 5xx and are not settled. Client libraries: @x402/fetch (wrapFetchWithPayment), @x402/axios, or any x402 v2 client. ## Paid endpoints - [POST /v1/invoice.pdf](https://api.paidpilot.io/v1/invoice.pdf) $0.02: Render one invoice PDF from JSON. Line items, tax, discount and totals computed server-side (integer minor units); 12 currencies; multi-page. Validate free first at POST /v1/invoice/validate. Body: JSON (see openapi.json). ## Free endpoints - GET https://api.paidpilot.io/v1/schema: example invoice JSON + field notes - POST https://api.paidpilot.io/v1/invoice/validate: validate an invoice JSON and return computed totals (same validation as the paid route) ## Discovery - OpenAPI: https://api.paidpilot.io/openapi.json - x402 manifest: https://api.paidpilot.io/.well-known/x402 - API catalog (RFC 9727): https://api.paidpilot.io/.well-known/api-catalog - Sitemap: https://api.paidpilot.io/sitemap.xml