Create a PaymentIntent with payment_method_types: ['pix'], an amount, and currency 'brl' — Pix one-time payments settle in BRL only for Brazil-based Stripe accounts.
Collect the customer's full name, email, and CPF/CNPJ tax ID, then confirm the PaymentIntent client-side with stripe.confirmPixPayment (or the direct API with payment_method_data[type]=pix).
Optionally set payment_method_options.pix.expires_after_seconds (10 seconds to 3 days, default 4 hours from confirmation) to override the default QR expiry.
If rendering your own UI instead of Stripe's hosted modal, read payment_intent.next_action.pix_display_qr_code for the Pix string (data), QR images (image_url_svg/png), and expiry (expires_at).
Listen for payment_intent.succeeded or payment_intent.payment_failed webhooks to confirm the asynchronous bank-app payment outcome instead of polling.
Known gotchas
A Pix QR code can't be paid after it expires — you must confirm the PaymentIntent again with another payment method or cancel it; several sandbox test-email patterns intentionally ignore your expires_at/expires_after_seconds settings.
Stripe's Pix partner (Ebanx) appears as the statement recipient, not your business name — the statement_descriptor parameter is ignored for Pix.
A single Pix payment must be at least 0.50 BRL and no more than roughly 3,000 USD equivalent; a single buyer also can't exceed about 10,000 USD per month with your business under recurring Pix Automático mandates.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?