skills/payments-checkout/buy-now-pay-later/SKILL.md
Offer Klarna, Afterpay, or Affirm installment payments at checkout to reduce purchase hesitation and increase average order value
npx skillsauth add finsilabs/awesome-ecommerce-skills buy-now-pay-laterInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Buy Now, Pay Later lets shoppers split purchases into 4 interest-free installments or longer financing plans. Offering BNPL at checkout typically increases average order value (AOV) by 15–40% and reduces checkout abandonment for high-ticket items. The three major providers — Klarna, Afterpay (Clearpay in UK), and Affirm — each have native integrations for Shopify, WooCommerce, and BigCommerce that require no custom code to install.
| Platform | Recommended Approach | Notes | |----------|---------------------|-------| | Shopify | Enable via Shopify Payments (Klarna, Afterpay built in) or install provider's app | Shopify Payments includes Klarna and Afterpay with zero additional integration; just enable them | | WooCommerce | Install the provider's official WooCommerce plugin | Klarna, Afterpay, and Affirm all have official WooCommerce plugins | | BigCommerce | Install from BigCommerce App Marketplace | All three providers have native BigCommerce apps | | Custom / Headless | Enable via Stripe (Klarna, Afterpay) or provider SDK | If using Stripe, enable as payment methods on the Payment Intent; no separate SDK needed |
Provider comparison:
| Provider | Markets | Model | Merchant Fee | Order Range | |----------|---------|-------|--------------|-------------| | Klarna | US, EU, UK | Pay in 4 / Financing | ~2.49% + $0.30 | $10–$10,000 | | Afterpay | US, AU, UK, CA | Pay in 4 (6 weeks) | 4–6% | $35–$2,000 | | Affirm | US, CA | Monthly installments | 5.99%–29.99% APR on consumer | $50–$17,500 |
Recommendation: Start with Klarna or Afterpay — they have the broadest platform support and lowest friction to enable. Add Affirm for high-ticket items ($1,000+) where monthly financing matters more than 4-installment splits.
Option A: Via Shopify Payments (recommended)
Option B: Install the provider's Shopify app directly
Each app guides you through account creation and automatically adds the payment method to your checkout.
Adding installment messaging to product pages (Shopify):
After installing the Klarna or Afterpay app, go to Online Store → Themes → Customize and add the BNPL messaging block to your product page template. This displays "4 interest-free payments of $X" beneath the price.
Klarna:
Afterpay:
Affirm:
Via Stripe (recommended — enables Klarna and Afterpay with no separate SDK):
// Server: include BNPL methods on the payment intent
const paymentIntent = await stripe.paymentIntents.create({
amount: orderTotalInCents,
currency: 'usd',
payment_method_types: ['card', 'klarna', 'afterpay_clearpay'],
metadata: { order_id: orderId },
});
On the client, use Stripe's PaymentElement — it automatically shows Klarna and Afterpay tabs for eligible order amounts with no additional configuration:
import { PaymentElement } from '@stripe/react-stripe-js';
function CheckoutForm() {
return (
<form>
<PaymentElement options={{ layout: 'tabs' }} />
{/* Tabs render: Card | Klarna | Afterpay based on eligibility */}
</form>
);
}
Adding installment messaging to product pages (headless):
Klarna provides a web component for price messaging. Load the Klarna script and add the component:
<!-- Load Klarna's on-site messaging library -->
<script async src="https://js.klarna.com/web-sdk/v1/klarna.js"
data-client-id="YOUR_KLARNA_CLIENT_ID">
</script>
<!-- Display "4 payments of $X" on the product page -->
<klarna-placement
data-key="credit-promotion-auto-size"
data-locale="en-US"
data-purchase-amount="9999">
<!-- Amount in cents: 9999 = $99.99 -->
</klarna-placement>
Afterpay provides a similar web component:
<afterpay-placement
data-locale="en_US"
data-currency="USD"
data-amount="99.99"
data-size="sm">
</afterpay-placement>
Each provider has minimum and maximum order amounts. The platform apps and Stripe's PaymentElement handle this automatically — they only show the BNPL option when the order total is within the eligible range. Verify this is working correctly by testing with an order below the minimum (BNPL should not appear) and within range (BNPL should appear).
| Problem | Solution |
|---------|----------|
| BNPL option not appearing at checkout | Check that the order amount is within the provider's eligible range; verify the API credentials in the plugin/app settings are for the correct environment (live vs. sandbox) |
| BNPL appearing for ineligible order amounts | Set minimum/maximum amount thresholds in the plugin settings; Stripe's PaymentElement enforces this automatically |
| Product page messaging not updating when variant price changes | Klarna and Afterpay web components read the data-purchase-amount attribute; update this attribute in JavaScript when the price changes |
| Customers confused about BNPL terms | Link to the provider's "How it works" page in the messaging widget; each provider has compliant messaging templates you must follow |
| Higher dispute rate with BNPL orders | BNPL disputes go through the provider (Klarna, Afterpay), not your payment processor; ensure your fulfillment process creates clear tracking and delivery confirmation |
tools
Let shoppers save products to a wishlist, share it with friends, and get notified when saved items come back in stock or drop in price
development
Build a themeable storefront with design tokens and CSS custom properties that supports white-labeling, multi-brand variants, and dark mode
development
Speed up product discovery with instant search suggestions, fuzzy typo matching, and category-aware results powered by Algolia or Elasticsearch
development
Build a mobile-first storefront with thumb-friendly navigation, sticky add-to-cart buttons, and touch-optimized components for high mobile conversion