Subscribe
← All articles
Sep 4, 2026

Your first sale is waiting on Stripe

By Built and shut down a subscription platform on Stripe Connect, Telegram Stars and crypto payouts

A United States passport, navy with gold lettering, on a dark background

Between April and June 2026 we built Volta, a subscription platform for creators selling access to an audience. It was ours, we retired it in August, and it never took a real payment. One reason it was slow to a first sale is a step every platform in this category has and almost none of them show you: the wait between connecting a payment account and being allowed to charge anyone.

On Volta a creator connected Stripe in step three of five. They clicked through a form, landed back on our dashboard, and saw a green check. The green check was ours. It meant they had returned from Stripe, not that Stripe had cleared them. Those are different facts, and the gap between them is where a first sale goes to wait.

The green check is not the switch

Whether an account can take money is two fields on Stripe's side, charges_enabled and payouts_enabled, which "indicate whether it can create charges and accept payouts."[1] Until both are true the account is connected and inert.

They flip on a webhook. Stripe sends account.updated whenever an account's status changes, and our server listened for it, wrote charges_enabled into our database, and only then treated the creator as able to sell. The dashboard polled a status endpoint every few seconds on the return screen so the page could catch up the moment the webhook landed. Sometimes that was under a minute. Sometimes it was the next day.

Stripe says as much. When a creator comes back from Stripe's hosted onboarding, that redirect "doesn't mean that all information has been collected, or that there are no outstanding requirements on the account. It only means the flow was entered and exited properly."[2] The platform is expected to check the account itself, or wait for the webhook, before believing anything.

What Stripe is reading while you wait

The hosted form is "a web form hosted by Stripe that renders dynamically based on the capabilities, country, and business type of each connected account,"[2] so no two creators see the same fields. For a US company Stripe asks for information about the business such as name, address and tax ID, information about the person opening the account such as name and date of birth, and information about anyone who owns or controls it.[3] Often the typed answers verify on their own. When they do not, Stripe wants "a scan of a valid government-issued ID, a proof of address document, or both."[3]

Stripe keeps a running list on the account called requirements.currently_due, and "as long as requirements.currently_due isn't empty, the Account has outstanding requirements that might restrict its capabilities."[1] The list moves as answers come back. A greyscale scan, a business name that does not match the uploaded document, a website Stripe cannot reach: each one puts a field back on the list with an error attached, and the creator is waiting again.

And it is more than one switch. Card payments run on two Stripe capabilities, card_payments and transfers, and "if the status of either one is inactive, then both capabilities are disabled."[4] A creator can clear identity verification and still not sell, because the second capability is still pending.

Why we refused to publish the offer

We made the wait visible on purpose. An offer on Volta could be drafted, themed and priced before Stripe cleared the account, but it could not be published, and the share link returned nothing until charges_enabled was true.

The alternative was to let the offer go live and have the checkout fail for the first buyer who tried it. We were not willing to do that. A creator looking at a pending badge can be told what it is waiting on. A buyer who taps Pay and gets an error just leaves, and the creator never learns they were there. Between a frustrated creator and a lost customer with no trace, the creator is the one you can still talk to.

It had a cost. We built the onboarding around an assumption that a large share of creators would not finish Stripe verification on the first attempt, most of them stalling at the ID upload. Every one of those is a person who built an offer and then could not turn it on. Draft-but-not-publishable was the least bad place to hold them, but it is a locked door and we built it.

It can lock again after you are live

The list outlives the first sale. Requirements have an eventually_due bucket for things "you might need to resolve, depending on whether the corresponding thresholds are reached,"[1] and Stripe "temporarily pauses charges or payouts if the information isn't provided or verified according to the thresholds."[3] The threshold is usually time passing or a volume of charges, which means the trigger is success. Sell enough and Stripe asks for the company tax ID it did not need at signup.

A risk review can add requirements too, and those "you can't provide using the API"[1] - the creator or the platform has to complete a form or work a support case. Each new requirement carries a deadline. Miss it and "the corresponding functionality is disabled and those fields are added to past_due."[2] Stripe "typically disables payouts on the account," and if it "is unresponsive to our inquiries, Stripe might also disable the ability to process charges."[1]

On a membership business that means renewals start failing, new signups stop, and the money already collected sits in a balance the creator cannot withdraw until a document is uploaded. Whether the platform is watching for this on the creator's behalf is a fair question. Stripe tells platforms they "must also monitor their connected accounts' requirement statuses and handle any updates in a timely manner,"[1] and it is not something the creator can see from outside.

Before you count on it

A few things worth doing rather than assuming.

Find out whether you can log into the Stripe account directly. Express accounts have a real Stripe dashboard behind them, and if the platform switched it on, that dashboard shows your actual verification status instead of the platform's summary of it.

Ask the platform to read your account's disabled_reason back to you. It is one field, it is specific, with values like "additional verification information is required" or "under review," and support can see it.

Give Stripe the eventually_due list now, not only what is currently blocking you. Stripe lets platforms collect everything up front or "incrementally" as "the connected account earns more revenue."[3] Incremental is a faster signup and a worse day three months later. If your platform has a "finish all verification" option, use it.

And do not read a platform's "connected" badge as "ready to sell." It usually means you came back from Stripe. Whether you can charge anyone is a different field, on Stripe's side, and you are allowed to ask for it by name.

Disclosure. Volta was our product, it is retired, and nothing here is a recommendation to use it. The publish gate, the status polling, the webhook handler and the onboarding assumptions above are from our own build rather than anyone's documentation, so they carry no citation. Everything attributed to Stripe is quoted from its public documentation, listed and dated below.

Sources

Every external figure in this article is cited to the provider's own published terms, checked 4 September 2026.

  1. 1.Stripe, Handle verification with the API - charges_enabled and payouts_enabled indicate whether an account can create charges and accept payouts; as long as requirements.currently_due is not empty the account has outstanding requirements that might restrict capabilities; eventually_due items depend on thresholds; risk reviews add requirements that can't be provided via the API; Stripe typically disables payouts past the current_deadline and may also disable charges if the account is unresponsive; platforms must monitor connected accounts' requirement statuses
  2. 2.Stripe, Stripe-hosted onboarding - the hosted form renders dynamically based on capabilities, country and business type; returning to the platform doesn't mean all information was collected, only that the flow was entered and exited properly; when currently_due fields remain at the current_deadline the functionality is disabled and the fields move to past_due
  3. 3.Stripe, Identity verification for connected accounts - every country sets requirements so Stripe can pay out funds; a US company must supply business name, address and tax ID, the account opener's name and date of birth, and beneficial owners; Stripe may require a government-issued ID scan, a proof of address document, or both; at time or volume thresholds Stripe requires more information and temporarily pauses charges or payouts until it is provided; incremental onboarding collects more as the account earns more revenue
  4. 4.Stripe, Account capabilities and configurations - a capability must be active for an account to perform its actions; if a connected account has both card_payments and transfers and either one's status is inactive, both are disabled