> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nozle.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 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:**

1. Customer enters payment details during Stripe checkout
2. Stripe processes the payment
3. Stripe sends `payment_intent.succeeded`, `payment_intent.payment_failed`, or `payment_intent.canceled` to Nozle
4. Nozle updates invoice payment status
5. If the invoice belongs to a payment-gated plan checkout, Nozle activates or cancels the incomplete subscription

**Payment methods:**

The PaymentMethodDisplay component shows the customer's saved card:

```tsx theme={null}
<PaymentMethodDisplay
  paymentMethod={{ last4: '4242', brand: 'visa', expMonth: 12, expYear: 2028 }}
  onUpdatePaymentMethod={() => router.push('/update-card')}
/>
```

**Failed payments and retries:**

When a payment fails, Nozle records the failed payment status. Dunning and retries can be configured for recurring invoices:

* Automatic dunning: configurable retry schedule
* Manual dunning: manually trigger retry

**Product credit top-ups:**

Configure fixed top-up packages for a Credit System. Checkout creation produces an invoice/payment flow; credits are granted only after confirmed payment:

Expose top-up packages through your authenticated backend, start checkout from your billing UI, and refresh the balance only after payment confirmation. Product credits are separate from invoice wallet credits. See [Paid Credit Top-ups](/guides/credits/top-ups).

For related configuration, see [Checkout](/guides/billing/checkout), [Subscriptions](/guides/billing/subscriptions), and [Paid Credit Top-ups](/guides/credits/top-ups).
