Why Offer Pix?
Dominant in Brazil
Instant Settlement
Low Friction
Overview
The minimum is the checkout minimum for BRL, so it applies to every payment method on a BRL checkout. A BRL payment must also be at least the equivalent of $0.50 for one-time payments and $1.00 for subscriptions. See Minimum Amounts.How It Works
Customer Experience
- The customer selects Pix at checkout and enters their CPF (the 11-digit Brazilian taxpayer ID) or CNPJ (the 14-digit company ID) in the CPF or CNPJ field.
- Checkout shows the IOF fee and the total the customer’s bank will debit. See Brazilian IOF Tax.
- The customer confirms the payment. A QR code opens in a full-screen overlay, with the Pix code and a Copy the code button below it.
- The customer opens their banking app, selects Pix, and scans the QR code or pastes the Pix code.
- The payment confirms within seconds.
- Checkout detects the completed payment and redirects the customer to your success page.
Subscriptions with Pix Automático
A Pix subscription starts with a one-time Pix payment that also enrolls the customer in a recurring mandate. Renewals are then debited from the customer’s bank account without a QR code.How Pix Automático Works
The customer authorizes the mandate in their banking app when they pay for the first time. Each renewal then waits 3 days after a pre-debit notification before the bank debits the funds: In their banking app, the customer sees the mandate under the name Dodo Payments Inc, because Dodo Payments is the Merchant of Record.Mandate Terms
Dodo Payments sets the mandate terms. There is no API or dashboard setting for a Pix mandate, and themandate_min_amount_inr_paise field applies only to Indian-issued cards.
You can only schedule one Pix payment per billing cycle.
The 3-Day Renewal Delay
A Pix renewal completes about 3 days after the billing date. This is the main difference from a one-time Pix payment, which confirms in seconds:Charge Initiated (Day 0)
processing state and Dodo Payments sends the payment.processing webhook.Pre-Debit Notification
Debit (Day 3)
processing during the retries.Final Status (Day 3 to Day 7)
succeeded or failed, and Dodo Payments sends the matching webhook. A failed renewal follows the usual Payment Retries and Dunning flow.payment.succeeded and payment.failed webhooks for the final status of a renewal. Don’t treat a renewal in processing as failed: it can stay there for up to 7 days.
While the renewal is in processing, the subscription stays active. Dodo Payments waits a maximum of 8 days after it creates the payment. For what occurs after the wait, see On Hold State.
Trials
On a subscription with a trial, the customer authorizes the mandate in their banking app without paying. The first charge after the trial follows the same 3-day renewal flow, so it completes about 3 days after the trial ends.Customer Cancellation
The customer can stop a Pix subscription from their banking app in two ways:- Cancel a single debit. During the 3-day notification window, the customer can decline the upcoming debit. That renewal fails with the error
The Pix payment attempt of this PaymentIntent has been canceled by the customer, and the mandate stays active for later renewals. - Revoke the mandate. The customer can cancel the mandate itself. Every later renewal then fails with the error
Only active mandates can be used with PaymentIntents, and the subscription follows the failed-renewal flow.
Brazilian IOF Tax
IOF (Imposto sobre Operações Financeiras) is a Brazilian tax of 3.5% on international transactions. The customer pays it on top of every Pix payment, including each subscription renewal. For a 100 BRL payment, the customer’s bank debits 103.50 BRL, and the payment amount stays 100 BRL. Checkout shows the IOF fee and the total due before the customer confirms. There is no option to absorb the IOF on the customer’s behalf.Amount Limits
A single Pix payment can be at most the BRL equivalent of US$3,000. A payment above this limit fails with the errorAmount must be no more than $3,000.00 usd.
Configuration
API Method Type
Testing
Enable Test Mode
Set Billing Currency to BRL
billing_currency: 'BRL' and pix in allowed_payment_method_types.Enter Test CPF and Scan the QR Code
00000000000 (11 zeros). Checkout shows a test QR code. Scan it with your phone’s camera; a Pix or banking app isn’t needed. The QR code opens a test page where you can simulate a successful or failed payment.Best Practices
Set billing currency to BRL
Set billing currency to BRL
Provide card fallbacks
Provide card fallbacks
credit and debit as fallback payment methods.Offer Pix on monthly or longer subscription plans
Offer Pix on monthly or longer subscription plans
pix out of allowed_payment_method_types on daily and weekly plans, where renewals fail.Wait for the webhook on renewals
Wait for the webhook on renewals
processing for about 3 days, and up to 7 with retries. Keep the customer’s access during this window and act on payment.succeeded or payment.failed.Handle QR code expiration
Handle QR code expiration
Troubleshooting
Pix not appearing at checkout
Pix not appearing at checkout
- Is the billing currency
BRL? - Is
pixincluded inallowed_payment_method_types? - Is the customer’s billing country Brazil (
BR)? With Adaptive Currency, a Brazilian billing address sets the billing currency to BRL. - Is Adaptive Currency enabled?
- Does the amount meet the 0.50 BRL minimum and the USD minimum?
QR code expired
QR code expired
One-time payment pending
One-time payment pending
payment.succeeded and payment.failed webhooks for the final payment status instead of the return redirect. If a one-time payment doesn’t confirm within a few minutes, treat it as failed.Renewal stuck in processing
Renewal stuck in processing
payment.succeeded or payment.failed. A renewal in processing is neither paid nor failed.Renewal failed with an inactive mandate
Renewal failed with an inactive mandate
Only active mandates can be used with PaymentIntents.Solution: The subscription follows the failed-renewal flow. To continue, the customer must update their payment method through a new checkout, which creates a new mandate.Renewal failed with one Pix payment per billing cycle
Renewal failed with one Pix payment per billing cycle
pix from allowed_payment_method_types on daily and weekly plans. Existing customers on those plans need to switch to a card.Payment above the Pix limit
Payment above the Pix limit
Amount must be no more than $3,000.00 usd.Solution: Offer credit and debit as fallbacks for high-value checkouts.