電子帳簿保存法の検索要件に対応するための、Stripeダッシュボード & Search API活用方法

2023年12月31日に、電子帳簿保存法改正による電子取引データの罰則に関する保存義務の猶予期間が終了します。

そのため、2023年内には請求書や領収書などの電子取引に関する書類をデータで保存できるようにする必要があります。

https://www.freee.co.jp/kb/kb-trend/when-electronic-ledger-start/

## Stripe上で請求書データを保存・管理する

この記事では、Stripeを利用して電子取引に関する請求書や見積書を発行・送付している場合の、データ管理方法の概要について紹介します。

請求書の発行方法などについては、以下の記事も併せてご覧ください。

https://qiita.com/hideokamoto/items/566869ed7b9a21d90678

### 請求書データを保存するための要件1: 真実性

2022年に改正された電子帳簿保存法では、「真実性の要件」として以下の4つのうちいずれかの要件を満たすシステムに請求書データを保存する必要があるとされています。

- 1: タイムスタンプが付与されたデータを受け取り処理する
- 2: データを受け取り後、速やかにタイムスタンプを付与して、保存を行う者または監督者に関する情報を確認できるようにする
- 3: データの授受や保存を行うシステムが、データの訂正や削除があった場合に、その内容などの履歴が確認できること or 訂正や削除が行えないシステムである
- 4: 正当な理由がない訂正や削除（改ざん）を防止するための事務処理規定を策定してその規定に沿った運用をする

https://www.nta.go.jp/law/joho-zeikaishaku/sonota/jirei/pdf/0021005-038.pdf

Stripeで発行する請求書(Invoicing)は、これらのうち[3]の要件を満たします。

請求内容を確定し、支払いページ・PDFの作成や請求メールの送付を行うと、その請求書データを削除することができなくなります。
![スクリーンショット 2023-05-23 9.32.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/e1de2628-67c2-300c-f872-52cbf2e6c3fe.png)

また、請求内容を変更すると、「改訂版」として新しい請求書が発行され、履歴に記録が残ります。

![スクリーンショット 2023-05-23 9.34.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/e03185b6-d6bb-0b82-7ea1-75c00d95d06f.png)

### 請求書データを保存するための要件2: 可視性

もう１つの要件は、「可視性」です。

- 1: 保存場所にパソコン等およびその操作マニュアルを備え付け、整然・明瞭な状態で速やかにデータを出力できるようにする
- 2: 処理システムの概要を用意する
- 3: 検索機能を確保する

の３要件を満たす必要があります。

また、[検索要件]については、以下の3つすべてを満たすことで当該の要件を満たすことができます。

- 1: [取引年月日][取引先][取引金額]そのほかの主要な記録項目での検索が可能であること
- 2: 日付または金額の範囲指定による検索が可能であること
- 3: 2つ以上の任意の組み合わせ条件での検索が可能であること

Stripeでは、検索クエリを利用することでこれらの検索要件を満たすことができます。

## Stripeダッシュボードで、[検索要件]の３条件を満たす検索をする方法

実際に３要件それぞれに対応する検索クエリを作成してみましょう。

### 1: [取引年月][取引先][取引金額]そのほかの主要な記録項目での検索

1つ目の条件で挙げられている３つの項目は、それぞれ次のクエリで検索できます。


|電子帳簿保存法における項目名|検索クエリ|クエリ例|
|:--|:--|:--|
|取引年月日|date|2023/03/31以前: `date:<=2023/03/31`|
|取引先|email|`test@example.com`宛との取引: `email:test@example.com`|
|取引金額|amount / currency| 3,000円以上: `amount:>=3000 currency:jpy`|

:::note
**「請求書だけ」を検索する場合は、[`is:invoice`]も追加しよう**

日付の検索などでは、サブスクリプションや支払いリンクなどの情報も取得できます。

![スクリーンショット 2023-05-23 9.53.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/838c1110-165c-6295-bc7d-01d8e654e036.png)

請求書のデータだけ取得するには、`is:invoice`を条件に追加して検索しましょう。

![スクリーンショット 2023-05-23 9.55.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/dc8ecec3-ebde-b307-3e6e-d862d841237b.png)
:::

#### 検索例: 決済が完了していない請求書をすべて取得する

要件で指定されている項目以外の条件でも検索が可能です。

`is:invoice status:open`で、「決済が完了していない、確定後の請求書」を検索できます。

`status:open`は期日超過前の請求書も取得できますが、検索結果画面では[期日超過]のラベルが表示されます。支払い状況については、ラベルを使って判断しましょう。

![スクリーンショット 2023-04-28 13.16.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/2035717f-a754-3e28-98c0-86353a58acc3.png)


この他に利用できるクエリについては、ドキュメントで確認することができます。

https://stripe.com/docs/dashboard/search

### 2: 日付または金額の範囲指定による検索

日付での検索では、`date:X...Y`のようにクエリを書くことで、`XからYの間`を検索できます。

例えば、「2023年5月中に作成された請求書」を検索するには、次のクエリを使用します。

```
date:2023/05/01...2023/05/31 is:invoice
```

![スクリーンショット 2023-05-23 9.57.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/34c3c402-4102-91dc-9253-a96b2dc08b80.png)
https://dashboard.stripe.com/test/search?query=date%3A2023%2F05%2F01...2023%2F05%2F31%20is%3Ainvoice

