Skip to content
Insights · Engineering

Which transfer did that charge create?

Name the transfer that charge created: the id, the amount, and the source charge. A different id can share an amount. Another account omits it.

Scroll
EngineeringOct 30, 202612 min readBy Salman Naqvi, Founder & CEO
Which transfer did that charge create?

A founder says the charge paid the connected account, or says the payout on the dashboard is not the one the customer was shown. Tonight, three proofs, in a console you administer. Name the transfer the charge created: the transfer id, the amount, and the source charge, or write that source_transaction is null. Show a different transfer whose id, or whose amount, is not this one. Show another account's list that does not contain this transfer. If any of the three needs the person who wired billing, you have not named the transfer. You have a dollar figure and a guess.

This is the Transfer object. It is not the balance a customer holds. Which balance did that customer hold? is a transaction id, an amount, and an ending balance. A transfer can exist while that ending balance is a different object, and a balance transaction id can sit on a transfer without being the transfer. It is not the method the customer stored. Which method did that customer store? is a payment method id and a type. It is not the protection a branch set. Which protection did that branch set? is a review count. It is not the input a response sent. Which input did that response send? is an input item id. A connected-account movement is none of those.

None of what follows is a rate for this product, and none of it is legal advice. The fields below are one processor's current samples of a Transfer. The samples that share an amount do not share an id. The figures below that are a network's published totals, not a ledger of transfers on your account. A year of other people's payments is not the transfer the charge created tonight.

Stripe's object sample and Stripe's create sample print the same id and the same amount. The id is tr_1MiN3gLkdIwHu7ixNCZvFdgA. 27 characters. object is transfer. 8 characters. 8 is not 27. amount is 400. amount_reversed is 0. 400 is not 0. reversed is false. A false reversed flag beside a zero reversed amount is the same sample saying the transfer has not been reversed. It is not a second transfer. balance_transaction is txn_1MiN3gLkdIwHu7ixxapQrznl. 28 characters. 28 is not 27. created is 1678043844. currency is usd. 3 characters. description is null. destination is acct_1MTfjCQ9PRzxEwkZ. 21 characters. destination_payment is py_1MiN3gQ9PRzxEwkZWTPGNq9o. Also 27 characters, the same length as the transfer id, and not the same string. livemode is false, so the object is an example, not a live transfer on your account. metadata is an empty object. reversals.total_count is 0. has_more is false. The reversals url is /v1/transfers/tr_1MiN3gLkdIwHu7ixNCZvFdgA/reversals. 51 characters. source_transaction is null. The page says a null source_transaction means the transfer was funded from the available balance, not from a charge. This sample, the one people paste when they are asked which transfer a charge created, does not name a charge. source_type is card. 4 characters. The create request does not send source_type. The response prints card anyway. A default the response filled is not a field you sent. The enum the page names is bank_account, card, and fpx. Three names. bank_account is 12 characters. fpx is 3. 12 is not 4, and 3 is not 4. transfer_group is ORDER_95. 8 characters. The create request sends amount 400, currency usd, a destination placeholder, and transfer_group ORDER_95. It does not send a source_transaction. The response keeps source_transaction null. Do not paste a charge id onto that null because the question you were asked contained the word charge. Stripe-Version on the request is 2026-10-28.endive. 17 characters. 17 is not 8, and 17 is not the object name transfer_reversal, which is also 17 characters and is not this object (Stripe, The Transfer object, and Create a transfer).

The list sample asks for limit 3 and returns the same transfer. The url is /v1/transfers. 13 characters. 13 is not 51. has_more is false. data length is 1. 1 is not 3. The only id is again tr_1MiN3gLkdIwHu7ixNCZvFdgA. Same amount 400. Same null source_transaction. Same destination. The page says limit can range from 1 to 100, and the default is 10. 10 is not 100. 10 is not 3. 1 object is not the default and is not the limit you asked for. A list that reprints the object you already opened is not the second proof. The second proof is a different id. This list does not contain one (Stripe, List all transfers).

