Reserve webhooks (on-demand inventory)

Configure a per-offer HTTPS endpoint that returns field values for COMPLEX listings. Payment still completes if the call fails; you can retry or fulfill manually.

Fetch license, account, or key values from your server when a buyer pays.

When to use reserve webhooks

Use this for COMPLEX (unique unit) inventory when you generate keys or accounts in your own system at purchase time. Local stock is always preferred; the webhook fills only the shortfall.

  • Works with INSTANT auto-delivery only when every unit is actually assigned.
  • Configure an offer-level default, or override per pricing option.
  • HTTPS only. Optional HMAC signing matches outbound webhooks.

Payment-safe failures

If your endpoint times out or returns invalid data, the order stays PAID. The buyer is charged; you see an error on the order and can retry reserve or attach keys manually.

Request contract

After payment, RMT POSTs one reserve.item call per missing unit with order, offer, option, field schema, and quantity 1. Optional request template JSON is merged with {{placeholders}}.

Canonical POST body (truncated)

json
{
  "id": "rsv_…",
  "type": "reserve.item",
  "order": { "uid": "…", "reference": "…", "url": "…" },
  "offer": { "url": "…", "title": "…", "pageUrl": "…" },
  "option": { "id": 1, "name": "Standard" },
  "fields": [{ "id": 10, "name": "License", "type": "text", "required": true }],
  "quantity": 1
}

Response and field mapping

Return 2xx JSON. Map paths like $.license onto Item fields, or return { "entries": [{ "fieldId": 10, "value": "KEY-…" }] }.

Convenience response

json
{
  "entries": [
    { "name": "License", "value": "AAAA-BBBB-CCCC" }
  ]
}
  • License-only: map one text field from $.license or $.key.
  • Account: map email and password fields from $.email and $.password.
  • Missing required fields after mapping counts as failure.

Test, retry, and security

Use Test in the offer editor (sends dryRun: true). On the order page, Retry reserve after fixing your endpoint. Never log secrets or full keys in emails.

  1. 1Save HTTPS URL, response map, and optional secret on the offer Items step.
  2. 2Run Test and confirm mapped previews.
  3. 3On failure, open the order, retry reserve, or create/assign a key manually.

Do not call reserve before payment

RMT only calls your endpoint after payment succeeds, so abandoned checkouts do not burn licenses.