Glossary

Stripe Connected Account

A Stripe connected account is the Stripe account a platform creates for each business or individual that takes payments or receives payouts through it, and its controller properties decide who pays Stripe’s fees, who is liable for negative balances, and which dashboard the account holder ever sees.

Also called: connected account, Stripe Connect account, sub-account, seller account, controller properties

Definition

Stripe defines it in one line inside its own Connect documentation: a connected account is "A person or business accepting payments or receiving payouts on a Connect platform". Connect itself is "Stripe’s solution for multi-party businesses, such as marketplace or software platforms, to route payments between sellers, customers, and other recipients".

For an accountant, that definition is almost useless on its own, because it says nothing about whose money moved or whose books it belongs in. The answer to that question lives in the account’s configuration, and the configuration is not one setting but four.

Most people reach this page having been told their platform uses Standard, Express or Custom accounts. That vocabulary still works and still describes real accounts, but Stripe has moved past it. Its guidance for platforms that use those names is explicit: "Stripe recommends that you use controller properties instead of account types", and when creating an account, "Specifying type is no longer required."

The reason this matters outside an engineering conversation is that two of those controller properties decide what your profit and loss statement contains. One decides whether Stripe’s processing fees are ever your expense. The other decides whether a connected account going negative is your loss. Neither is visible from the word "Express".

Key points

  • +Stripe defines a connected account as "A person or business accepting payments or receiving payouts on a Connect platform".
  • +Connect is described as Stripe’s solution "to route payments between sellers, customers, and other recipients".
  • +controller.fees.payer set to account means "The connected account pays all Stripe fees directly to Stripe, inclusive of payment processing fees".
  • +controller.fees.payer set to application means "The Connect platform pays all Stripe fees, inclusive of payment processing fees".
  • +controller.losses.payments set to application means "Your platform is responsible for negative balances" and manages credit and fraud risk on that account.
  • +Set to stripe, "Stripe is liable when this account can’t pay back negative balances resulting from payments. Your platform is still liable for a negative balance on your platform account."
  • +controller.stripe_dashboard.type is full, express or none, and Stripe states you cannot change it on an existing account.
  • +Stripe recommends controller properties over account types, and notes that "Specifying type is no longer required."
  • +Standard maps to losses stripe, fees account, requirements stripe, dashboard full. Express and Custom both map to losses application and fees application.
  • +"After you create a connected account, you can’t change its type", and the country cannot be changed either.

Two properties decide what your books contain

If you only read one thing about connected accounts, read the fee payer property.

Stripe gives controller.fees.payer two values you can set at creation. With account, "The connected account pays all Stripe fees directly to Stripe, inclusive of payment processing fees". With application, "The Connect platform pays all Stripe fees, inclusive of payment processing fees".

That is the difference between processing fees being an expense on your platform’s books and being invisible to them entirely. A platform on the first setting has no processing fee to record for those payments, because it never paid one. A platform on the second carries the whole card-processing cost of the marketplace as its own operating expense, and usually prices for it somewhere in what it charges sellers.

The second property is controller.losses.payments. Set to application, Stripe says "Your platform is responsible for negative balances" and manages credit and fraud risk on the connected account, which it notes "requires you to review and acknowledge your responsibilities in the Dashboard". Set to stripe, "Stripe is liable when this account can’t pay back negative balances resulting from payments", with the caveat that "Your platform is still liable for a negative balance on your platform account."

One property tells you whether an expense exists. The other tells you whether a bad month at one seller becomes your bad month. Both are set once, at account creation, by whoever wrote the integration.

Account types are the old vocabulary for the same thing

Standard, Express and Custom are still the words most people use, and Stripe still supports them, but its documentation now treats them as legacy. The page describing them opens by saying the information "applies only to platforms that already use legacy connected account types", and directs new platforms elsewhere.

Each name is shorthand for a fixed set of the four properties. Standard maps to losses.payments stripe, fees.payer account, requirement_collection stripe, and dashboard type full. Express maps to losses.payments application, fees.payer application, requirement_collection stripe, and dashboard type express. Custom maps to losses.payments application, fees.payer application, requirement_collection application, and dashboard type none.

Read down the fees column and the practical meaning of the three names becomes obvious. On Standard, the seller pays Stripe. On Express and Custom, the platform does. Everything else about those names is about onboarding effort and who sees a dashboard.

There is one wrinkle worth knowing if you are reconciling fees and the numbers look inconsistent between older and newer accounts. Stripe notes that creating an account with type=express or type=custom sets fees.payer to application_express or application_custom rather than plain application, and that "This difference denotes a variation in Stripe fee billing behavior when your platform is using Direct charges." Two accounts that look identically configured can bill differently depending on which way they were created.

Dispute liability does not follow the platform automatically

Chargebacks are where the ownership question gets expensive, and the answer depends on both the account configuration and the charge type.

Stripe’s own comparison puts fraud and dispute liability on the connected account for direct charges on Standard accounts, and on the platform for destination charges. For Express and Custom accounts it puts that liability on the platform outright.

So a platform can be in the position of never seeing the sale, never holding the money, and still owning the dispute. That combination is worth checking before it happens rather than after, because the accounting entry for a dispute you are liable for is nothing like the entry for one you merely processed.

