Stripeでのカード決済の明細に日本語・カタカナを含むテキストを設定する２つの方法

クレジットカードで決済を行なった場合、クレジットカード会社が発行する利用明細には、各店舗・サービス提供元が設定したテキストが表示されます。

![スクリーンショット 2022-06-13 14.49.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/6424ff30-b40d-b975-d4fb-fe7489522618.png)

## 利用明細表記を設定するメリット

利用明細表記を設定することで、顧客がカード明細を確認したときに、「どこで何を買った決済か」をわかりやすくできます。

事業会社とサービス・ストア名が一致していないケースや、年額などのサイクルの長い定期支払いなどでは、「顧客が、利用明細を見るだけで、何の決済かが思い出せない」可能性が高くなります。

そのため、カード会社に不審請求ではないかと申請されたり、サポートに注文内容についての問い合わせがくるなどの可能性が高まります。

「どこから・何を注文したか」をなるべくわかりやすくすることで、不審請求やサポートの対応コストを引き下げることや、顧客からの信頼性を高めることが期待できます。

## Stripeで、利用明細表記を設定する方法

Stripeでは、カードの明細表記を「漢字」「カタカナ」「英語」の３種類で設定できます。

### 「静的な明細書表記」でデフォルトの表示を設定する

まずはそのStripeアカウントでのカード決済時に表示される、デフォルトの明細書表記を設定しましょう。

設定は、ダッシュボードオーの設定ページから行います。

[[設定>公開情報]](https://dashboard.stripe.com/settings/public)で、[明細書表記]フォームを表示しましょう。

![スクリーンショット 2022-06-13 14.48.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/2b8f2d2b-c175-58fb-561d-33baa05f86e8.png)
直接リンク: [https://dashboard.stripe.com/settings/public](https://dashboard.stripe.com/settings/public)

#### 明細書表記は、英語・漢字・カタカナの３種類
[英語][漢字][カタカナ]の３種類で設定できます。

![スクリーンショット 2022-06-13 14.54.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/83ebcdeb-13aa-bd06-b3a3-c971e7c059bd.png)

３種類のうち、**どの表記を実際の明細に記載するかはカード会社次第**です。
そのため少し手間ですが、日本語で明細を表記させたい場合は、３種類すべて設定するようにしましょう。

#### [短い表記][略称]は、動的な明細表記設定用

それぞれのフォームには、[短い表記]や[略称]がセットになっています。

この後紹介する「動的な明細表記設定機能」を利用した場合、この[短い表記][略称]が併記されます。

![スクリーンショット 2022-06-13 15.13.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/25ac59b7-11d2-42e7-2576-d45178d71ec7.png)

なお、商品・サービス名と併せて表記されるため、「１・２文字から10文字まで」の長さ制限があることに注意しましょう。

## APIを利用して、「動的な明細書表記」を設定する

商品やサービスごとに明細表記を設定したい場合、APIを利用します。

### Payment Intentに設定する

Payment Intentを利用して決済処理を行う場合、`payment_method_options.card`に明細内容を追加できます。

```js
    const paymentIntent = await stripe.paymentIntents.create({
        amount: 1000,
        currency: 'jpy',
        payment_method_types: ['card'],
        statement_descriptor_suffix: 'example descriptor',
        payment_method: paymentMethodId,
        payment_method_options: {
          card: {
            statement_descriptor_suffix_kanji: '漢字サフィックス',
            statement_descriptor_suffix_kana: 'カナサフィックス',
          },
        },
    });
```

- `statement_descriptor_suffix`: 英語での明細書表記
- `statement_descriptor_suffix_kanji`: 漢字での明細書表記
- `statement_descriptor_suffix_kana`: カタカナでの明細書表記


### Checkout Sessionに設定する

Checkoutを利用する場合でも、`payment_method_options.card`を利用して設定できます。

```js

        const sessions = await stripe.checkout.sessions.create({
            line_items: [{
                price: 'price_xxxx',
                quantity: 2,
            }],
            success_url: 'https://example.com?success',
            cancel_url: 'https://example.com',
            mode: 'payment',
            payment_intent_data: {
                statement_descriptor_suffix: 'example descriptor',
            },
            payment_method_options: {
                card: {
                    statement_descriptor_suffix_kanji: '漢字サフィックス',
                    statement_descriptor_suffix_kana: 'カナサフィックス',
                },
            },
        });
```

#### Checkoutは`mode: 'payment'`のみサポート

2022/06現在、Billingnを利用したサブスクリプションでは、漢字・カタカナの動的な明細表記設定をサポートしていません。

そのため、`mode: 'payment'`以外で`statemenet_descriptor_suffix_xxx`を設定すると、`StripeInvalidRequestError`が発生します。

```bash
'You can not pass `payment_method_options[card][statement_descriptor_suffix_kanji]` in `subscription` mode.'
```

### 設定内容の確認・デバッグ

どのAPIを経由して設定した場合でも、設定した漢字・カタカナの明細表記は`PaymentIntent`のデータから取得できます。

そのため、「Stripe上で設定ができているか」を確認する際には、Payment IntentsのIDからデータを取得する方法をおすすめします。

```js
const paymentIntents = await stripe.paymentIntents.retrieve('pi-xxxx')
```

なお、Checkout Sessionの場合、`expand`オプションを利用してStripe CLIで取得することもできます。

```bash
$ stripe get cs_test_xxxxx -e payment_intent | jq .payment_intent.payment_method_options.card
{
  "installments": null,
  "mandate_options": null,
  "network": null,
  "request_three_d_secure": "automatic",
  "statement_descriptor_suffix_kana": "カナサフィックス",
  "statement_descriptor_suffix_kanji": "漢字サフィックス"
}

```

## 明細書表記設定の注意点
### どの表記が利用されるかは、カード会社次第

Stripeからカード会社に決済リクエストを送信する際に、明細表記情報をあわせて送信します。

ですが、送信した表記データのうち、どれが実際に発行された明細へ記載されるかは、カード会社とそのシステム次第です。

「漢字・カタカナを設定しても、英語の明細が表示される」ケースがゼロではありません。

そのため、顧客向けのFAQなどに、「英語の明細表記が表示されるケースもあること」をおすすめします。

### [2022/06時点] での制限事項

動的な明細表記設定など、一部機能には以下の制限が設けられています。

今後のアップデートで変更される可能性ありますので、お困りの際は[サポート窓口](https://support.stripe.com/?referrerLocale=ja-JP)までご相談ください。

#### 「動的な明細書表記」での「漢字・カタカナ」は、「日本で発行された、VISA / Masterカード」のみ対応

APIから設定した「動的な明細書表記」のうち、「漢字・カタカナ」については、「日本で発行された、VISA / Masterカード」のみ対応しています。

そのため、　JCBや海外で発行されたクレジットカードを利用された場合は、「APIから設定された英語の明細」や「静的な明細書表記」で設定した項目が記載されます。

#### 全角カタカナは半角カタカナに変換されるケースがあります

全角カタカナでテキストを設定した場合、カード会社側で半角カタカナに自動変換されることがあります。

濁点や半濁点が文字数としてカウントされるため、22文字の制限を超える可能性があることにご注意ください。

#### [「漢字・カタカナ」での、動的な明細表記設定]に対応していない製品

以下のAPIや製品では、現在動的な設定を行うことができません。

- Subscription
- Payment Links
- Invoicing


## 関連リンク

- https://stripe.com/docs/statement-descriptors#set-japanese-statement-descriptors