Stripe - Statement Descriptor

When a customer makes a purchase from you, a short description about that purchase will show up on the bank statement alongside the charge. This is called a statement descriptor. As many of you know from real world experience, this descriptor is important to those monitoring their financial activity so it's something you want to make clear to your customers.

When using Stripe Standard or Stripe Pro, you can control the statement descriptor in a couple of different ways. By default, the statement descriptor will show up as your product name. So if the customer purchased Basic Product, that's what will show up on the bank statement.

Note: only 22 characters are allowed for statement descriptors. So if your product name is too long, it will be truncated. 

Standard Payment statement descriptors

From your WordPress dashboard, you can override the default behavior of using the individual product name as the statement descriptor by going to  Downloads → Settings → Payment Gateways → Stripe and setting the Statement Descriptor value.

If anything is entered into that field, it will override the statement descriptor for all products. If left blank, product titles (including price option labels) are used instead.

Recurring Payments statement descriptors

When a product is configured as a subscription using our Recurring Payments extension, the behavior is slightly different. When a subscription is purchased for the first time on your site, a "Plan" is created in Stripe that will be used for all subsequent purchases of that particular subscription. You can see your current list of Plans by logging into your Stripe account and navigating to Subscriptions → Plans

When this Plan is created, a statement descriptor is created based on the name of your product, regardless of the aforementioned setting in your WordPress dashboard. The descriptor will also be made lowercase and will separate words using hyphens. Understandably, this doesn't look friendly on a bank statement.

There are two ways to change this behavior that are best used together if you do not like the default behavior.

1. Edit the Plan details

By going to  Subscriptions -> Plans in your Stripe account, you can click on any Plan to see its details. Once you're on the details page, click the Edit details button. You will be presented with a modal that allows you to set the statement descriptor for that particular Plan.

What you set here will be used for all existing and future purchases of that subscription plan on your site.

2. Filter the Statement Descriptor default for Stripe plans

The above method allows you to control the statement descriptor for a specific plan that already exists. But if a new Plan is created from the first-time purchase of a different subscription on your site, the default behavior will apply. That means the new Plan will still have a statement descriptor based on the product name by default.

To create a new default statement descriptor for all Plans created in the future, use the following filter:

function custom_edd_recurring_stripe_plan_statement_descriptor( $args, $subscription ) {
   $args['statement_descriptor'] = 'New Statement Desc';
   return $args;
add_filter( 'edd_recurring_create_stripe_plan_args', 'custom_edd_recurring_stripe_plan_statement_descriptor', 10, 2 );

Replace New Statement Desc with your preferred default statement descriptor (remember the 22 character limit).

Again, this will be the new default statement descriptor for all Plans created by your subscriptions when they are first purchased. However, this will not change the statement descriptor for existing Plans that were created before applying the filter. Those Plans must be edited manually using the first method.

In summation, use the first method to edit the statement descriptor for an existing Plan. Use the second method to set a new default statement descriptor for all future Plans.