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

# Buy Now Pay Later (BNPL)

> Offer Klarna, Afterpay, and Billie so customers can pay over time while the provider pays the full amount upfront. Covers eligibility, minimums, and testing.

Buy Now Pay Later (BNPL) lets customers split a purchase into installments or pay later, while the BNPL provider pays the full amount upfront. Offering BNPL can raise average order value and conversion on eligible transactions.

## Why Offer BNPL?

<CardGroup cols={3}>
  <Card title="Higher AOV" icon="chart-line">
    Customers tend to spend more when they can spread payments over time.
  </Card>

  <Card title="Better Conversion" icon="percent">
    Paying over time removes friction at checkout, especially for high-ticket items.
  </Card>

  <Card title="No Credit Risk" icon="shield-check">
    The BNPL provider takes the credit risk and collects the installments. The provider pays the full amount upfront.
  </Card>
</CardGroup>

## Supported Providers

Dodo Payments offers three BNPL providers. Each has its own countries, currencies, and minimum amount.

### Klarna

| Feature | Details |
| :- | :- |
| **Availability** | US and 18 European countries |
| **Currencies** | USD, EUR, GBP, DKK, NOK, SEK, CZK, PLN, CHF |
| **Minimum** | More than \$50 (\$50.01) on USD checkouts. For other currencies, Klarna's own limits apply |
| **Subscriptions** | Yes |

**Supported Countries:** Austria, Belgium, Czech Republic, Denmark, Finland, France, Germany, Greece, Ireland, Italy, Netherlands, Norway, Poland, Portugal, Spain, Sweden, Switzerland, United Kingdom, United States

USD checkouts show Klarna only when the billing country is the US.

**Payment Options:**

* **Pay in 4**: Four interest-free payments.
* **Pay in 30 days**: The full amount is due in 30 days.
* **Financing**: Longer-term installment plans.

Klarna decides which options a customer sees based on country, currency, and amount.

### Afterpay (Clearpay)

| Feature | Details |
| :- | :- |
| **Availability** | US, UK |
| **Currencies** | USD, GBP |
| **Minimum** | More than \$50 (\$50.01) on USD checkouts. For GBP, Clearpay's own limits apply |
| **Subscriptions** | No |

USD checkouts show Afterpay only when the billing country is the US.

**Payment Options:**

* **Pay in 4**: Four interest-free payments, one every two weeks.

<Note>
  In the UK, Afterpay operates as Clearpay and uses the same API type, `afterpay_clearpay`.
</Note>

### Billie

| Feature | Details |
| :- | :- |
| **Availability** | Global |
| **Currencies** | GBP |
| **Minimum** | None |
| **Subscriptions** | No |

**About Billie:**
Billie is a business-to-business (B2B) BNPL provider. It lets business buyers pay on invoice terms instead of at checkout.

**Payment Options:**

* **Invoice Payment**: The buyer pays within the agreed payment terms.
* **Flexible Terms**: Payment schedules suited to businesses.

## Configuration

To offer BNPL, include the provider's type in `allowed_payment_method_types`, or omit the parameter to show every eligible method.

### API Method Types

| Type | Provider |
| :- | :- |
| `klarna` | Klarna |
| `afterpay_clearpay` | Afterpay / Clearpay |
| `billie` | Billie (B2B) |

### Example

This session offers Klarna and Afterpay to a US customer, with cards as a fallback:

```javascript theme={null}
// `client` is an initialized DodoPayments client.
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
  allowed_payment_method_types: [
    'klarna',
    'afterpay_clearpay',
    'credit',
    'debit'
  ],
  customer: {
    email: 'customer@example.com',
    name: 'Jane Smith'
  },
  billing_address: {
    country: 'US',
    zipcode: '10001'
  },
  return_url: 'https://example.com/success'
});
```

<Warning>
  Always include `credit` and `debit` as fallbacks. Not every customer is eligible for BNPL, and transactions below a provider's minimum don't qualify. If no listed method is available, checkout fails.
</Warning>

## Transaction Amount Limits

Dodo Payments applies these minimums to USD checkouts:

| Provider | Minimum | Maximum |
| :- | :- | :- |
| Klarna | \$50.01 | — |
| Afterpay | \$50.01 | — |

For other currencies, the provider's own limits apply. When a transaction falls outside a provider's limits:

* The BNPL option doesn't appear at checkout.
* No error is returned. The option doesn't show.
* Card payments remain available.

This is expected. Don't include a BNPL method in `allowed_payment_method_types` if your product price is unlikely to fall within that provider's range.

## How Installments Work

The BNPL provider approves the customer, pays the full amount, and collects the installments from the customer:

```mermaid theme={null}
sequenceDiagram
    participant Customer
    participant Checkout
    participant Dodo
    participant BNPL Provider
    
    Customer->>Checkout: Select Klarna/Afterpay
    Checkout->>Dodo: Process payment
    Dodo->>BNPL Provider: Create installment plan
    BNPL Provider->>Customer: Approve/Deny based on credit
    BNPL Provider->>Dodo: Full payment (if approved)
    Dodo->>You: Payout (full amount)
    BNPL Provider->>Customer: Collect installments over time
```

**Key points:**

* The BNPL provider pays the **full amount upfront**, and it reaches you in your regular payout.
* The BNPL provider handles **credit risk and collections**.
* The customer repays the provider directly, typically in **4 installments**.
* If a customer misses an installment, the provider takes the loss, not you.

