We build a platform for sellers and customers.
- The customers should be able to use different payment methods.
- The sellers should receive money for their invoices, but should not see customer data.
With Stripe, that called a destination charge where the platform charges the customer, but the actual money is routed to the seller. The seller then sees he's been paid the amount, but not by whom (apart from "through our platform").
I'm using Stripe.NET in our C# ASP.NET backend, but my question is not technology related.
I can create a charge to do exactly as described above.
Example code:
var stripeCharge = stripeChargeService.Create(
new Stripe.ChargeCreateOptions
{
Amount = (int)(price * multiplier),
Currency = currency,
CustomerId = stripeCustomer.Id,
SourceId = source,
Destination = new Stripe.ChargeDestinationCreateOptions
{
Account = stripeSellerId
},
StatementDescriptor = "PLATFORM: " + invoiceNumber,
Description = "PLATFORM Payment for invoice number " + invoiceNumber,
Metadata = new Dictionary<string, string>
{
{ "InvoiceNumber", invoiceNumber }
}
});
When I do this, it works. I can see the charge in my platform account. I can see the payment in my seller's account. But the seller does not get any information that I provided. The "Description" and "Metadata" only show up in my platform account's charge. The sellers payment only says "123.45€". Uh... great... who paid their invoice? Matter of fact I don't care who. But which invoice was paid seems to be a core requirement for everybody building a platform or selling on it.
I checked the documentation of Stripe.NET and I checked if maybe it's older than the stripe API itself. But there is no parameter I could set. Nothing in the ChargeDestinationCreateOptions I could set (something like DestinationDescription for example).
The description field for the seller exists, I can see it in the dashboard, but it's empty. So what am I missing?
How do I set the description or metadata of payment the seller can see in their account when doing a "destination charge"?