# Revenue Recognition with bank transfers Learn how revenue recognition works with bank transfer payments and customer cash balances. Bank transfers allow customers to send money into a cash balance that Stripe holds before applying it to payments. Revenue Recognition tracks these customer cash balance transactions to help you monitor bank transfers and reconcile payments. Revenue recognition amortizes revenue by the second, but these examples use a daily interval for clarity. ## Customer cash balance accounts Revenue Recognition uses two accounts to track customer cash balances: **Customer cash balance** Assets (debit): This is the cash held by Stripe for a customer. Both customers and businesses can add or remove funds from this account. **Customer cash adjustment** Liabilities (credit): The liability represents the unused portion of the customer’s paid cash balance. It tracks how much of the cash balance remains available for future payments. Both accounts exist at the customer level and track fund movements before funds are applied to invoices. ## Fund a cash balance When a customer makes a bank transfer to fund their cash balance, both the customer cash balance and customer cash adjustment accounts increase. Example timeline: - On January 15, a customer starts a monthly subscription for 31 USD. The invoice for 31 USD gets created and finalized. - On February 1, the customer funds their cash balance with 100 USD through a bank transfer. At the end of February, the account balances would show: | Account | Jan | Feb | | --- | --- | --- | | AccountsReceivable | +31.00 | | | Revenue | +17.00 | +14.00 | | DeferredRevenue | +14.00 | -14.00 | | CustomerCashBalance | | +100.00 | | CustomerCashAdjustment | | +100.00 | ## Apply a cash balance to a payment When a customer applies funds from the cash balance to a payment intent (either automatically after funding arrives, or manually), both their cash balance and cash adjustment accounts decrease. Example timeline (continuing the previous example): - On March 1, the 100 USD in the cash balance is applied to the invoice payment. At the end of March, the account balances would show: | Account | Jan | Feb | Mar | Total | | --- | --- | --- | --- | --- | | AccountsReceivable | +31.00 | | -31.00 | 0.00 | | Revenue | +17.00 | +14.00 | | +31.00 | | DeferredRevenue | +14.00 | -14.00 | | 0.00 | | Cash | | | +31.00 | +31.00 | | CustomerCashBalance | | +100.00 | -31.00 | +69.00 | | CustomerCashAdjustment | | +100.00 | -31.00 | +69.00 | ## Funding reversal When a customer initiates a reversal to return funds to their bank account, both their cash balance and cash adjustment accounts decrease. Example timeline: - On January 10, a customer funds their cash balance with 100 USD. - On February 5, the customer reverses the funding. At the end of February, the account balances would show: | Account | Jan | Feb | Total | | --- | --- | --- | --- | | CustomerCashBalance | +100.00 | -100.00 | 0.00 | | CustomerCashAdjustment | +100.00 | -100.00 | 0.00 | ## Payments unapplied from invoices When a partially funded payment intent is modified or canceled, the funds return to the customer’s cash balance and become available for future payments. Example timeline: - On January 15, a customer starts a monthly subscription for 31 USD. The invoice for 31 USD gets created and finalized. - On February 1, the customer funds their cash balance with 100 USD. - On March 1, the cash balance is applied to the invoice payment. - On April 1, the payment is unapplied from the invoice. At the end of April, the account balances would show: | Account | Jan | Feb | Mar | Apr | Total | | --- | --- | --- | --- | --- | --- | | AccountsReceivable | +31.00 | | -31.00 | +31.00 | +31.00 | | Revenue | +17.00 | +14.00 | | | +31.00 | | DeferredRevenue | +14.00 | -14.00 | | | 0.00 | | Cash | | | +31.00 | -31.00 | 0.00 | | CustomerCashBalance | | +31.00 | -31.00 | +31.00 | +31.00 | | CustomerCashAdjustment | | +31.00 | -31.00 | +31.00 | +31.00 | ## Withdrawal operations Withdrawal operations return unspent funds to the customer’s bank account. ### Initiating a withdrawal When you initiate a withdrawal to return unspent funds to the customer, the customer cash balance and customer cash adjustment accounts are reduced. Example timeline: - On January 10, a customer funds their cash balance with 110 USD. - On February 1, 100 USD is applied to an invoice payment. - On March 1, a withdrawal of 10 USD is initiated to return the unused funds. At the end of March, the account balances would show: | Account | Jan | Feb | Mar | Total | | --- | --- | --- | --- | --- | | CustomerCashBalance | +110.00 | -100.00 | -10.00 | 0.00 | | CustomerCashAdjustment | +110.00 | -100.00 | -10.00 | 0.00 | ### Canceling a withdrawal A withdrawal might be canceled if you cancel the refund before the customer submits their bank details, or if Stripe can’t collect the bank account details. This reverses the withdrawal operation. Example timeline (continuing the previous example): - On April 1, the withdrawal is canceled. At the end of April, the account balances would show: | Account | Jan | Feb | Mar | Apr | Total | | --- | --- | --- | --- | --- | --- | | CustomerCashBalance | +110.00 | -100.00 | -10.00 | +10.00 | +10.00 | | CustomerCashAdjustment | +110.00 | -100.00 | -10.00 | +10.00 | +10.00 | ## Balance transfer When funds remain unused in the customer cash balance for more than 90 days and can’t be refunded to the customer’s bank account, they transfer to your Stripe balance. You then become responsible for returning these funds. Example timeline: - On January 15, a customer starts a monthly subscription for 31 USD. The invoice for 31 USD gets created and finalized. - On February 1, the customer funds their cash balance with 110 USD. - On March 1, 100 USD is applied to the invoice payment. - On April 1, a withdrawal of 10 USD is initiated. - On May 1, the withdrawal is cancelled. - On June 1, after failed refund attempts, a balance transfer of 10 USD moves the funds to your balance. At the end of June, the account balances would show: | Account | Jan | Feb | Mar | Apr | May | Jun | Total | | --- | --- | --- | --- | --- | --- | --- | --- | | AccountsReceivable | +31.00 | | -31.00 | | | | 0.00 | | Revenue | +17.00 | +14.00 | | | | | +31.00 | | DeferredRevenue | +14.00 | -14.00 | | | | | 0.00 | | Cash | | | +31.00 | | | +10.00 | +41.00 | | CustomerCashBalance | | +41.00 | -31.00 | -10.00 | +10.00 | -10.00 | 0.00 | | CustomerCashAdjustment | | +41.00 | -31.00 | -10.00 | +10.00 | | 0.00 | You can later use manual journal entries to record when you return the funds to the customer. ## Overdraft adjustments When the customer cash balance becomes negative, an overdraft adjustment pulls funds from your balance to cover the deficit. This typically occurs when a funding reversal happens after funds have already been applied to a payment. ### Overdraft before funding Example timeline: - On January 15, a customer starts a monthly subscription for 31 USD. The invoice for 31 USD gets created and finalized. - On March 1, 100 USD is applied to the invoice payment (before the customer has funded their balance). - On April 1, the overdraft is adjusted by pulling 100 USD from your balance. - On May 1, the customer funds their cash balance with 100 USD to settle the overdraft. At the end of May, the account balances would show: | Account | Jan | Feb | Mar | Apr | May | Total | | --- | --- | --- | --- | --- | --- | --- | | AccountsReceivable | +31.00 | | -31.00 | | | 0.00 | | Revenue | +17.00 | +14.00 | | | | +31.00 | | DeferredRevenue | +14.00 | -14.00 | | | | 0.00 | | Cash | | | +31.00 | -31.00 | | 0.00 | | CustomerCashBalance | | | -31.00 | +31.00 | +31.00 | +31.00 | | CustomerCashAdjustment | | | -31.00 | | +31.00 | 0.00 | ### Overdraft after reversal Example timeline: - On January 15, a customer starts a monthly subscription for 31 USD. The invoice for 31 USD gets created and finalized. - On February 1, the customer funds their cash balance with 100 USD. - On March 1, 100 USD is applied to the invoice payment. - On April 1, the funding is reversed, creating a negative balance. - On May 1, the overdraft is adjusted. At the end of May, the account balances would show: | Account | Jan | Feb | Mar | Apr | May | Total | | --- | --- | --- | --- | --- | --- | --- | | AccountsReceivable | +31.00 | | -31.00 | | | 0.00 | | Revenue | +17.00 | +14.00 | | | | +31.00 | | DeferredRevenue | +14.00 | -14.00 | | | | 0.00 | | Cash | | | +31.00 | | -31.00 | 0.00 | | CustomerCashBalance | | +31.00 | | -31.00 | +31.00 | 0.00 | | CustomerCashAdjustment | | +31.00 | -31.00 | -31.00 | | -31.00 | ## Foreign exchange loss When the cash balance is in a different currency than the settlement currency, foreign exchange losses are recorded for both the customer cash balance and customer cash adjustment accounts at regular checkpoints. Because the cash is held in the foreign currency without conversion, these FX loss entries typically offset each other, resulting in no net FX loss. However, during balance transfer or overdraft adjustment events, the two accounts hold different values, causing the FX losses to not cancel out, which results in a net FX loss. ### Normal operations (FX losses offset) During normal operations (funding, applying funds to a payment, refunds), FX loss entries are created for both accounts but offset each other completely. Example timeline: - On January 15, a customer starts a monthly subscription for 31 USD. The invoice for 31 USD gets created and finalized. - On February 1, the customer funds their cash balance with 100 EUR (equivalent to 105 USD at the time of funding). - At the end of February, a checkpoint occurs. Exchange rates have changed, creating FX losses of 2 USD for both accounts, which cancel out. - On March 1, the EUR funds are applied to the invoice payment. At the end of March, the account balances would show: | Account | Jan | Feb | Mar | Total | | --- | --- | --- | --- | --- | | AccountsReceivable | +31.00 | | -31.00 | 0.00 | | Revenue | +17.00 | +14.00 | | +31.00 | | DeferredRevenue | +14.00 | -14.00 | | 0.00 | | Cash | | | +31.00 | +31.00 | | CustomerCashBalance | | +105.00 | -33.00 | +72.00 | | CustomerCashAdjustment | | +105.00 | -33.00 | +72.00 | | FxLoss | | | 0.00 (offsetting +2.00/-2.00) | 0.00 | ### Balance transfer (FX losses result in a net loss) During balance transfer or overdraft adjustment events, the customer cash adjustment account becomes zero while the customer cash balance account retains a value. Because the accounts hold different amounts, the FX losses don’t offset, which results in a net FX loss. Example timeline: - On January 1, a customer funds their cash balance with 100 EUR (equivalent to 105 USD at funding). - At the end of January, a checkpoint occurs. Exchange rates change, which creates offsetting FX losses of 2 USD for both accounts (net zero). - On March 15, a balance transfer moves the full cash balance to your cash account. - At the end of March, exchange rates change again. This creates an FX gain of 3 USD for the customer cash adjustment account only, because the customer cash balance account is now zero after the transfer. At the end of March, the account balances would show: | Account | Jan | Feb | Mar | Total | | --- | --- | --- | --- | --- | | Cash | | | +103.00 | 103.00 | | CustomerCashBalance | +105.00 | -2.00 | -103.00 | 0.00 | | CustomerCashAdjustment | +105.00 | -2.00 | +3.00 | 106.00 | | FxLoss | | 0.00 | +3.00 | +3.00 |