Otterpay adds one button to your checkout. When a student can't quite afford it, they pass the basket to a parent or friend — who pays you directly. You get the sale, they get the gift.
Render the Otterpay button anywhere on your payment step. We handle the modal, the friend picker, the payer alert, and the webhook back to your server when funds clear.
import { OtterpayButton } from "@otterpay/sdk-react";
<OtterpayButton
publicKey={process.env.OTTERPAY_KEY}
basket={cart.items}
amount={cart.total}
currency="GBP"
onSuccess={(req) => {
analytics.track("otterpay_request_sent", req)
router.push("/order/pending")
}}
/>POST { event: "request.paid",
request_id, amount, basket_id }
→ verify HMAC signature
→ capture payment with Stripe
→ create order, ship goodsThe #1 reason students abandon checkout is price. Otterpay turns a 'no' into a 'maybe my mum will'.
Otterpay doesn't hold funds. Money moves from the payer to your Stripe/Adyen exactly like a card payment.
Every payer sees your brand, your basket and your name. Half become first-time customers within 30 days.
They get an SMS/email link to a hosted Otterpay page. They review the itemised basket, hit pay, and complete checkout with card or Apple/Google Pay. No app download required.
The request expires after 24 hours. The basket is held but no charge is made. You can configure auto-cancel or auto-revert to a standard checkout offer.
The payer is the actual cardholder, so liability sits with them — same as any card-not-present transaction. Otterpay screens for unusual patterns and rate-limits new accounts.
No. We're a checkout facilitator, not a money transmitter. Funds settle directly to your existing payment processor. This is what keeps fees at 1.5% instead of 3–4%.
Pilot integrations live for Shopify and custom React/Next checkouts. WooCommerce, Magento and BigCommerce are on the Q1 roadmap.
Pilot merchants get white-glove integration, custom branded modal, and zero fees for the first 90 days. We're prioritising stores with strong Gen-Z appeal.