Developers

Commerce API

Bearer key from Portal → Developers. Envelope is success / data / error. Missing scopes return insufficient_scope.

GET /api/v1/products
Authorization: Bearer zoe_live_…
Accept: application/json

{ "success": true, "data": [] }
  • MTN MoMo
  • Telecel Cash
  • AT Money
  • Visa
  • Mastercard
Invite-only keys · GH₵ collection

GH₵ 76.70

You keep

  • The store already uses these routes

    A creator /@handle and an invited merchant site hit the same ledger.

  • Simulate writes safely

    X-Zoe-Simulate: true on POST /products returns a body without writing.

v1

Operations

openapi.json · embed.js · WordPress

  • POST /api/v1/paymentspayments:write
  • GET /api/v1/payments/{ref}payments:read
  • POST /api/v1/checkout/intentpayments:write
  • GET /api/v1/balancebalance:read
  • POST /api/v1/refundsrefunds:write
  • GET /api/v1/productsproducts:read
  • POST /api/v1/productsproducts:write
  • GET /api/v1/products/{id}products:read
  • GET /api/v1/ordersorders:read
  • GET /api/v1/orders/{ref}orders:read

Checkout

The store already uses these routes

A creator /@handle and an invited merchant site hit the same ledger.

  • X-Zoe-Simulate: true on POST /products returns a body without writing.
  • License check stays public at /api/licenses/verify.
  • Popup checkout for gateway payments stays /zoe.js.
OpenAPI docs

GH₵ 76.70

You keep

SDK

TypeScript client

import { createZoeClient } from "@/lib/api/sdk";

const zoe = createZoeClient({
  baseUrl: "https://your-zoe-host",
  apiKey: process.env.ZOE_API_KEY!,
});
const req = zoe.listProducts({ limit: "20" });
await fetch(req.url, { method: req.method, headers: req.headers });

Buy button

<script
  src="https://your-zoe-host/embed.js"
  data-handle="ama-books"
  data-product="write-your-first-offer"
  data-label="Buy now"
></script>

API terms. License check stays public at /api/licenses/verify. Popup checkout for gateway payments stays /zoe.js. X-Zoe-Simulate: true on POST /products returns a body without writing.

Creators

Selling an ebook does not need an API key

Studio is free. This page is for invited merchants.

  • Instant MoMo

    Available the same day.

  • 3.5% + GH₵0.50

    Free plan. No monthly fee.

  • No GH₵7

    No extra withdrawal fee.

Join 1,200 on the waitlist

Showcase the work. Get paid on MoMo. Sell from one /@handle, send a portal invoice, run a membership, and track it all in one wallet. Free to start. One fee when a buyer pays.

Get Started