Skip to main content
Join Markt separates payment settlement from fulfillment. Gateways mark an order paid; fulfillment then assigns stock, exposes downloads, or waits for a seller to finish a manual step.

Delivery method types

Configured per product (and optionally per variant) in the dashboard. Canonical values in lib/domains/products/delivery.ts: A product can enable more than one method. License-key products need unused stock before they can complete automatically.

Lifecycle

  1. Buyer pays through a gateway (or test payment).
  2. Webhook / verify path calls completeOrderFromGateway.
  3. Order status moves to paid (and often completed once fulfillment finishes).
  4. If keys are required and available, fulfillOrderWithKey assigns the next unused key and links it to the order.
  5. If key assignment fails, the order can remain paid without completed — buyer still sees a paid invoice; seller restocks and retries.

Buyer retrieval

Access is gated by checkout token, matching customer email, or staff viewOrders — not a public anonymous dump. Legacy storefront path /receive-items?orderId= redirects into unified checkout.

What integrators should know

  • Embed and checkout start create draft / processing orders; delivery content appears only after settlement.
  • Do not scrape keys from dashboard HTML. Use the delivery endpoints with a valid checkout session.
  • Manual delivery and custom fields are first-class — do not assume every paid order yields a license key string.
See also: Order status, Create embed checkout.