## Testing

Use these details to test BNPL in test mode.

### Klarna Test Data

| Field | Approved | Denied |
| :- | :- | :- |
| **Date of Birth** | 07-10-1970 | 07-10-1970 |
| **First Name** | Test | Test |
| **Last Name** | Person-us | Person-us |
| **Email** | [customer@email.us](mailto:customer@email.us) | [customer+denied@email.us](mailto:customer+denied@email.us) |
| **Street** | Amsterdam Ave | Amsterdam Ave |
| **House Number** | 509 | 509 |
| **City** | New York | New York |
| **State** | New York | New York |
| **Postal Code** | 10024-3941 | 10024-3941 |
| **Phone** | +13106683312 | +13106354386 |

<Note>
  On a USD checkout, the transaction must be more than \$50 (\$50.01) for Klarna to appear.
</Note>

### Afterpay Testing

<Steps>
  <Step title="Select Afterpay">
    Choose Afterpay in checkout and click **Pay**.
  </Step>

  <Step title="Test a Successful Payment">
    Use any valid email address and shipping address.
  </Step>

  <Step title="Test Failed Authentication">
    To test a failure, close the Afterpay modal on the redirect page. The payment status moves from `requires_customer_action` to `requires_payment_method`.
  </Step>
</Steps>

## Best Practices

<AccordionGroup>
  <Accordion title="Target high-ticket items">
    BNPL works best for products priced \$100 to \$1,000, where paying over time matters most to customers.
  </Accordion>

  <Accordion title="Show installment amounts">
    "4 payments of \$25" persuades more than "\$100 with Klarna". Show the per-payment amount where you can.
  </Accordion>

  <Accordion title="Don't force BNPL for low-value products">
    On USD checkouts, BNPL doesn't appear for \$50 or less. Under \$100, most customers prefer cards. Promote BNPL on higher-priced items.
  </Accordion>

  <Accordion title="Collect billing address">
    BNPL providers use billing details for credit checks. Collect the full billing address at checkout.
  </Accordion>

  <Accordion title="Set clear expectations">
    Make clear to customers that the credit agreement is with Klarna or Afterpay, not with you.
  </Accordion>
</AccordionGroup>

## Limitations

BNPL depends on the provider's approval and on the checkout's currency and country.

### No Subscriptions

Afterpay and Billie **don't support recurring payments**. Klarna supports subscriptions. For other subscription products, use cards or another method that supports recurring payments.

### Credit-Based Approval

BNPL providers run a credit check when the customer selects them, and not every customer is approved. Approval depends on:

* The customer's credit history with the provider.
* The transaction amount.
* The customer's location.

### Currency & Country Mapping

Each currency is limited to its matching region:

| Currency | Supported Countries |
| :- | :- |
| **USD** | United States only |
| **EUR** | Eurozone countries (Austria, Belgium, Finland, France, Germany, Greece, Ireland, Italy, Netherlands, Portugal, Spain) |
| **GBP** | United Kingdom only |

Klarna's other currencies (DKK, NOK, SEK, CZK, PLN, CHF) work in their own countries.

<Info>
  For example, a USD transaction shows BNPL options only to customers in the US. A EUR transaction works only for customers in the Eurozone countries above. A GBP transaction works only for customers in the UK.
</Info>

| Provider | Supported Currencies |
| :- | :- |
| Klarna | USD, EUR, GBP, DKK, NOK, SEK, CZK, PLN, CHF |
| Afterpay | USD (US), GBP (UK) |

## Troubleshooting

<AccordionGroup>
  <Accordion title="BNPL not appearing at checkout">
    **Check:**

    1. Is the amount within the provider's range? On USD checkouts, Klarna and Afterpay need more than \$50 (\$50.01).
    2. Is the customer in a supported country? On USD checkouts, the billing country must be the US.
    3. Does the provider support the currency?
    4. Is the BNPL method included in `allowed_payment_method_types`?
    5. For subscriptions, is the provider Klarna? Afterpay and Billie are one-time only.

    **Solution:** Most often, the amount is below the minimum or above the maximum. Confirm that the amount falls within the provider's range.
  </Accordion>

  <Accordion title="Customer denied by BNPL provider">
    **Causes:**

    * Insufficient credit history with the provider.
    * Too many active installment plans.
    * Failed identity verification.

    **Solution:** Some denials are expected. Keep card payments available as a fallback. Don't show customers the specific reason for a denial.
  </Accordion>

  <Accordion title="Payment stuck in pending">
    **Cause:** The customer didn't finish the BNPL provider's authentication flow.

    **Solution:** Wait for the `payment.succeeded` or `payment.failed` webhook for the final status. If the payment doesn't complete, the customer can retry or use a different method.
  </Accordion>
</AccordionGroup>

## Related Pages

<CardGroup cols={2}>
  <Card title="Payment Methods Overview" icon="credit-card" href="/features/payment-methods">
    All supported payment methods.
  </Card>

  <Card title="Checkout Guide" icon="book" href="/developer-resources/checkout-session">
    Create and customize checkout sessions.
  </Card>

  <Card title="Testing Process" icon="flask" href="/miscellaneous/testing-process">
    Test data for every payment method.
  </Card>

  <Card title="Adaptive Currency" icon="globe" href="/features/adaptive-currency">
    Currency support and conversion.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.