Statement descriptors with Connect

    Learn how statement descriptors work for charges with Connect.

    Make sure that you understand the basic requirements for all statement descriptors. This page explains how statement descriptors work differently for your platform and for your connected accounts depending on how your platform sets up charges for connected accounts. Depending on how you set up charges, the static component of the statement descriptor is set on the platform or on the connected account.

    Set a connected account’s static components

    A standard account provides its own statement descriptor. The platform sets the statement descriptor for Express or Custom connected accounts with the settings[payments][statement_descriptor] argument on the Account object:

    curl -X POST https://api.stripe.com/v1/accounts \
      -u {PLATFORM_SECRET_KEY}: \
      -d type=custom \
      -d country=US \
      -d business_type=company \
      -d requested_capabilities[]=card_payments \
      -d settings[payments][statement_descriptor]="RUNNER CLUB"

    Or, if connected accounts set a dynamic suffix on charges, set a prefix to help make sure the complete statement descriptor appears as intended:

    curl -X POST https://api.stripe.com/v1/accounts \
      -u {PLATFORM_SECRET_KEY}: \
      -d type=custom \
      -d country=US \
      -d business_type=company \
      -d requested_capabilities[]=card_payments \
      -d settings[card_payments][statement_descriptor_prefix]="RUNCLUB"

    The prefix must contain between 2 and 10 characters, inclusive, and the complete statement descriptor can contain a maximum of 22 characters including the * symbol and the space that concatenate the prefix and suffix.

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

    If the statement descriptor is set on card charges and if no prefix is set, Stripe truncates the account statement descriptor as needed to set the prefix value.

    Which account provides the static component?

    The static statement descriptor or prefix that appears on a customer’s statement is set on the platform in most cases.

    It’s set on the connected account only:

    • For all cases of direct charges on the connected account. Note that direct charges require the card_payments capability.
    • If the on_behalf_of argument is set to the connected account for either destination charges or separate charges and transfers.

    Any additional information that’s displayed on a customer’s statement is also provided by the same account that provides the static component (business address, phone number).

    Set a dynamic suffix for connected account charges

    When you create a dynamic suffix on a charge for a connected account, the API call is the same as for any other charge, with the addition of the "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}" header:

    curl https://api.stripe.com/v1/charges \
      -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
      -d amount=1000 \
      -d currency=usd \
      -d source=tok_visa \
      -d statement_descriptor_suffix="Custom descriptor" \
      -H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}"
    
    # 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'
    
    charge = Stripe::Charge.create({
      amount: 1000,
      currency: "usd",
      source: "tok_visa",
      statement_descriptor_suffix: "Custom descriptor",
    }, stripe_account: "{{CONNECTED_STRIPE_ACCOUNT_ID}}")
    
    # 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'
    
    charge = stripe.Charge.create(
      amount=1000,
      currency="usd",
      source="tok_visa",
      statement_descriptor_suffix="Custom descriptor",
      stripe_account="{{CONNECTED_STRIPE_ACCOUNT_ID}}",
    )
    
    // 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');
    
    $charge = \Stripe\Charge::create([
      "amount" => 1000,
      "currency" => "usd",
      "source" => "tok_visa",
      "statement_descriptor_suffix" => "Custom descriptor",
    ], ["stripe_account" => "{{CONNECTED_STRIPE_ACCOUNT_ID}}"]);
    
    // 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";
    
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("amount", 1000);
    params.put("currency", "usd");
    params.put("source", "tok_visa");
    params.put("statement_descriptor_suffix", "Custom descriptor");
    
    RequestOptions requestOptions = RequestOptions.builder().setStripeAccount({{CONNECTED_STRIPE_ACCOUNT_ID}}).build();
    Charge charge = Charge.create(params, requestOptions);
    
    // 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');
    
    stripe.charges.create({
      amount: 1000,
      currency: "usd",
      source: "tok_visa",
      statement_descriptor_suffix: "Custom descriptor",
    }, {
      stripe_account: "{{CONNECTED_STRIPE_ACCOUNT_ID}}",
    }).then(function(charge) {
      // asynchronously called
    });
    
    // 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"
    
    params := &stripe.ChargeParams{
      Amount: stripe.Int64(1000),
      Currency: stripe.String(string(stripe.CurrencyUSD)),
      StatementDescriptorSuffix: stripe.String("Custom descriptor"),
    }
    params.SetStripeAccount("{{CONNECTED_STRIPE_ACCOUNT_ID}}")
    params.SetSource("tok_visa")
    
    charge, err := 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";
    
    var service = new ChargeService();
    var createOptions = new ChargeCreateOptions
    {
      Amount = 1000,
      Currency = "usd",
      Source = "tok_visa",
      StatementDescriptorSuffix = "Custom descriptor",
    }
    
    var requestOptions = new RequestOptions();
    requestOptions.StripeAccount = "{{CONNECTED_STRIPE_ACCOUNT_ID}}";
    service.Create(createOptions, requestOptions);
    

    You can check concatenated statement descriptors (prefix* suffix) in the Stripe Dashboard.

    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