For developers

Checkout for any storefront.

Use a connected store out of the box, or call the API from your own front end. Either way, the catalog sets the price.

Principles

Hard to get wrong.

  • Server-priced

    Send what the customer wants, not what it costs. Qyubi works out the total.

  • Catalog in sync

    Connected stores stay current, so the variant you reference is the one you charge for.

  • Front-end agnostic

    Plugin, headless, or hand-rolled. If it can make an HTTP request, it can check out.

The flow

Three calls, give or take.

  1. 1

    Create a session

    Post the variants and quantities from your cart.

  2. 2

    Redirect

    Send the customer to the hosted checkout URL.

  3. 3

    Get notified

    Receive an event when the payment succeeds.

server.ts
const session = await qyubi.checkout.create({
  items: cart.lines.map((line) => ({
    variantId: line.variantId,
    quantity: line.quantity,
  })),
  returnUrl: "https://shop.example/thanks",
});

return redirect(session.url);
webhook.ts
if (event.type === "payment.succeeded") {
  await fulfil(event.data.orderRef);
}

Illustrative. API details are shared with early access partners.

Building something custom?

Tell us about your stack and we'll get you set up.