# Statement descriptors

> Set the text cardholders see on their card statements, at the account level or per transfer, so they recognize the charge and dispute less often.

> AI agents: search and read all Moov docs with the docs MCP server at https://docs.moov.io/mcp (no API key). Setup: https://docs.moov.io/guides/developer-tools/mcp-ai/docs-mcp/index.md

A statement descriptor is the text a cardholder sees for a charge on their bank or card statement. A clear descriptor helps cardholders recognize the payment, which reduces disputes.

For card payments, Moov uses the transfer-level descriptor if set, then the account-level descriptor. Otherwise, Moov will default to the DBA or legal business name of the Moov account truncated based on payment network limits.

Additionally, if a dedicated customer support phone number was not provided with the [business account](/guides/accounts/create-accounts/index.md) details, the main business phone number may be displayed in the statement descriptor instead. As a best practice, include a dedicated customer support number for the account.

## Set an account-level statement descriptor

You can set the default statement descriptor for a merchant by using the `account.settings.cardPayment.statementDescriptor` field in the `PATCH` [accounts endpoint](/api/moov-accounts/accounts/patch/index.md). In the example provided, we set a statement descriptor for a local gym called "Whole Body Fitness" at the account level.

**cURL**

```zsh
curl -X PATCH "https://api.moov.io/accounts/{accountID}" \
  -H "Authorization: Bearer {token}" \
  -H "x-moov-version: v2026.07.00" \
  --data-raw '{
    "profile": {
      "business": {
        "legalBusinessName": "Whole Body Fitness LLC",
        "businessType": "llc"
      }
    },
    "settings": {
      "cardPayment": {
        "statementDescriptor": "Whole Body Fitness"
      }
    }
  }'
```

**Go SDK**

```go
mc, _ := moov.NewClient()

var accountID string
businessType := moov.BusinessType_Llc

update := moov.PatchAccount{
  Profile: moov.PatchProfile{
    Business: &moov.PatchBusinessProfile{
      Name: "Whole Body Fitness LLC",
      Type: &businessType,
    },
  },
  AccountSettings: &moov.AccountSettings{
    CardPayment: &moov.CardPaymentSettings{
      StatementDescriptor: "Whole Body Fitness",
    },
  },
}

mc.PatchAccount(ctx, accountID, update)
```

**Moov.js**

```javascript
const moov = Moov(token);

moov.accounts.patch({
  accountID: "accountID",
  profile: {
    business: {
      legalBusinessName: "Whole Body Fitness LLC",
      businessType: "llc"
    }
  },
  settings: {
    cardPayment: {
      statementDescriptor: "Whole Body Fitness"
    }
  }
});
```

### American Express statement descriptors

Before a transaction settles with the bank, American Express statements may show a description of `Moov Financial` instead of the `statementDescriptor` that has been set for the merchant. Once the transaction settles and moves beyond the `pending` stage, the description will update with the statement descriptor that has been set for the merchant.

To avoid any confusion about the origin of the transaction, this information should be passed along to merchants to share with customers.

## Set a transfer-level statement descriptor

Business accounts must be approved by Moov to set the `source.cardDetails.dynamicDescriptor` when creating a [transfer](/api/money-movement/transfers/create/index.md). This field is an optional override of the default card statement descriptor, which allows a merchant to pass information to the card issuer at the time of transaction. The card issuer will then use this information to generate a description of the cardholder’s statement. In the example provided, we set a dynamic statement descriptor that captures the date of a yoga class at Whole Body Fitness.

**cURL**

```zsh
curl -X POST "https://api.moov.io/accounts/{accountID}/transfers" \
  -H "Authorization: Bearer {token}" \
  -H "x-idempotency-key: UUID" \
  -H "X-Wait-For: rail-response" \
  -H "x-moov-version: v2026.07.00" \
  --data-raw '{
    "amount": {
      "value": 100,
      "currency": "USD"
    },
    "destination": {
      "paymentMethodID": "string"
    },
    "source": {
      "paymentMethodID": "string",
      "cardDetails": {
        "dynamicDescriptor": "WhlBdy *Yoga 11-12"
      }
    },
    "description": "Paying Jules for last 4 classes"
  }'
```

**Go SDK**

```go
mc, _ := moov.NewClient()

var accountID string

mc.CreateTransfer(ctx, accountID, moov.CreateTransfer{
  Amount: moov.Amount{
    Currency: "USD",
    Value:    100, // $1.00
  },
  Destination: moov.CreateTransfer_Destination{
    PaymentMethodID: "string",
  },
  Source: moov.CreateTransfer_Source{
    PaymentMethodID: "string",
    CardDetails: &moov.CreateTransfer_CardDetailsSource{
      DynamicDescriptor: "WhlBdy *Yoga 11-12",
    },
  },
  Description: "Paying Jules for last 4 classes",
})
```

For ACH transfers, see [customized ACH statement descriptors](/guides/money-movement/ach/ach-details/index.md#customize-ach-statement-descriptors).

