Glossary

Stripe Inbound Transfer

A Stripe inbound transfer moves money from an external bank account you own into your Stripe financial account by debiting that bank account over the ACH network, which funds the balance rather than earning it.

Also called: inbound_transfer, InboundTransfer, funding a Stripe financial account, ACH debit into Stripe

Definition

An inbound transfer is you reaching into your own bank account and pulling money into Stripe.

Stripe describes it as a way to add funds to a financial account using a payment method that is owned by you, with the funds moved by ACH debit. Acodei’s documentation says the same thing from the bookkeeping side: money moved from your own bank account into your Stripe financial account, for example to fund upcoming payments or top up the balance.

The word that does the work here is pull. Most money arriving at Stripe was pushed there by somebody else, by a customer paying you. An inbound transfer is the opposite arrangement. You instruct Stripe to debit an account you already control, which is why Stripe requires that the account be verified and that you have the account holder’s permission to debit it before the transfer can be created at all.

That also explains what an inbound transfer is not. It is not revenue. No customer paid you, nothing was sold, and your total assets are unchanged. Only the location of the money changed, which is why this produces a QuickBooks Transfer rather than income of any kind.

It is the mirror of an outbound transfer, which moves money the other way. The interesting difference between them is not direction but purpose. An outbound transfer sweeps money you have already earned out to your bank. An inbound transfer funds activity that has not happened yet, which means it is usually made in anticipation of something, and it is the one of the pair that can be pulled back after it has already settled.

Key points

  • +Stripe moves the money by ACH debit, pulling it from an external bank account you own into the financial account.
  • +Acodei records it as a Transfer in QuickBooks, from the external bank account you mapped on the Account Mapping page into the financial account holding account.
  • +It cannot be used to collect from somebody else. Stripe documents that inbound transfers do not support pulling funds from a third-party external account.
  • +The source has to be verified first, and the only payment method type Stripe accepts is a US bank account.
  • +Stripe documents 2 to 4 business days for an inbound transfer over standard ACH.
  • +A failed inbound transfer creates no transaction at all, and the source account is never debited, so there is nothing to reconcile.
  • +A succeeded inbound transfer can still be returned later, which Stripe represents as a separate received debit rather than as an erased transfer.

A pull needs permission, and that shapes the setup

Creating an inbound transfer takes four things: an amount in cents, a currency, the financial account receiving the money, and an origin payment method that is the source of funds.

That last one carries all the setup. Stripe requires that you first attach the payment method for inbound flows and verify the bank account using a setup intent, or else use an existing bank account already set up as a verified external account. Either way, Stripe is explicit that you need the account holder’s permission to debit the funds. You are authorising a withdrawal from your own bank, and the mandate for it has to exist before the transfer does.

The constraints are narrower than people expect. The only payment method type Stripe documents for an inbound transfer is a US bank account, and usd is currently the only supported currency value. So an inbound transfer is a US ACH mechanism, not a general way to fund a balance from anywhere.

There is also a boundary worth reading twice, because getting it wrong is an expensive detour. Inbound transfers move funds from the financial account owner’s own bank account, and Stripe states they do not support moving funds from a third-party external account. If you want to accept money from somebody else into a financial account, Stripe routes you somewhere else entirely: take an ACH debit payment into the payments balance, then pay out from there to the financial account. Those are two different objects producing two different sets of records.

Funding a financial account is not topping up your balance

Stripe gives you two balances, and they are funded by different objects. This is the single most common place an inbound transfer gets confused with something else.

Acodei’s documentation separates them clearly. The payments balance is the classic Stripe balance, used for collecting payments, issuing refunds and receiving payouts from Stripe. The financial account balance is the one that behaves like a real bank account with its own ledger. An inbound transfer lands in the second one.

A top-up is the object that funds the first one. If you have read our note on recording Stripe top-ups, the distinction is worth holding onto: both are you sending your own money to Stripe, both are a Transfer in QuickBooks, and they arrive in different balances. The destination account in QuickBooks is what tells them apart, because a top-up lands in the Stripe payments holding account and an inbound transfer lands in the financial account holding account.

There is a third way money reaches the financial account, and it is not a funding decision at all. Acodei documents that a payout from the Stripe payments balance into the financial account is recorded as a Transfer between those two holding accounts. That one is internal: you are moving money you already had at Stripe from one Stripe balance to the other.