金額についても、`amount:>X amount:<Y`で「YからXの間」を検索できます。

「1,000円から3,000円の間の請求書」を検索するには、次のクエリを利用します。

```
amount:<3000 amount:>1000 is:invoice
```

![スクリーンショット 2023-05-23 10.01.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/c3e2e486-1c9a-657d-8fe5-18b9afc1c591.png)
https://dashboard.stripe.com/test/search?query=amount%3A%3C3000%20amount%3A%3E1000%20is%3Ainvoice


### 3: 2つ以上の任意の組み合わせ条件での検索

すでにいくつか例が出ていますが、組み合わせ条件での検索にも対応しています。

`条件A 条件B`のように、半角スペースを挟むことで`AND`の検索ができます。

次の例では、`amount:<3000 amount:>1000 is:invoice date:>2023/05/01`で「1,000円から3,000円の間の請求書かつ、2023/05/01以降に作られたもの」を検索しています。

![スクリーンショット 2023-05-23 10.05.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/170d4b38-3ea6-81ad-ad41-09db39020be6.png)
https://dashboard.stripe.com/test/search?query=amount%3A%3C3000%20amount%3A%3E1000%20is%3Ainvoice%20date%3A%3E2023%2F05%2F01

また、`-status:void`のようにフィルタ名の前に`-`をつけることで、`NOT EQUAL`も指定できます。

次の例では、`amount:<3000 amount:>1000 is:invoice -status:void`で「1,000円から3,000円の間の請求書かつ、改訂などで無効化されていないもの」を検索しています。

![スクリーンショット 2023-05-23 10.04.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/7d34baf0-5b48-ecf1-7876-b62a3d2e8845.png)
https://dashboard.stripe.com/test/search?query=amount%3A%3C3000%20amount%3A%3E1000%20is%3Ainvoice%20-status%3Avoid

## 検索結果ページのURLを共有して、「操作マニュアル」作成も効率化

Stripeダッシュボードの検索機能を利用した場合、検索結果ページの共有も簡単にできます。

例えば次のURLは、`amount:<3000 amount:>1000 is:invoice date:>2023/05/01`の検索結果ページに移動します。
https://dashboard.stripe.com/test/search?query=amount%3A%3C3000%20amount%3A%3E1000%20is%3Ainvoice%20date%3A%3E2023%2F05%2F01

[可視性の要件]に[保存場所に操作マニュアルを備え付け、速やかにデータを出力できるようにする]があります。
「よく検索する条件」については、「このURLにアクセスしてください」のように検索結果のURLを記載することで、手順作成や更新・追加の手間を減らすことが可能です。

## Search APIを利用して検索する

独自の管理UIなどを構築している場合は、StripeのSearch APIを利用して検索しましょう。

```js
const stripe = require('stripe')('sk_test_your_key');

const invoice = await stripe.invoices.search({
  query: 'total>999 AND metadata[\'order_id\']:\'6735\'',
});
```

https://stripe.com/docs/api/invoices/search

いくつかの検索クエリ名が、ダッシュボードとAPIで異なりますのでご注意ください。

例えば、ダッシュボードでは`amount`で検索できましたが、InvoiceのSearch APIでは`total`を利用します。

```js

	const invoices = await stripe.invoices.search({
		query: `total<3000 AND total>1000 AND currency:'jpy'`
	});
```

利用できるクエリについては、ドキュメントをご確認ください。

https://stripe.com/docs/search#%E8%AB%8B%E6%B1%82%E6%9B%B8%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89

## まとめ

Stripeの請求書機能（Invoicing）を利用することで、追加のサービス導入や開発の手間をかけずに電子帳簿保存法の「真実性の要件」や「可視性の要件の、検索機能」を満たすことができます。

また、Smart Retriesを利用することで、支払いに失敗した請求書の再決済処理を機械学習ベースで自動化することも可能です。

https://stripe.com/docs/invoicing/automatic-collection#smart-retries

また、Data PipelineやTax, Sigmaを組み合わせたRevOpsの実現や自動化などにも取り組めます。

https://stripe.com/jp/use-cases/finance-automation

RevOpsや財務の自動化などに興味がある方は、Figmaの事例も併せてご覧ください。

https://stripe.com/jp/customers/figma

## 参考資料など

https://stripe.com/docs/dashboard/search

https://www.nta.go.jp/law/joho-zeikaishaku/sonota/jirei/pdf/0021005-038.pdf

https://elaws.e-gov.go.jp/document?lawid=410M50000040043

## [PR] Stripeで、決済や請求・サブスクリプションの「バックオフィス業務」も効率化・自動化しよう

このようにStripeでは、決済やサブスクリプションの組み込みだけでなく、バックオフィス業務の効率化やカスタマイズも可能です。

また、レポーティングや分析・データウェアハウスまたは外部システムへの連携などもシームレスに行えるため、「決済・注文・サブスクリプション申し込みの受け付けを**終えた後**」についても効率化や改善・自動化できます。

![スクリーンショット 2023-08-22 13.51.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/859fcf9f-fd2e-d2bc-bcb7-f86a30042686.png)
https://stripe.com/jp/use-cases/finance-automation

「バックオフィス業務の自動化・効率化」に興味がある方は、以下のドキュメントから詳細を確認してみましょう。

https://stripe.com/jp/use-cases/finance-automation

https://stripe.com/docs/finance-automation

https://marketplace.stripe.com/