saicharan
saicharan

Reputation: 485

How to get transfer data from stripe using payment id and account id (.Net)

I am trying to get transfer related data from stripe

        TransferService service = new TransferService();
        TransferListOptions stripeTransferList = new TransferListOptions
        {
            Destination = accountId,
            Limit = 100
        };
        var list = await service.ListAsync(stripeTransferList);
        var finalData = list.FirstOrDefault(x => x.DestinationPaymentId == paymentId);

so when I try to search paymentId from that list I was not able to find any because the page limit is 100 only

 Limit = 100

how to fetch all the data and filter from that??

Upvotes: 1

Views: 313

Answers (1)

koopajah
koopajah

Reputation: 25632

The stripe-dotnet library supports automatic pagination and it's documented here.

This lets you paginate through all the data in your account based on specific criteria that you passed as parameters. For example you can list all Transfer objects made to a specific connected account this way:

TransferService service = new TransferService();
TransferListOptions listOptions = new TransferListOptions
{
  Destination = "acct_123456",
  Limit = 100
};
foreach (var transfer in service.ListAutoPaging(listOptions)) {
  // Do something with this Transfer
}

Now, this allows you to iterate over every Transfer but if you have a lot of data this could be quite slow. An alternative would be to start from the charge id, the py_123456 that you have from your connected account. If you know which account this charge was created on, you can fetch it directly via the API. This is done using the Retrieve Charge API along with passing the connected account id as documented here.

The Charge resource has the source_transfer property which is the id of the Transfer (tr_123) from the platform that created this charge. You can also use the Expand feature, which lets you fetch the entire Transfer object back to get some detailed information about it.

The code would look like this

var transferOptions = new TransferGetOptions{};
transferOptions.AddExpand("source_transfer");

var requestOptions = new RequestOptions();
requestOptions.StripeAccount = "acct_12345";

TransferService service = new TransferService();
Charge charge = service.Get(transferOptions, requestOptions);

// Access information about the charge or the associated transfer
var transferId = charge.SourceTransfer.Id;
var transferAmount = charge.SourceTransfer.TransferData.Amount;

Upvotes: 1

Related Questions