#knuppi.

1 messages ยท Page 1 of 1 (latest)

calm shardBOT
#

Hello! We'll be with you shortly. Below are links to other discussions we've had with you in the past week in case you want to review that information. If your question is related to one of these previous discussions, please provide a comprehensive summary of the current state and what you need help with now. We help many users simultaneously, so a summary allows us to resolve your issue as soon as possible.

severe sorrel
blissful lotus
#

Are the accounts on manual or automatic payouts?

severe sorrel
#

Automatic payouts

blissful lotus
severe sorrel
#

Let me check the information from your link

#

The use-case is;
Some of our Connected Accounts are using an accounting software which we are keeping up-to-date through an API. Every time an end-user (a customer of our Connected Account) makes a purchase we are creating an invoice in the accounting platform - this works very well.

#

However, the problem is that when we receive the Payout from Stripe we get them grouped - and there's no clear/simple way to connect the funds received to Invoice X, Y, or Z

#

Will the link you shared help us achieve this?

blissful lotus
#

It should be able to help you understand what charges are included in the payout yes. Depending on what specific details you need you may need to 'expand' additional fields beyond the example I shared

#

I recommend trying it out, seeing if you can reconcile as you need, and if not we can figure out a way

severe sorrel
#

When I try stripe.BalanceTransaction.list(payout="po_1MjXvUPskzKJRhmCkMFA76Br", stripe_account=company.stripe_id, type="charge", expand=["data.source"]) I get 403 error. Is it because stripe_account is included?

#

when I remove the stripe_account I get a 404 instead

blissful lotus
severe sorrel
#

sorry, used the wrong API key. it gets a bit confusing from time to time ๐Ÿ˜…

#
stripe.BalanceTransaction.list(payout="po_1MjXvUPskzKJRhmCkMFA76Br", stripe_account=company.stripe_id, type="charge", expand=["data.source"])

Returned 200 OK:

<ListObject list at 0x26d96ef8f90> JSON: {
  "data": [],
  "has_more": false,
  "object": "list",
  "url": "/v1/balance_transactions"
}
blissful lotus
#

Checking

blissful lotus
# severe sorrel ``` stripe.BalanceTransaction.list(payout="po_1MjXvUPskzKJRhmCkMFA76Br", stripe_...

Can you share the ID (req_xxx) of the API request? https://support.stripe.com/questions/finding-the-id-for-an-api-request

severe sorrel
#

I tried with another Payout ID: po_1ObCJHPskzKJRhmCc6yZYe19, this gave me much more information.

#

Lastly, is there documentation showing me what everything under the data.source means?

blissful lotus
severe sorrel
#

Sorry, I still seem to have a problem;

blissful lotus
severe sorrel
blissful lotus
#

Sorry, I don't understand. You mean how can you map a payout on a bank statement to a Payout object?

severe sorrel
#

This is a grouped Payout received from Stripe

#

The only reference the accountant has is STRIPE I0I3L8

#

Where do I find this string ("STRIPE I0I3L8") through the BalanceTransaction API? (or any other endpoint)

blissful lotus
severe sorrel
#

So, what type should I set in the BalanceTransaction.list?

blissful lotus
#

Well if you want the balance transactions related to payments on the account, then charge as per the example

#

But 'it depends' really on what kind of Connect payments you're doing as to what type you'll need to use

severe sorrel
#

I'm only interested in tracking the Payout which Stripe are doing to the bank account designated by the Connect Account (designated during their onboarding)

blissful lotus
#

Sorry, I think there's some confusion here. Your connected accounts are receiving payouts with funds from their payments made using your platform, yes?

severe sorrel
#

Yes, automated payouts

#

Yes, via our platform

blissful lotus
#

Ok, then what kind of payments are you doing as a platform? Direct? Destination?

severe sorrel
#

Direct payments (iirc) with stripe_account in all requests

blissful lotus
#

Ok, then type: 'charge' should be sufficient

severe sorrel
#

We're using application_fee_amount to pay ourselves

blissful lotus
#

Can you share an example pi_xxx you're creating?

severe sorrel
#

Using type="charge" gives me a lot of useful information, however the most important statement_descriptor is missing

blissful lotus
#

Where are you looking for that field?

severe sorrel
blissful lotus
#

statement_descriptor is on the Payout object

#

Top level field in the API response

severe sorrel
#