If you are scanning a financial account holding account at month end, those three sources look similar in the register and mean three different things. One is new money from your bank, one is money that was already at Stripe, and one never touches the financial account at all.

Two ways money arrives, booked from two different accounts

An inbound transfer is not the only object that puts money into a financial account, and the difference between it and its sibling is not cosmetic. It changes which QuickBooks account the money appears to come from.

Acodei’s documentation sets out both. For an inbound transfer, the Transfer is drawn from your external bank account as mapped on the Account Mapping page. For a received credit, which represents funds entering the financial account balance from an external source, the Transfer is drawn from your default payment bank account.

So two movements of the same size into the same financial account holding account can credit it from two different places, depending on which object Stripe recorded. That is worth knowing before you go looking for an error that is not there.

The distinction in substance is who initiated it. An inbound transfer is a pull you instructed, against an account you nominated. A received credit is money arriving, typically from an external bank transfer, which you did not have to initiate for it to land. Acodei adds one documented refinement on the received credit side: when the funds entering the financial account balance come from the Stripe payments balance, it is treated as a payout from Stripe Payments instead.

The mapping section these draw on is the same one outbound transfers use. Acodei’s Account Mapping page has a section for the external bank accounts connected to your financial account, which are owned by the business and used to send or receive money from the financial account balance. Inbound and outbound are documented there as the two directions on that same mapped pair.

The statuses, and the two that leave no record

Stripe’s API reference documents four statuses for an inbound transfer: processing, succeeded, failed and canceled. A transfer is processing while it is created and pending. It becomes succeeded once the funds are confirmed and a transaction is created and posted. It becomes failed if the transfer does not go through.

Two of those four produce nothing for your books, and that is the useful part. Stripe states that when an inbound transfer fails, no transaction is created and the payment method has not been debited. A canceled transfer was stopped before it reached the network, and Stripe voids the transaction so no funds move from the external bank account. In both cases the money never left your bank.

That is the answer to the question this object generates most often, which is why a transfer you are sure you initiated has produced no entry anywhere. If nothing moved, there is nothing to record. The place to check is the status rather than the sync.

Stripe’s Treasury guide documents one further holding state that the object reference does not list: requires_confirmation, which applies to financial accounts that have the platform review feature enabled. A transfer in that state has not been sent to the network and has to be explicitly confirmed before it is. The guide gives five business days to confirm or cancel, after which the transfer is automatically canceled. Because the two Stripe pages differ here, treat requires_confirmation as conditional on that feature rather than as part of the ordinary lifecycle.

When a transfer does fail, Stripe attaches a reason. The documented codes cover the bank account being closed, frozen or restricted, the account number being invalid or not existing, debits not being authorised on the account, insufficient funds, an unsupported currency, incorrect account holder name, address or tax ID, a branch ownership change, and a generic fallback. One of those is less obvious than it looks: a restricted bank account normally means the account is a savings or other non-checking account, which is a configuration problem rather than a transient failure.

A transfer that settled can still come back

This is the fact that makes an inbound transfer more than an outbound transfer in reverse, and it is the one worth designing a close around.

ACH debits can be returned. Stripe documents that inbound transfers can be returned after reaching the succeeded state if the external account pulls its funds back, and that when this happens the returned flag on the object becomes true and a received debit is added to the linked flows. The original transfer is not erased. A second, opposite movement is created alongside it.

The timing is what makes this awkward. A transfer can succeed, post to the financial account, and be reported in a period you have already reviewed, and the return can arrive days later inside the ACH return window. Stripe is direct about the risk in its guidance on faster settlement: a returned debit can leave a financial account negative if the funds were spent in the meantime. For the same reason, Stripe offers a funds availability delay on confirmation, and notes that holding funds past the return window stops the originating bank recalling money that has already been spent.

There is a limit to what we can tell you about the QuickBooks side of a return, and it is better to say so than to guess. Acodei’s documentation describes received debits as money taken out of the financial account, usually from a card payment made with a Stripe-issued card, recorded as a Purchase or Expense from the financial account holding account. It does not describe the return case specifically. A returned inbound transfer is therefore a case to verify against your own books rather than assume, because treating returned funding as an expense and treating it as a reversed transfer produce very different profit and loss.