The reversal sample is a different transfer, and it is not a charge. The reversal id is trr_1Mio2eLkdIwHu7ixN5LPJS4a. 28 characters. object is transfer_reversal. 17 characters, the same length as the Stripe-Version string, and not that string. amount is 400. 400 matches the object sample and is not a reason to merge the ids. balance_transaction is txn_1Mio2eLkdIwHu7ixosfrbjhW. Also 28 characters, the same length as the object's balance transaction, and not the same string. created is 1678147568. 1678147568 minus 1678043844 is 103724 seconds: 1 day, 4 hours, 48 minutes, and 44 seconds. The page does not print that gap. 103724 is not 400. currency is usd. destination_payment_refund is pyr_1Mio2eQ9PRzxEwkZYewpaIFB. 28 characters. metadata is empty. source_refund is null. transfer is tr_1Mio2dLkdIwHu7ixsUuCxJpu. 27 characters, the same length as tr_1MiN3gLkdIwHu7ixNCZvFdgA, and not the same string. The prefix trr_ is 4 characters. The prefix tr_ is 3. 4 is not 3. The reversal request sends amount 400 against a transfer id placeholder. It does not send the object sample's id, and the response does not print that id. The object sample's amount_reversed is 0 and its reversals list is empty. A reversal of 400 on a different transfer does not fill that empty list. Do not copy acct_1MTfjCQ9PRzxEwkZ onto the reversal because both pages are about transfers. The reversal sample prints no destination (Stripe, Create a transfer reversal).

The network totals people quote when they want a payment figure did not open this transfer. Nacha's release of 30 January 2025 says ACH Network payment volume rose 6.7 percent from 2023 to 2024, to 33.6 billion payments. The value was $86.2 trillion, an increase of 7.6 percent. 6.7 is not 7.6. Same Day ACH was more than 1.2 billion payments, valued at $3.2 trillion, and volume rose 45.3 percent, which the sentence calls more than double the growth rate from 2022 to 2023. The page does not print that earlier rate. 45.3 divided by 2 is 22.65, which the page also does not print. You cannot check the word double against a number that is not there. Business-to-business payments were 7.3 billion, an 11.6 percent increase. Fourth-quarter volume was 8.7 billion payments valued at $22.5 trillion, up 7.4 percent and 9.5 percent. 8.7 times 4 is 34.8. 34.8 is not 33.6. 33.6 divided by 8.7 is 3.862, not 4. A quarter is not a year, and four times one quarter is not the year the same release prints (Nacha, Same Day ACH Passes Major Milestone in 2024).

The infographic for that same year does not print the news release's 7.3. It prints B2B volume of 6.6 billion in 2023 and 7.4 billion in 2024, and it prints the same 11.6 percent. 7.4 is not 7.3. 6.6 times 1.116 is 7.3656, which is neither 7.3 nor 7.4. The page does not print 7.3656. Debits are 18.8 billion and credits are 14.7 billion. 18.8 plus 14.7 is 33.5. 33.5 is not 33.6. Dollar debits are $29.3 trillion and dollar credits are $56.8 trillion. 29.3 plus 56.8 is 86.1. 86.1 is not 86.2. The graphic says totals do not add due to rounding, and it still prints 33.6 and $86.2 beside the parts. Same Day debits are 654.6 million and credits are 585.4 million. 654.6 plus 585.4 is 1,240.0 million, which is 1.240 billion. The headline prints 1.2 billion. 1.240 is not the figure 1.2 as written. Same Day dollar debits are $1.1 trillion and credits are $2.1 trillion. 1.1 plus 2.1 is 3.2, which does match the $3.2 trillion headline. One pair adds. The volume pair does not land on the headline's written figure. Volume growth is 45.3 percent and value growth is 33.3 percent. 45.3 is not 33.3. The graphic also says the year was about 98 payments per American and nearly 134 million payments a day. 33.6 billion divided by 98 is not an integer the page prints. 134 million times 365 is 48.91 billion, not 33.6 billion. 33.6 billion divided by 134 million is 250.746 days. The page does not print 250.746 or 365. A daily average that does not scale to the printed year is not your transfer (Nacha, 2024 ACH Network Volume and Value).

The later statistics page is a different year, and it does not repair the 2024 pair. The prose says volume rose nearly 4.9 percent from 2024 to 35.2 billion payments in 2025. The details print 35.19 billion, debits 19.59 billion and credits 15.60 billion. 19.59 plus 15.60 is 35.19. That pair adds. 35.19 is not 35.2. The same details print year-over-year payments growth of 4.9 percent. 35.19 divided by 33.6 is 1.0473, a 4.73 percent rise. 4.73 is not 4.9. The page does not print 4.73. Same Day prose says 1.4 billion payments valued at $3.9 trillion. The Same Day details print 1.45 billion and $3.92 trillion. 1.4 is not 1.45, and 3.9 is not 3.92. Debits 821.25 million plus credits 626.44 million is 1,447.69 million, which is 1.44769 billion. 1.44769 is not 1.45 and is not 1.4. The page does not print 1.44769. One consumer line prints 17.16 billion payments and a later line prints 17.17 billion. 17.16 is not 17.17. Direct deposit dollars are $16.49 trillion in one sentence and $16.5 trillion in another. 16.49 is not 16.5. Commercial 7.31 billion plus government 1.43 billion is 8.74 billion, which does match the direct-deposit count. B2B payments are 8.08 billion, up 9.9 percent. 7.3 times 1.099 is 8.0227, not 8.08. 7.4 times 1.099 is 8.1326, not 8.08. Neither 2024 B2B figure, grown by the printed 9.9 percent, is the 2025 figure. None of these is amount 400, and none of them is a transfer id (Nacha, ACH Network Volume and Value Statistics).