uh, where exactly? These are the top level keys in the JSON object

#

If I use type="payout", then I see the description (what I assume is statement_description). But then there's no information whatsoever about the charges which are included in the Payout

blissful lotus
severe sorrel
#

I have the po_XXX.
Question is; in one single request, is it possible to find the statement_descriptor and all the charges? Or do I need to create two queries?

blissful lotus
severe sorrel
#

OK, I'll try to work with this information. Thanks for now.
Hopefully I won't have to bother you again! ๐Ÿ˜…

blissful lotus
#

np! happy to help

severe sorrel
#

Sorry, maybe this is a bit redundant but in the payout.paid webhook, there is a field named description. Is it the same as statement_descriptor?

#

I'm asking since I'm starting this chain of requests with us receiving your webhook

willow horizon
#

hi! I'm taking over this thread.

severe sorrel
#

Hi @willow horizon

#

From having the po_XXX, I need to find the statement_descriptor

#

Can you please confirm that "STRIPE I0I3L8" is what would be found inside statement_descriptor?

willow horizon
#

I just deleted your attachment

#

please remember that Discord is public, so don't share sensitive information here

#

From having the po_XXX, I need to find the statement_descriptor
Give me a few minutes to look into this

severe sorrel
willow horizon
#

I see that string in your screenshot, but I have no ideas what it means or where it comes from.

severe sorrel
#

That string is typically the message accompanied in a bank transfer. Reading through your documentation it seems to me that it's the statement_descriptor, I just want to be 100% sure that it's correct

#

@willow horizon can you ask with your colleagues?

willow horizon
#

sorry Discord is busy, will have a look soon

#

so retrieve the po_xxx object you have, and check if the statement_descriptor match the string you saw

severe sorrel
#

OK, I'll do that. I'll work with this in mind

#

Another question; where do I see webhooks sent wrt connected accounts?

willow horizon
#

you can create a connected webhook endpoint to listen to events on connected account

severe sorrel
#

I'm trying to resend it through the CLI, but receive:

$ stripe events resend evt_1ObCaUPskzKJRhmCWUTMyg27
{
  "error": {
    "code": "resource_missing",
    "doc_url": "https://stripe.com/docs/error-codes/resource-missing",
    "message": "No such notification: 'evt_1ObCaUPskzKJRhmCWUTMyg27'",
    "param": "id",
    "request_log_url": "https://dashboard.stripe.com/test/logs/req_O4Nu9Eof8d6ENf?t=1705923635",
    "type": "invalid_request_error"
  }
}
#

and when trying to add stripe-account to the header:

$ stripe events resend evt_1ObCaUPskzKJRhmCWUTMyg27 --stripe-account acct_1MiwxqPskzKJRhmC
{
  "error": {
    "message": "You are not permitted to configure webhook endpoints on a connected account. Did you mean to create a Connect webhook on your account instead?",
    "request_log_url": "https://dashboard.stripe.com/acct_1MiwxqPskzKJRhmC/test/logs/req_Hz8GK01DXFFihP?t=1705923811",
    "type": "invalid_request_error"
  }
}
willow horizon
#

give me a few minutes to try to reproduce this

#

I got the same error on my end

#

looking into this...

severe sorrel
#

Cheers, thanks

calm shardBOT
peak beacon
#

hmm, it's probably a gap in CLI+Connect and resend is not supported in this case unfortunately. Maybe try doing it through the dashboard(on your platform account go to Developers>Webooks>the specific Connect endpoint>find the event there>look for a Retry button)

severe sorrel
#

We have two types of Webhooks, both Account and Direct. payout.paid (when a Payout is sent from Stripe to Standard Connect Account) is normally sent to which Webhook?

peak beacon
#

connect

severe sorrel
#

cheers, thanks

#

Now I have to wait 24 hours until the next payout.paid event is sent?

peak beacon
#

you could I suppose manually send the JSON to whatever code it is you're testing for the actual handling of the payout logic and cut skip the webhook-receiving logic

severe sorrel
peak beacon
#

yeah

#

I don't think it would block you, you can just stub something in for the purposes of testing your code using the raw data(I would assume you build a webhook endpoint that does the work of signature verification and parsing the JSON and checking the account, and can just call your handlePayoutOnAccount(payload, accountID) function with crafted JSON for testing, for example).

severe sorrel
#

I'll see what I can cook up. Thanks

severe sorrel