The practical close step is small. If you funded a financial account near period end, check the transfer still reads succeeded and that its returned flag is still false before you rely on the balance.

What Acodei records for an inbound transfer

Acodei creates a Transfer in QuickBooks when an inbound transfer arrives. It is drawn from your external bank account, as mapped on the Account Mapping page, and it lands in your Stripe financial account holding account.

A Transfer is the correct record because no revenue was earned and nothing was bought. QuickBooks Transfers move value between two accounts you control without touching income or expense, which is exactly what the Stripe object describes. It is the same record type Acodei uses for an outbound transfer in the other direction, and for money arriving in the financial account as a received credit.

Currency decides which holding account receives it. A financial account can hold more than one currency, and Acodei’s documented setup gives each currency its own QuickBooks holding account, so a USD inbound transfer and a GBP one credit different accounts.

Fees are kept off the record. Acodei’s documentation notes that Stripe may charge fees on every Transfer or Outbound Payment, and that those fees are recorded separately as part of a daily balance summary built for financial accounts, which is a different summary from the one used for the ordinary payments balance. So a Transfer whose amount does not match what left your bank to the cent is usually a Transfer whose fee is recorded elsewhere.

One note on batching, because the documentation is deliberately narrow. Acodei documents a daily expense batch interval which, when set, stops outbound payments and card spend from each producing their own Purchase and collapses them into one journal entry per account per day. That behaviour is documented for outbound payments and card spend. It is not documented for inbound transfers, so do not assume a missing Transfer was batched away without checking.

For companies outside the US, Acodei applies a zero-rated or exempt tax rate to the purchase records it creates in QuickBooks.

Two prerequisites sit underneath all of this. Financial account features are gated by Stripe and have to be enabled for your account, so not every Stripe user can create an inbound transfer at all. And Acodei checks automatically whether a financial account is available when a Stripe account is connected, revealing the Financial Account section on the Account Mapping page only when one is found.

Funding a balance only reconciles if the money landing in Stripe and the money leaving your bank are two sides of one recorded movement, which is what Acodei’s payout and deposit reconciliation is built to keep true.

Want to see this on your own Stripe data?

Start a free trial

Frequently asked questions

What is a Stripe inbound transfer?

It is a movement of money from an external bank account you own into your Stripe financial account, made by debiting that bank account over the ACH network. Acodei’s documentation describes it as money moved from your own bank account into the financial account, for example to fund upcoming payments or top up the balance.

How does a Stripe inbound transfer appear in QuickBooks?

As a Transfer. Acodei draws it from the external bank account you mapped on the Account Mapping page and deposits it into the financial account holding account for that currency. Because it is a Transfer between two accounts you control, it does not touch income or expense.

What is the difference between an inbound transfer and a top-up?

Which balance they fund. A top-up funds the Stripe payments balance, the classic balance used for collecting payments and receiving payouts. An inbound transfer funds a Stripe financial account, the balance that behaves like a bank account with its own ledger. Both are you sending your own money to Stripe, and in QuickBooks they land in different holding accounts.

Can I use an inbound transfer to collect money from a customer?

No. Stripe documents that inbound transfers do not support moving funds from a third-party external account, only from the financial account owner’s own bank account. To accept funds from somebody else into a financial account, Stripe directs you to take an ACH debit payment into the payments balance first and then pay out from there to the financial account.

Why is there no QuickBooks entry for an inbound transfer I created?

Check the status before checking the sync. Stripe states that a failed inbound transfer creates no transaction and the payment method has not been debited, and that a canceled one is voided with no funds moving from the external bank account. If the money never left your bank, there is nothing to record. A transfer still in the processing state has not landed yet either.

How long does a Stripe inbound transfer take?

Stripe documents 2 to 4 business days for an inbound transfer over standard ACH. Same-day settlement exists as a limited preview capability that has to be requested from Stripe, and when it is granted, funds arrive the same business day if the transfer succeeds before the bank partner cutoff.

What happens if an inbound transfer is returned after it succeeded?

Stripe keeps the original transfer and adds a second movement. The returned flag on the object becomes true and a received debit is added to the linked flows, so the transfer is not erased. Acodei’s documentation describes received debits in the context of card spend rather than returns, so confirm how a return posted to your own books rather than assuming it reversed the Transfer.

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.