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": [] }
Buyers pay withMTN MoMoTelecel CashAT MoneyVisaMastercardInvite-only keys · GH₵ collection

Every v1 operation

One ledger behind the creator store and every invited merchant site.

  • POST/api/v1/paymentspayments:write
  • GET/api/v1/payments/{ref}payments:read
  • POST/api/v1/payments/{ref}/momopayments:write
  • 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

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

TypeScript client

A thin request builder. Bring your own fetch.

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

One script tag. Checkout opens on Zoe.

<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 cover every invited key.

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.

Your store can be live today.

Free to start. One fee when a buyer pays. Sell before KYC, withdraw to MoMo once your Ghana Card is approved.