I starting to check Stripe documentation to integrate the Stripe Billing Api in a Saas app. Things are not always the most straightforward, and it took a bit to understand that in the context of a Stripe subscription, the entity closest to a "transaction" is the Invoice, specifically the payment events associated with itβsuch as the Payment Intent and the resulting Charge. Here's why:
Subscription Lifecycle: A subscription in Stripe represents an ongoing agreement to charge a customer on a recurring basis. However, the subscription itself doesn't handle the actual financial transactions.
Invoice Generation: For each billing cycle of a subscription, Stripe generates an Invoice. The invoice details the amount owed, including subscription items, taxes, and discounts.
Payment Processing: When an invoice is finalized, Stripe creates a Payment Intent to process the payment. The Payment Intent encapsulates the payment flow and handles customer authentication if needed.
Charge Creation: Upon successful payment, a Charge object is created. This represents the actual transfer of funds from the customer account to application account.
In the JSON response provided in the stripe example, the latest_invoice
field references the most recent invoice associated with the subscription:
"latest_invoice": "in_1MowQWLkdIwHu7ixuzkSPfKd"
To see the transaction details, we should retrieve this invoice and examine its payment_intent
or charge
:
- Payment Intent: Contains the payment flow information, including status, amount, and payment method.
- Charge: Represents the finalized payment transaction and includes details like the amount, currency, and receipt URL.
Summary: In Stripe's subscription workflow, the Invoiceβalong with its associated Payment Intent and Chargeβis the entity that most closely represents a transaction.
Example Workflow:
-
Subscription (
sub_...
): Manages the recurring billing agreement. -
Invoice (
in_...
): Generated for each billing cycle; itemizes charges. -
Payment Intent (
pi_...
): Initiated to collect payment for the invoice. -
Charge (
ch_...
): Created upon successful payment; represents the transaction.
π Interested to learn more π οΈπ€π»? Then don't forget to π¬βοΈ, π
π If you are interested in learning more about programming, π οΈ building applications, or in general about AI π€ and tech π», you can subscribe to my newsletter at websilvercraft.substack.com βοΈ to get the posts delivered directly to you as soon as I publish them! π¬
β β β β β β β β β β ππππ
β β β β β β β β πππππππππππ
β β ππππππππππππππππππππ
ππππππππππππππππππππππππππππππππ
Top comments (0)