Billing
Payments
Payment processing, retries, and dunning
Nozle uses Stripe as the payment processor. Payments are initiated during checkout and processed automatically for recurring subscriptions.
Payment flow:
- Customer enters payment details during Stripe checkout
- Stripe processes the payment
- Webhook (checkout.session.completed or invoice.paid) notifies Nozle API
- Nozle API updates subscription status
Payment methods: The PaymentMethodDisplay component shows the customer's saved card:
<PaymentMethodDisplay
paymentMethod={{ last4: '4242', brand: 'visa', expMonth: 12, expYear: 2025 }}
onUpdatePaymentMethod={() => router.push('/update-card')}
/>Failed payments and retries: When a payment fails (invoice.payment_failed webhook), the system can retry automatically based on the dunning configuration:
- Automatic dunning: configurable retry schedule
- Manual dunning: manually trigger retry
Credits: Customers can prepay via credits:
<CreditBalance customerId="cust_123" />
<CreditTopUpButton onSuccess={(amount) => toast('Added ' + amount + ' credits')} />
<CreditHistory customerId="cust_123" />Credit transaction types: grant, deduct, purchase, application.
For detailed payment configuration, see: