Stripeのいろんな状態のインボイスを「無効にする(API・SDK)」ときの応答を確認する

例外処理を書くときに気になったので、動作を確認してみました。
2023.08.28

Stripeのインボイスは、いくつかのステータスがあります。

これらの状態のインボイスについて、API(SDK)で「無効にする操作」をした場合の応答を確認してみました。

おすすめの方

  • StripeのAPI(SDK)を利用したい方
  • 各状態のインボイスをAPI(SDK)で「無効にする操作」をした場合の応答を知りたい方

いろんな状態のインボイスを無効にする

インボイスを無効にするスクリプト

指定のインボイスを無効にするスクリプトです。エラー(例外)発生時は、pprintで中身を表示させます。

app.py

import stripe
from pprint import pprint

stripe.api_key = "xxx"

TARGET_INVOICE_ID = "in_111"


def main():
    try:
        resp = stripe.Invoice.void_invoice(TARGET_INVOICE_ID)
        print("success!")
    except stripe.error.StripeError as e:
        pprint(e)


if __name__ == "__main__":
    main()

Draftのインボイスを無効にする

Draftのインボイス

「Openなインボイスじゃないよ」と怒られました。

InvalidRequestError(message="You can only pass in open invoices. This invoice isn't open.", param=None, code=None, http_status=400, request_id='req_IizNbDO5cxGV9B')

Deletedのインボイスを無効にする

Draftのインボイスを削除したあと、APIを使ってインボイスを無効にします。

Draftのインボイスを削除する

「インボイスが見つからないよ」と怒られました。

InvalidRequestError(message="No such invoice: 'in_1NXz9sHkjjhQpTMOwkVdbkAL'", param='id', code='resource_missing', http_status=404, request_id='req_KDL3u2x9BccnPR')

Openのインボイスを無効にする

正常系ですね。

オープンなインボイス

これは成功します。

success!

Paidのインボイスを無効にする

支払済のインボイス

「Openなインボイスじゃないよ」と怒られました。

InvalidRequestError(message="You can only pass in open invoices. This invoice isn't open.", param=None, code=None, http_status=400, request_id='req_gSMV07RNz6RdyG')

Uncollectibleのインボイスを無効にする

回収不能のインボイスを無効にします。

回収不能なインボイス

成功しました。

success!

インボイスが無効になった

Voidのインボイスを無効にする

無効なインボイス

「Openなインボイスじゃないよ」と怒られました。

InvalidRequestError(message="You can only pass in open invoices. This invoice isn't open.", param=None, code=None, http_status=400, request_id='req_rBqgfAh4p8izsJ')

さいごに

Stripeのいろいろな状態のインボイスを無効にした際の動作を確認してみました。 これらを参考に例外処理(try-except)を書くと良いですね。

参考