Do the three proofs on one real transfer, in the console that actually holds it. First, the binding. Copy the transfer id, the amount, the currency, the destination, and the source_transaction. If source_transaction is null, write null, and write that this transfer was not funded by a charge. Do not invent a charge id because a customer is asking which transfer a charge created. If amount_reversed is 0, write 0. Do not copy 400 from a sample onto a live row. Second, the other transfer. A different id, even with the same amount, is not this one. The reversal sample is that shape, and it is still a sample. A list that reprints the same id is not that second transfer. A network total is not that second transfer. Third, the other account. A list that belongs to someone else does not contain this id. If the only list is one shared platform account, write that. A tenant you cannot name is the finding.

Three moves feel like the proof and are a second problem. Reversing the transfer because the amount was embarrassing, and then describing the missing row as a cleanup. The reversal sample is a different transfer id, and a zero amount_reversed on the object sample does not become 400 because a different page reversed 400. Quoting 33.6 billion or $86.2 trillion because they look precise, while the transfer you were asked about is one object, and the release that printed them had already failed to make its own debit and credit columns add to its own headline. Asking a model which transfer the charge created. The model will pick a plausible destination. It will not open the object. A balance you have not kept is which balance did that customer hold?. Opening that transaction does not name this transfer id.

The path is ordinary when an operator can open one merchant's transfers without opening the next merchant's transfers as the way to prove it. PayOrch is a payment orchestration dashboard: wallets, providers, merchants, platform fees, and fraud controls in one view. The shape that matters here is one merchant you can point at, in an account you administer, distinct from the next merchant. That case is not a transfer ledger. Nothing in that sentence is a headcount, a duration, or a result figure. If the only control on the screen changes every merchant's movement together, you do not have this proof. You have a totals page.

There is a version of this afternoon where hiring the path is the wrong purchase. Nothing is for sale, because the product does not take money yet. You have no product. You are still choosing who will build, and the document in front of you is a term sheet. The criteria for that choice sit on the page written for a top SaaS development company. That page is criteria. It does not rank anyone, including us. The only fact in the room is a network total. 33.6 billion is not your transfer, and 400 on a sample is not your transfer, and a null source_transaction is not a charge you may invent. A customer has already seen another customer's transfer. Naming a destination does not close a leak. Or you wanted a lawyer to say whether a network rule applies. Hire the lawyer.

When the customer is real and the console cannot name the transfer, the missing object is specific. An admin action, in an account you administer, that shows one transfer id, one amount, and one source charge or an explicit null, shows a different transfer that is not that one, and shows another account's list without it. A startup software development company that expects this will have put that action next to the rest of the billing screen, before a stranger's complaint is the way you discover the vendor owns the movement. One that needs a call in order for you to see which transfer was created is telling you who holds the id. If the first slice is a fixed capability, an AI integration sprint is the shape where the acceptance sentence can include the three proofs. If you do not yet know which system stores the charge, a two-week AI readiness assessment maps the systems. The findings are yours. They are not a promise that 33.6 billion payments will appear on your account. If what you are buying is the product around the billing screen, the offer is an AI product development company.

Before you tell them which transfer the charge created, do the three proofs and write the id. Name the id, the amount, and the source charge, or write that source_transaction was null. Show a different transfer that is not that one, even if the amount matches. Show another account's list that does not contain it. Do not paste the list's only id down as a second transfer, and do not paste 7.3 onto a graphic that prints 7.4. The binding is the transfer you can defend.

Questions

Three records, in a console you administer. The transfer id, the amount, and the source charge, or a written line that source_transaction was null. A different transfer whose id or amount is not this one, even when the amount matches. Another account's list that does not contain this transfer. If any of the three needs the person who wired billing, you do not have the proof.

No. A count of other people's ACH payments is not the id on this transfer. A transfer you can defend is the id, the amount, and the source charge, or a written line that the source charge was null. 33.6 billion payments is not tr_1MiN3gLkdIwHu7ixNCZvFdgA, and 400 on a sample is not your amount.

When nothing is for sale, when you have no product, when you are still choosing a firm, when the only fact in the room is a network total, when a customer has already seen another customer's transfer, or when you wanted a lawyer.

Find this useful? Tell Google to show you more of it.

Let's put AI to work in your business.

A 30-minute call. You bring the workflow or the roadmap — we'll tell you what's feasible, what it costs, and what we'd build first.

Book a call→