We've onboarded sellers from India, Brazil, and Mexico on three different marketplaces — a Sharetribe vacation rental, a custom Rails services platform, and one ecommerce marketplace that imploded mid-pivot. The technical work for each country is small. The work to figure out what's actually required per country, and which Stripe doc applies to your situation, is enormous. This post is the field manual.
If you're using Stripe-hosted onboarding (Express accounts), most of this is handled for you. If you're building Custom accounts, every section below is a separate engineering ticket.
The short answer
Stripe Connect KYC requirements vary by country: India needs PAN plus GST registration and the platform must be invited by Stripe before onboarding Custom accounts. Brazil needs CPF (individual) or CNPJ (company) and the bank account holder must match. Mexico needs RFC plus a government ID. Express handles document collection through Stripe's hosted flow; Custom requires you to build all of this yourself.
Watch first: how Stripe Connect Express handles cross-border onboarding
Before the country-by-country deep dive, this 2-minute Stripe video covers what Express actually does on your behalf. If you're choosing between Express and Custom for international sellers, watch this first — most of the work below disappears on Express.
The 80/20 of international Stripe Connect KYC
Stripe lists the formal requirements in required verification information. The field list is exhaustive, country-comprehensive, and unhelpful as a planning document because every country has dozens of conditional fields. The 80/20 you actually need before you start building:
- Tax ID format differs per country and is usually the gating field — PAN in India, CPF/CNPJ in Brazil, RFC in Mexico.
- Address verification depth differs — some countries want utility bills, some accept bank statements, some require government-issued proof of residence.
- Bank account ownership must match the tax ID in nearly every country outside the US. This is the most common silent failure.
- Verification timelines outside the US are 3-10 business days, not minutes. Your seller-onboarding UX needs to assume async.
- Custom accounts are restricted in some countries — most notably India, where Stripe requires the platform to contact them before onboarding any Custom seller.
The same patterns hit you in our 12 Stripe Connect production mistakes guide — but here we're going one level deeper into per-country specifics rather than general failure modes.
India: PAN, GST, and the Custom-account invite gate
India is the most regulated of the three from Stripe's perspective. The non-obvious thing: Stripe Connect for platforms in India is invite-only for Custom accounts. Per Stripe's India Connect requirements, platforms cannot self-serve Custom connected accounts; you must contact Stripe to begin onboarding. Express accounts are the default and frictionless path.
Required fields for an Indian seller (individual):
- PAN (Permanent Account Number) — 10-character alphanumeric. Validated against India's Income Tax Department database.
- Full name matching the PAN.
- Date of birth.
- Address with proof (utility bill or bank statement, ≤3 months old).
- Bank account in the seller's name (NEFT-capable, IFSC code required).
For Indian companies and LLPs, you also need:
- Ministry of Corporate Affairs (MCA) registration certificate.
- GSTIN if the business is GST-registered. If turnover exceeds ₹20 lakh / year (₹10 lakh for some categories), GST registration is mandatory.
- Authorised signatory's PAN and ID.
- Business address proof.
The biggest practical gotcha: a lot of Indian freelancers and small sellers don't have GST because they're under threshold. If your marketplace forces GST collection on every seller, you'll lose 30-50% of the long-tail. Allow non-GST sellers up to the threshold; collect GST documentation only when crossing it. We learned this the hard way on a services marketplace where the seller drop-off in onboarding was 60% — almost entirely the GST field.
Brazil: CPF or CNPJ — and the tax-ID lock-in
Brazilian sellers register with one of two tax IDs: CPF (individual, 11 digits) or CNPJ (company, 14 digits). Stripe's 2025 Brazil verification requirements update made the rules stricter: the tax ID and business type cannot be changed once verified, and the bank account holder must match the tax ID exactly.
Required fields for a Brazilian seller:
- CPF or CNPJ. Individual sellers use CPF; companies use CNPJ. Pick wrong and you re-onboard from scratch.
- Full legal name as it appears on the CPF/CNPJ record.
- Date of birth (CPF) or incorporation date (CNPJ).
- Address with proof of residence — utility bill, bank statement, or rental contract dated within 3 months.
- Brazilian checking account registered to the CPF or CNPJ on file. This is the silent failure: a seller's spouse's account or business account under a different CNPJ will fail verification with no clear error.
The "tax ID can't change" rule means: if a freelancer originally onboards with their CPF and later incorporates as a CNPJ, you can't migrate the existing connected account. You onboard a brand new account, transfer reviews and listings in your platform's data layer, and the old account stays open until any pending payouts settle. Plan for this in your data model.
Mexico: RFC, INE, and the address-by-state quirk
Mexican sellers register with their RFC (Registro Federal de Contribuyentes) — 13 characters for individuals, 12 for companies. The verification flow also requires a government-issued photo ID, typically the INE card (replaces the older IFE card; some sellers still have IFE).
Required fields for a Mexican seller:
- RFC. The format encodes name + birthdate, so Stripe validates the structure as well as the registry record.
- Full legal name.
- INE (or IFE) photo ID. Both sides. Stripe's hosted onboarding handles the document upload UX; on Custom you build it yourself.
- Address — including state. Mexican addresses include the state (estado), municipality (municipio), and colony (colonia). Skipping any of these triggers manual verification, which adds 5-10 days.
- Mexican peso bank account in the seller's name with the matching RFC.
Practical note: the Mexican market has a long tail of informal sellers who don't have an RFC at all. Stripe Connect won't onboard them. If your marketplace targets that segment, you need a different payments architecture entirely — usually a layer like Conekta or MercadoPago for the unbanked seller flow, with Stripe Connect for the banked tier.
Express vs Custom for international: the real cost
Choosing between Express and Custom for international sellers is the single biggest decision that determines how much engineering you spend on KYC. Here's how it actually breaks down per country:
| Country | Express setup time | Custom setup time | Custom restrictions |
|---|---|---|---|
| India | ~1 week (mostly UI) | 6-10 weeks + Stripe approval | Invite-only — must contact Stripe before any onboarding |
| Brazil | ~1 week | 4-6 weeks | Tax ID lock-in, bank match required |
| Mexico | ~1 week | 4-6 weeks | RFC validation, INE upload UI |
The Custom estimate includes building the document upload UX, persisting the verification status, handling re-collection on document expiry, and shipping the inevitable bug fixes. Each country adds independent compliance work — you can't share much code between India PAN validation and Brazil CPF validation. If you're going Custom for all three, plan 16+ weeks of engineering before you have a functional flow.
Express short-circuits all of this. Stripe collects the documents on a stripe.com-hosted flow, validates them, and notifies you via the account.updated webhook when verification finishes. Your only job is to redirect sellers to the onboarding URL and check charges_enabled + payouts_enabled when they return. Our Stripe Connect validator tool walks through the exact webhooks you need.
The 5 production failure modes that will hit you
Across our three international marketplace launches, the same five failures happen every single time. Plan for them:
- Bank account / tax ID mismatch. Seller onboards under their CPF. Their bank account is in their spouse's name. Verification fails silently. Your dashboard shows "Pending" forever. Fix: explicit copy in onboarding — "your bank account must be registered under [tax ID]" — and a verification-failure handler that surfaces the specific reason.
- Stale document re-collection. A Brazilian utility bill from 4 months ago will fail. Most platforms don't tell sellers this until after submission. Fix: validate document age in your UI before sending to Stripe.
- Currently-due field ignored. Stripe periodically asks for additional information via the
requirements.currently_duearray on the connected account. If your platform doesn't pause the seller when this populates, they keep accepting payments until Stripe disables them — usually weeks later, with all those payments held. - Seller drop-off on optional fields. If your onboarding asks for everything Stripe might ever need, you lose 40-60% of sellers in the form. Ask for the bare minimum (
requirements.eventually_dueonly when actually due), defer the rest. - Express dashboard URL not whitelisted. Stripe-hosted onboarding redirects back to your
return_url. If you change the URL between dev/staging/prod and forget to update the connected account'saccount.business_profile.url, sellers get a Stripe 404.
None of these are documented in one place. Each is a separate support ticket worth of debugging if you hit it for the first time in production.
Migration path: starting on Express, going Custom later
The most common architecture mistake international marketplaces make is choosing Custom too early because someone said "we want full control." Three months in, the team realizes they spent 8 weeks rebuilding what Express gives for free, and another 4 weeks debugging country-specific bugs Stripe already solved.
Start on Express. Migrate to Custom later only when you hit a specific blocker: a country Express doesn't support (rare), a regulatory requirement that prohibits Stripe-branded onboarding (very rare), or a take-rate at scale where the Connect platform fee is more expensive than the engineering cost of owning KYC (only matters past $1M/month GMV).
You can't directly migrate an Express account to Custom — Stripe doesn't support type conversion. But you can onboard new sellers as Custom while keeping existing Express accounts running, which is what most marketplaces actually do. Our decision framework for Sharetribe vs Custom covers similar trade-offs at the platform level — the same logic applies one layer down at the connected-account level.
For a worked example, our Tutti Vacation marketplace deployment uses Express across the US, EU, India, and Brazil. The single piece of country-specific code is a verification-status messaging layer that translates Stripe's generic "verification pending" into the actual reason in the seller's language. Everything else — document collection, OCR, validation, expiry handling — is Stripe.
Cost impact of country choice on your take rate
KYC isn't just an engineering cost — it changes your effective take rate. Cross-border transactions on Stripe carry a +1% surcharge, and FX conversion adds another ~1% when buyer and seller currencies differ. On a global marketplace at 30% cross-border volume, that's 60 basis points of GMV vanishing into Stripe fees that you'd never lose on US-only volume.
If you want exact numbers for your specific country mix and account type, our marketplace fee calculator models all of this — Stripe processing, cross-border, FX, Connect platform fees, and dispute costs side-by-side for Express vs Custom vs Standard. You'll see why the cost story usually favors Express for marketplaces under $1M/month GMV.
For broader marketplace economics — what to charge sellers, when to take payment, how to phase international expansion — our marketplace cold-start playbook covers the strategic side of the same problem.
FAQ: Stripe Connect international KYC
Can I use Stripe Connect to onboard sellers from India?
Yes — Express accounts work without restrictions. Custom accounts are invite-only in India: your platform must contact Stripe directly before you can onboard any Custom Indian seller. For most marketplaces, Express is the answer.
What's the difference between CPF and CNPJ for Brazilian sellers?
CPF (11 digits) is for individuals; CNPJ (14 digits) is for companies. Once a seller is verified under one, the tax ID can't be changed — if they incorporate later, you onboard a fresh connected account. Bank accounts must match the registered tax ID.
Do Mexican sellers without an RFC have any path on Stripe Connect?
No. Stripe requires a valid RFC for Mexican connected accounts. If your marketplace targets unbanked or informal sellers in Mexico, you'll need a parallel payments path — Conekta and MercadoPago are the common choices — with Stripe Connect for sellers who do have RFC.
How long does international KYC actually take?
On Express: 1-5 business days for most countries, 3-10 days for India/Brazil/Mexico. On Custom: same Stripe-side timeline plus your engineering time to build the per-country UI (typically 4-10 weeks). Build seller onboarding flows assuming async verification.
What happens if a seller's verification fails after they've started taking orders?
Stripe sends an account.updated webhook with the failure reason in requirements.currently_due or requirements.disabled_reason. If you don't handle this webhook and pause the seller, they continue accepting orders — but payouts get held until verification is re-completed. This is the single most common silent failure on production marketplaces.
Stuck on international Stripe Connect? Let's review your setup.
We've shipped Stripe Connect across the US, EU, India, Brazil, and Mexico on production marketplaces — Sharetribe and custom Rails. If you're early in design, mid-implementation, or hitting verification edge cases in production, our marketplace engineering team does free 30-minute architecture reviews. We'll walk through your country mix, account-type choice, webhook coverage, and KYC plan, and tell you the production gotchas that will bite you 6 months in.
Get a free estimate — we'll review your requirements and propose a plan within 48 hours.