Stripe also flags a pricing consequence of the legacy setup: using direct charges on legacy Express or Custom accounts "charges connected accounts directly at standard sticker rates rather than billing the platform", and it points platforms that want pricing control toward destination charges instead.

What you cannot change after the fact

Three things about a connected account are set once, and each of them has been the reason a platform had to migrate sellers onto new accounts.

The type is fixed: "After you create a connected account, you can’t change its type." The dashboard is fixed: Stripe states you cannot change controller.stripe_dashboard.type on an existing connected account, and that "To change a connected account’s dashboard, you must create a new Account object." The country is fixed too, and Stripe repeats that for Standard, Express and Custom accounts separately.

Migrating your integration to controller properties is a different and much lighter matter. Stripe says the migration "is optional", that the properties are "fully backwards compatible", and that existing accounts have the matching properties set automatically, so you can move incrementally. Reading a connected account’s controller values is therefore something you can do today regardless of how the account was created, which makes it the honest way to answer "who pays the fees on this one".

Connected accounts, from both sides of Acodei

There are two ways this term touches an Acodei setup, and they are easy to confuse.

The first is that you are already one. Acodei’s documentation records that Acodei is itself a Stripe Connect platform, and that every user’s Stripe account is a connected account, which is how Acodei receives your events and reads your data. That is the plumbing behind the connection you authorised, and it is why the authorisation is per Stripe account.

The second applies if you run a Connect platform of your own. Acodei’s documentation describes Connect activity reaching QuickBooks as balance-transaction types, bucketed by day and currency, with each type becoming a line item whose QuickBooks account is determined by the product you map to that type in Balance Transaction Mapping. Four have their own handling in the line builder: application_fee, application_fee_refund, transfer, and reserve_transaction together with reserved_funds.

What the documentation deliberately does not do is assign an accounting treatment to each type. It states that the treatment is a consequence of how you map the type rather than behaviour fixed in the product, so the destination account is a decision you make with your accountant, and this page will not pretend otherwise.

Once those lines are mapped, the remaining question is reconciliation, which is how each Connect balance type reaches the account you chose.

Want to see this on your own Stripe data?

Start a free trial

Frequently asked questions

What is a Stripe connected account?

Stripe defines it as "A person or business accepting payments or receiving payouts on a Connect platform". It is the Stripe account a platform creates for each seller, contractor or merchant that transacts through it, and its controller properties decide who pays Stripe’s fees, who is liable for negative balances, and what dashboard the holder can reach.

Who pays the Stripe processing fee on a connected account?

Whichever party controller.fees.payer names. Stripe documents account as "The connected account pays all Stripe fees directly to Stripe, inclusive of payment processing fees" and application as "The Connect platform pays all Stripe fees, inclusive of payment processing fees". On the first setting your platform has no processing fee to record for those payments. On the second it carries the marketplace’s entire processing cost.

What is the difference between Standard, Express and Custom accounts?

They are names for fixed combinations of the same four controller properties. Standard maps to losses stripe, fees account, requirement collection stripe and a full dashboard. Express maps to losses application, fees application, requirement collection stripe and the Express Dashboard. Custom maps to losses application, fees application, requirement collection application and no dashboard.

Are account types deprecated?

Stripe now treats them as legacy and recommends controller properties instead, noting that "Specifying type is no longer required" and that migrating "is optional" because the properties are "fully backwards compatible". Existing accounts already carry the controller values that match their type, so you can read those values without changing anything.

Who is liable if a connected account goes negative?

It depends on controller.losses.payments. With application, Stripe says "Your platform is responsible for negative balances" and manages credit and fraud risk on that account. With stripe, "Stripe is liable when this account can’t pay back negative balances resulting from payments", though Stripe adds that "Your platform is still liable for a negative balance on your platform account."

Can I change a connected account from one type to another?

No. Stripe states that "After you create a connected account, you can’t change its type", and separately that the dashboard type cannot be changed either: "To change a connected account’s dashboard, you must create a new Account object." The account country is fixed at creation as well.

How does Acodei handle Connect activity in QuickBooks?

Acodei’s documentation describes Connect activity arriving as balance-transaction types, bucketed by day and currency, with the QuickBooks account for each line set by the product you map to that type in Balance Transaction Mapping. It names application_fee, application_fee_refund, transfer, and reserve_transaction with reserved_funds as types with their own handling, and is explicit that the accounting treatment follows your mapping rather than being fixed in the product.

What customers say about running Stripe through Acodei

Stripe Verified Partner BadgeQuickBooks Intuit Badge
If you're testing out all the different Stripe/QuickBooks integration apps right now, let me save you some time. This one is the best one by far.
RyanOwner at Indie Music Academy
Works well and is really helpful for massive transactions. The support is really fast and helpful. 100% recommended.
AndresCo-founder and CEO at Kanguro Collections and Reinsurance

Related reading

More glossary terms

See the full glossary

Ready to try Acodei?

Connect Stripe to QuickBooks Online in minutes and let the fees, refunds, and payouts land where your accountant expects them.