Stripeでいろいろと試していると、過去に作成したインボイス(Open)が邪魔になることがあります。 そのため、Openになっているインボイスの一覧を取得して、無効にしてみました。
おすすめの方
- Stripeのインボイスを検索したい方
- Stripeの複数のインボイスをまとめて無効にしたい方
StripeのAPIキーを取得する
Stripeのダッシュボードにアクセスし、APIキーを取得します。
用意されているAPIキーを利用する場合は、シークレットキーを利用します。取り扱いには注意しましょう。
インボイスを検索して、個別に無効化するスクリプトを作成する(Python)
StripeでOpenになっているインボイスの一覧を取得して、ひとつずつ無効にするスクリプトです。 今回は、「2023-07-10T11:00:00(JST) : 1688954400」より古いインボイスを対象にしてみます。
app.py
import stripe
STRIPE_API_KEY = 'xxx'
def main():
stripe.api_key = STRIPE_API_KEY
invoices = search_invoices(stripe)
for item in invoices:
print(item['id'])
stripe.Invoice.void_invoice(item['id'])
def search_invoices(stripe):
invoices = []
options = {
"query": "status:'open' AND created<1688954400",
"limit": 10,
}
while True:
resp = stripe.Invoice.search(**options)
if 'data' in resp:
invoices += resp['data']
if resp['has_more']:
options['page'] = resp['next_page']
else:
return invoices
if __name__=='__main__':
main()
スクリプトを実行する
スクリプト実行前のインボイスの様子
5つのインボイスがあります。
このうち、「2023-07-10T11:00:00(JST) : 1688954400」より古いインボイスは、下の2つです。
スクリプトを実行する
$ python app.py
in_1NS9HGHkjjhQpTMONx24Ovik
in_1NJEpbHkjjhQpTMOs7rzfcjc
スクリプト実行後のインボイスの様子
2つのインボイスが無効になり、3つのインボイスが残りました。期待どおりです。
さいごに
Stripeのインボイスを検索して無効にするスクリプトを作成し、複数のインボイスを無効にしてみました。 どなたかの参考になれば幸いです。