#mitcheroo
1 messages ยท Page 1 of 1 (latest)
Hello
We don't really know much about the Dashboard here as we focus on the API. You will be better off reporting this to our Support team: https://support.stripe.com/contact/login
Hi there. Actually, my question is driven by an API issue. I can't tie a payout transaction (a dispute withdrawal) back to a dispute, because it looks like the transaction was created as a Balance Transfer, not a Dispute Withdrawal like I usually see. I am not sure how to get the details of the Balance Transfer via the API, was hoping to see details via the dashboard. Can you help?
If so, the original charge ID is ch_3M6FmaDOwYADn7R82BNnVgu9
Ah okay thanks for explaining
Let me take a look
So I assume you mean "balance transaction" when you say "balance transfer"
Yes, I'm sure you're right. The Type column in the Transactions list on the dashboard is blank for that transaction, and its ID begins with btri_
Hmm we don't have any IDs that start with btri_ afaik
Balance Transactions are txn_
This is in the Description column in the Transactions list: btri_1MHgTtDOwYADn7R8We18HnFl
Ahhhh
Thank you
That is an inbound balance transfer
So yes that is different from balance transaction
And i forgot that it does indeed start with btri
Okay I need to step away but my colleague @rugged wigeon is going to step in and take a look
Ok, thanks for your help so far
๐
When you list all Balance Transactions via the API, do you see this btri_ object show up?
Checking, it'll take me a bit
Written in C#: calling the BalanceTransactionService with date range filtering of between 12/20/2022 and 12/22/2022, all I see is txn_ transactions. Does that answer your question? Anything else you want me to try?
Do you see multiple objects whose source is the Charge you listed above? If not, are there any with the source as this btri_ object ID?
Looking
Is there an API call that will return all objects for a source?
I'm calling BalanceTransactionService.List and nothing for that source is being returned
Hmmm, I don't think we surface those objects then. Where did you get the btri_ object ID from in the first place? Maybe we can work backwards from there to identify a workaround
On the dashboard. Check out payout
po_1MHgTvDOwYADn7R8iWqrcrox
What happened was: when I query the API to get the transactions that are a part of a payout, I don't get a transaction back for that dispute. So I can't reconcile our payout records with Stripe's
Apologies for the wait. Taking a look now
No worries, I'm not in a hurry
Got plenty to do here ๐
So I pull the transactions for the payout and I DO get a balance transaction
I don't know if this helps or not, but the payout reconciliation report has that transaction in it, but not with the Payout, so I don't think it's possible to associate it with a payout. That being said, it does give a Balance Transaction with a btr_ ID
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
Ah, we may have done the same thing just now
How can I use the btr_ to tie to the original charge?
Wait, when you say "So I pull the transactions for the payout and I DO get a balance transaction" what do you mean? Where did you pull from?
You can't, but I think the txn_ object that it's associated with will have the Charge ID as its source field
That's.... frustrating
Still looking
I think because this transaction effectively represents "Transferring funds from future refunds or disputes to cover a negative Stripe balance." it doesn't map to a specific Charge.
I don't think so. I think it has to be a txn_
Yep - "No such balance transaction"
So when you pass in the Balance Transaction ID for the btr_ (which is txn_1MHgTuDOwYADn7R8KHrpFOO2) to BalanceTransactionService is there anything helpful at all in the payload?
I think that's for a different transaction, but no, I don't see anything I can use to tie back to the original charge. Or dispute
Whooops sorry, it's this one --> txn_1MHgTuDOwYADn7R8KHrpFOO2
No, looks like the only other ID included is the btr_ ID
btr_1MHgTtDOwYADn7R8iFiqSYuN
Ah, alright. Okay yeah, in that case I don't think there's a way to trace back to the original Charge from the Balance Transfer object. I hate to give that answer, but I'm at a loss for other workarounds.
In the end, I don't think that transaction is important for reconciliation. Was this workflow intended to aid in closing your books? If not, can you elaborate on the problem you were hoping to solve by tying these two things together?
Sure. We consume transaction webhooks to record the individual transactions, then we associate those transactions with a payout when a payout webhook is received
Which we then tie to our bank statement
We also have processes that record transactions synchronously instead of by consuming webhook events, so it's important to us to make sure all transactions are tied to a payout, that nothing slips through the cracks or is inadvertently created
Reread your question - I suppose that's a long answer for - yes, we're closing our books ๐
Monthly
Just want to pop-in and let you know that I'm trying to figure out a good course of action and provide a better explanation for you on what to do with these btri_ objects. I want to say
"you can ignore them because they only represent money moving from your top-up balance to cover refunds and disputes (which you will already have information about for closing your books)"
But I'm not confident enough in that answer to say with certainty. Will work a bit more on this in the background and circle back once I've dug a bit more
Ok, thanks. If there were some other transaction in the list of payout transactions that corresponded to the dispute, I would agree. Looking forward to seeing what you come up with
Okay, so here's what I found. The btri_ transaction represents the event where funds are moved from your account's pre-funding balance (see "Future refunds or disputes or negative balance" at the bottom of the page here: https://dashboard.stripe.com/balance/overview). This is the flow for refunds as an example:
your Stripe pre-funding balance --> your Stripe balance --> Stripe --> Customer's issuing bank
So each btri_ just represents the part of the transaction's lifecycle where your balance is either (a) used to cover a refund or a dispute, or (b) absorbed from your pre-funding balance and added to a payout to your bank. Lastly, this money was always in your Stripe balance and either resulted in a Payout, Refund, or Dispute. So with that in mind, as long as you are accounting for Payouts, Refunds, and Disputes in your reconciliation, you can safely ignore these btri_ transactions.
There is unfortunately no way to associate btri_ objects with a payout at this time, as Stripe just considers them part of your balance.
Correction on the last sentence in the above message:
There is unfortunately no way to associate btri_ objects with a payout at this time, as none of the object associations are being surfaced to Stripe users in any meaningful way
So using this dispute as an example: if I have a net 34.81 dispute withdrawal recorded in our system, and there is no dispute transaction recorded as part of the payout, I'm kinda stuck. Unless I want to take the rather imprecise approach and assume that the 34.81 balance transfer transaction is associated with the dispute, and hope I'm correct. Is that accurate?
I just want to make sure there are no other alternatives
Because I'm hoping this is a rare occurrence. But if that changes, and it becomes much more frequent, we may have a huge headache to deal with
If I understand correctly, even though it says "Transferring funds from future refunds or disputes to cover a negative Stripe balance." all that happened with this particular btri_ is it was absorbed into your balance. If there were a refund or dispute that it was used to cover, you should already be tracking that, as I assume you need all refunds and disputes to close your books.
I don't think that this btri_ was used to cover a dispute or refund though. I think it was just absorbed into your regular balance in order to be sent with that payout, either (a) because it was a lingering pre-fund balance that didn't need to be used for refunds, disputes, or a negative balance, or (b) because you would have had a negative balance after the payout was created.
As an aside I'm going to surface this whole conversation to the product team with a call to action, as I think that having these transactions show up and point nowhere is not an ideal experience
Agreed, thanks.
You're correct, we're tracking the refund or dispute. But when a deposit arrives at our bank, representing what could be thousands of transactions (our largest payout last month contained nearly 6,300 transactions), we need a way to associate the deposit with individual transactions. Just to make sure everything reconciles.
So if the btri_ is just a transfer, does that mean there is a transaction in a payout somewhere that corresponds to this dispute?
I'm guessing No, because one really weird thing I noticed is that clicking the payment transaction in the dashboard shows no Payout For Dispute in the Connections section
https://dashboard.stripe.com/payments/pi_3M6FmaDOwYADn7R82sdU2Z5j
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
So if the btri_ is just a transfer, does that mean there is a transaction in a payout somewhere that corresponds to this dispute?
Yes, but only if thebtri_is actually representing a dispute. Remember what I said earlier about how abtri_transaction can represent a refund, dispute, or a balance to balance transfer used to cover a negative balance? That means it could be any one of those things and tracking it is not necessary, because it will be accounted for elsewhere in the balance. It's essentially a Stripe-balance to Stripe-balance transfer and should be ignored entirely
This Payment Intent (pi_3M6FmaDOwYADn7R82sdU2Z5j) seems unrelated unless I'm missing something obvious
All of this boils down to:
btri_represents a Stripe-balance to Stripe-balance transfer and should be ignored entirely in your accounting
Yes, but my issue is that it isn't accounted for anywhere else; the btri_ is the only line item that I can tie to. Correct me if I'm wrong.
Looking at the payment intent...
I see the payment intent, not sure what to do with it
Yes, but my issue is that it isn't accounted for anywhere else; the btri_ is the only line item that I can tie to. Correct me if I'm wrong.
It is part of your overall balance already and cannot be accounted for anywhere else. It's literally just a transaction Stripe uses internally in order to make sure there are funds available to cover refunds, disputes, and negative balances. It has nothing to do with any transaction you created.
I see the payment intent, not sure what to do with it
You sent me that Payment Intent, so I was just saying I don't know why you sent it to me. Is it relevant to this conversation?
Oh! Yes, look at the Connections section. Every other dispute I've seen has a Payout For Dispute. That one doesn't.
Then how can I confirm that a payout contains a withdrawal for a dispute?
As far as I can tell, it does. That's what the po_ object is
That's the payout for the original charge, not the dispute. Here's the Connections section for the disputed December charge:
As always, correct me if I'm wrong
If I had to guess, I would say that it will be included in a future payout, since the Dispute was only settled 3 or 4 business days ago. We've gotten a bit into the weeds here, as this channel isn't really intended to handle reporting questions or Dashboard behavior, so I would recommend directing follow-up questions about Disputes to our support folks, as they can escalate to Dispute specialists who have way more context than I do: https://support.stripe.com/contact/email
I wanted to make sure you had a solid answer for the original question though, so hopefully that part is fully wrapped up at least
Find help and support for Stripe. Our support center provides answers on all types of situations, including account information, charges and refunds, and subscriptions information. Get your questions answered and find international support for Stripe.
Thanks, I REALLY appreciate your time on this