Statement Descriptors

    Learn how statement descriptors work.

    A statement descriptor provides the information that appears on customers’ card or bank statements when they make or receive payments. Clear and accurate statement descriptors explain charges or payments and can help reduce the risk of chargebacks and disputes. Bank and card network rules require that statement descriptors clearly indicate the business responsible for the charge or payment, in addition to providing other details to help the customer understand their statements.

    You can set a single statement descriptor, also called a static statement descriptor, that appears on all customer statements. You set this statement descriptor when you activate your account.

    Or you can create a statement descriptor that contains a static prefix, which is associated with your account, and a dynamic suffix, which is associated with each charge. This approach enables you to specify details about the product, service, or payment, which your customers can then understand clearly on their bank or card statements.

    Most banks display this information consistently, but you should be aware that some may display it incorrectly or not at all.

    Statement descriptor requirements

    A complete statement descriptor – either a single static descriptor or the combination of a prefix and suffix – must meet the following requirements:

    • Contains between 5 and 22 characters, inclusive.
    • Contains at least one letter.
    • Does not contain any of the special characters < > \ ' " *.
    • Reflects your doing business as (DBA) name.
    • Contains more than a single common term or common website URL. A website URL only is acceptable if it provides a clear and accurate description of a transaction on a customer’s statement.

    A static prefix, also called a shortened descriptor in the Dashboard, must contain between 2 and 10 characters, inclusive. The remaining characters are reserved for the dynamic suffix.

    Set the static component

    You set a static statement descriptor or the shortened descriptor (prefix) in the Dashboard. This value then appears on all customer statements for charges or payments.

    A static statement descriptor is sufficient if:

    • Your business provides only a single product or service.
    • Your customers will understand a static value for any transaction with your business.
    • You prefer to provide the same statement descriptor for all transactions.

    You should consider a static prefix with dynamic suffix if:

    • You provide multiple products or services.
    • Your customers might not understand a single value for all their transactions with your business.
    • You prefer to provide transaction-specific details on the statement descriptor.

    It’s recommended to set both the statement descriptor and the shortened statement descriptor for flexibility in setting statement descriptors on charges.

    If the statement descriptor is set on card charges and if no prefix (shortened descriptor) is set, Stripe truncates the account statement descriptor as needed to set the prefix value. If the account statement descriptor contains fewer than 10 characters, truncation is not needed.

    Set a dynamic suffix

    You set the dynamic suffix of a statement descriptor with a call to either the Charges API or the PaymentIntents API. The suffix should specify details about the product, service, or payout, which your customers can then understand clearly on their bank or card statements.

    The suffix is concatenated with the prefix, the * symbol, and a space to form the complete statement descriptor that your customer sees.

    Make sure that the total length of the concatenated descriptor is no more than 22 characters, including the * symbol and the space. So, for example, if the prefix is RUNCLUB (7 characters), the dynamic suffix can contain up to 13 characters – for example, 9-22-19 10K (11 characters) or OCT MARATHON (12 characters). The computed statement descriptor would then be RUNCLUB* 9-22-19 10K or RUNCLUB* OCT MARATHON.

    If you want to provide a dynamic statement descriptor, the statement_descriptor_suffix value is required for card charges. If you set a value only for statement_descriptor on a charge, Stripe uses the account statement descriptor (static descriptor) instead.

    The following examples show how to add a suffix to the Charge object.

    curl https://api.stripe.com/v1/charges \
      -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
      -d amount=999 \
      -d currency=usd \
      -d description="example charge" \
      -d source=token \
      -d statement_descriptor_suffix="example descriptor"
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
    
    # Token is created using Checkout or Elements!
    # Get the payment token ID submitted by the form:
    token = params[:stripeToken]
    
    charge = Stripe::Charge.create({
        amount: 999,
        currency: 'usd',
        description: 'example charge',
        source: 'token',
        statement_descriptor_suffix: 'example descriptor',
    })
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
    
    # Token is created using Checkout or Elements!
    # Get the payment token ID submitted by the form:
    token = request.form['stripeToken'] # Using Flask
    
    charge = stripe.Charge.create(
        amount=999,
        currency='usd',
        description='example charge',
        source='token',
        statement_descriptor_suffix='example descriptor',
    )
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc');
    
    // Token is created using Checkout or Elements!
    // Get the payment token ID submitted by the form:
    $token = $_POST['stripeToken'];
    
    $charge = \Stripe\Charge::create([
        'amount' => 999,
        'currency' => 'usd',
        'description' => 'example charge',
        'source' => 'token',
        'statement_descriptor_suffix' => 'example descriptor',
    ]);
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";
    
    // Token is created using Checkout or Elements!
    // Get the payment token ID submitted by the form:
    String token = request.getParameter("stripeToken");
    
    Map<String, Object> params = new HashMap<>();
    params.put("amount", 999);
    params.put("currency", "usd");
    params.put("description", "example charge");
    params.put("source", token);
    params.put("statement_descriptor_suffix", "example descriptor");
    Charge charge = Charge.create(params);
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    const stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc');
    
    // Token is created using Checkout or Elements!
    // Get the payment token ID submitted by the form:
    const token = request.body.stripeToken; // Using Express
    
    (async () => {
      const charge = await stripe.charges.create({
        amount: 999,
        currency: 'usd',
        description: 'example charge',
        source: token,
        statement_descriptor_suffix: 'example descriptor',
      });
    })();
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"
    
    // Token is created using Checkout or Elements!
    // Get the payment token ID submitted by the form:
    token := r.FormValue("stripeToken")
    
    params := &stripe.ChargeParams{
        Amount: stripe.Int64(999),
        Currency: stripe.String(string(stripe.CurrencyUSD)),
        Description: stripe.String("example charge"),
        StatementDescriptorSuffix: stripe.String("example descriptor"),
    }
    params.SetSource(token)
    ch, _ := charge.New(params)
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";
    
    // Token is created using Checkout or Elements!
    // Get the payment token submitted by the form:
    var token = model.Token; // Using ASP.NET MVC
    
    var options = new ChargeCreateOptions {
        Amount = 999,
        Currency = "usd",
        Description = "example charge",
        Source = token,
        StatementDescriptorSuffix = "example descriptor",
    };
    var service = new ChargeService();
    Charge charge = service.Create(options);
    

    Set the statement descriptor on non-card charges

    Only card charges require the statement_descriptor_suffix value for a dynamic statement descriptor. For non-card charges, you can set the complete statement descriptor on the charge with the statement_descriptor value.

    Was this page helpful?

    Thank you for helping improve Stripe's documentation. If you need help or have any questions, please consider contacting support.

    On this page