Why Stripe Won't Let You Take Payments Yet
You created a Stripe account, sent a payment link, and hit 'your account cannot currently make live charges.' Here's what actually activates live mode — and the shortest path from zero to a real first dollar.
You built the product. You wired up Stripe, created your first product, generated a payment link, and sent it to someone who actually wanted to buy. Then you saw the sentence that stops thousands of non-US founders cold: "Your account cannot currently make live charges."
Nothing is broken. Your product is fine, your link is fine, your code — if you wrote any — is fine. What's happening is that your Stripe account exists but hasn't been activated for live mode, and no button in the dashboard will force it open. Activation is a decision Stripe's backend makes about you, and most of the levers that influence that decision are set before you ever hit "create account." This is a walkthrough of the ones that matter.
Four things have to exist before any of this works
Stripe doesn't support mainland-China business entities directly, and the same friction applies to founders in most countries without a local supported entity. The path with the highest approval rate is the US stack: a US LLC, an EIN, a US business bank account, and a live product website. If you've been following this series, you already have the first three:
- A US LLC — the legal entity Stripe underwrites. Earlier in the series we covered why Wyoming or Delaware beats California for a solo founder.
- An EIN — the federal tax ID. Without it you cannot activate live mode, full stop. If you skipped it, here's how to get an EIN with no US Social Security number. A pending EIN is acceptable in the form; a blank one is not.
- A US business bank account — Mercury or Wise Business both work, and you can open one without setting foot in America. The name and country on the bank account must match the LLC and the Stripe account: a US Stripe account pays out to a US bank account, not a foreign one.
The fourth is easy to underestimate: a live, publicly reachable product website with real pages. Not a placeholder. Stripe's reviewers open your URL and look for a pricing page, terms of service, a privacy policy, a refund policy, and a contact email. You don't need a lawyer for the legal pages — Termly will generate a serviceable ToS and privacy policy in about five minutes. But the pages have to be there, and the pricing has to match what your business description says you charge.
The two signup details that actually move the needle
The account-creation flow is nine screens of the obvious — email, company name, country (United States), entity details, founder ID, bank account, website URL, an MCC code (SaaS is 5734, consulting 7392, ecommerce 5965), and submit. Two of those screens carry almost all the risk.
The first is your IP address, and it's invisible in the form. Stripe records the IP you log in from, and an account that hops between countries — one login from Lagos, the next from Lisbon, the next through a VPN exit in Frankfurt — reads as risk and can trigger a 30-day review hold. Pick one stable US IP and stay on it for registration and activation: a US residential proxy or your own US-based VPS. Consistency here is worth more than any single "correct" location.
The second is the business description, and it's the single field most likely to get an account suspended for vagueness. Stripe needs to know what you sell, who you sell it to, and how you price it. "SaaS platform" tells them nothing and gets flagged. Write a hundred-plus words that a stranger could underwrite:
We operate [product name], a subscription software service for [specific target user]. Our product lets them [main value proposition]. Customers pay [$X] per [month/year] by credit card. We do not store card data; all payments are processed through Stripe. Average order value is [$X]. A typical customer is [profile].
If your product generates content with AI, say so plainly and name your abuse-prevention mechanism — AI generation sits in a gray zone, and reviewers reward founders who address it head-on rather than hoping it goes unnoticed.
What actually flips the switch
Here's the misconception that wastes the most time. New accounts default to sandbox (test mode). There's a Test mode toggle in the top-right of the dashboard, and founders click it expecting it to "turn on" real payments. It doesn't. That toggle only switches which view you're looking at — test data versus live data. It has no power to activate anything.
The thing that actually matters lives on the account object, not the UI:
Live mode is on when Stripe sets
charges_enabled: trueon your account. That flag is the output of a backend review — no switch you click can force it open.
For a non-US founder, that review typically takes five to ten business days. Until it clears, charges_enabled stays false and the toggle is decorative. So the practical move after you submit isn't to hunt for a hidden button — it's to make sure you haven't landed in one of the states that stalls the review.
The three ways an account gets stuck
When activation drags, it's almost always one of three situations, and each has a specific response:
- Incomplete verification (KYC). Stripe is missing a document — a passport scan, a proof of address, beneficial-owner details. Go to Settings → Account details and clear every pending item. This is the most common stall and the easiest to fix; the review can't finish while a field is blank.
- Flagged as a high-risk category. Some businesses need extra scrutiny — crypto, CBD, dating, crowdfunding, peer-to-peer marketplaces. Contact Stripe Support and supply a fuller business description with the compliance detail they're looking for. (Genuinely prohibited categories — weapons, gambling, illegal goods — can't be appealed, so know which side of the line you're on before you apply.)
- Review simply taking its time. Sometimes nothing is wrong and the account is just in the queue. Give it three to seven days, then message Support for a status nudge. Don't create a second account to "start fresh" — duplicate accounts read as fraud risk and make things worse.
The fastest path to a first real dollar
Once charges_enabled is true, resist the urge to build. You do not need to write code to collect your first payment. There are three ways to take money, in ascending order of effort, and you should start at the top:
- Payment Links — zero code, live in five minutes. In the dashboard, create a product, generate a payment link, and you get a
buy.stripe.com/...URL you can paste into a DM, a tweet, or an email. It converts best with people who already know your product; cold traffic still needs a landing page around it. For validating that anyone will pay at all, this is the whole game. - Stripe Checkout — low-code, for a real product page. Your backend creates a Checkout Session, redirects the customer to a Stripe-hosted payment page, and sends them back to your site when they're done. Stripe handles PCI compliance and your server never touches a card number. One gotcha: products and prices you created in test mode don't carry over to live mode — you rebuild them.
- Stripe Elements — skip it for now. Elements embeds the payment form directly in your page so the customer never leaves. It's more work and it's the wrong place to spend your dev time this early. Get Checkout stable first; reach for Elements only when a seamless in-page checkout is genuinely worth the build.
One more thing that isn't optional the moment real money moves: a webhook is the only reliable way to know a payment completed. Do not trust the success-redirect URL — a customer can pay and close the browser before the redirect ever fires, and you'd never record the sale. Stripe POSTs an event to your server the instant a charge succeeds, independent of what the customer's browser does. Set one up under Developers → Webhooks and listen for checkout.session.completed to start. (If you're wiring it up: the webhook route needs the raw request body — express.raw(), not express.json() — or signature verification fails.)
Here's the whole activation checklist in one place:
- Register and activate from one stable US IP — never log in from a different country.
- EIN filled in (pending is fine), never blank.
- Bank account entity, LLC name, and Stripe country all match (US → US).
- Business description 100+ words, specific about customer type and pricing.
- Product site live with pricing, ToS, privacy, and refund pages.
- Keep chargebacks under 0.75% and state your refund policy clearly.
The mistake is treating "account created" as "ready to charge." Those are two different milestones with a backend review between them, and almost everything that determines how fast you cross it — your IP, your business description, your legal pages, a non-blank EIN — is decided before you submit. Get those right, generate a Payment Link the day charges_enabled flips to true, and send a friend a $1 test charge to prove the pipe works end to end. That's the shortest path from zero to a real first dollar.
Which raises the next question, once you can take a payment: is Stripe even the right tool for selling across borders? That's where merchant of record and the Paddle-versus-Stripe decision comes in. More builder insights.
Part of "Vibe-entrepreneurs," a twenty-part look at building a company alone with AI doing the busywork. Start from the beginning: Domain Name to Live DNS in Twenty Minutes. Stripe's own reference lives at stripe.com/docs.