Merchant Setup

Update merchant settings

Update discount stacking mode, cap, the store's terms for wallets sent without proof of control (a lower discount or none, and a daily limit), USDC payment settings, and whether the store's recognition is paused. All fields optional. Must be called by the API key that created the merchant.

put/v1/merchants/{id}/settings

Request

  • Base URL: https://api.insumermodel.com
  • URL: https://api.insumermodel.com/v1/merchants/{id}/settings
  • Auth: API key in header X-API-Key

Path parameters

idstring required

Merchant ID

Request body

discountMode'highest' | 'stack' | 'capped'

'highest' uses best single discount, 'stack' sums all, 'capped' sums all then caps at discountCap

discountCapinteger

Maximum total discount percentage: a whole number from 1 to 100. A value with a fraction (25.5) is a 400; "25.0" is accepted as 25.

maxDiscountsPerWalletPerDayinteger nullable

Optional. The store's own limit on discount codes per UTC day for a wallet sent without a walletProof, a whole number from 1 to 100; null removes the limit. Unset means no limit. The limit does not apply to a proven wallet. When an unproven wallet has reached it, /v1/verify, /v1/acp/discount and /v1/ucp/discount return 429 with no credit used and no code created. Only orders that earn a discount count. Only the day's count is held, and it is deleted after the day.

maxUnprovenDiscountinteger nullable

Optional. What a wallet sent without a walletProof can get: at most this percent, a whole number from 0 to 100 (0 = no discount); null = the same as a proven wallet. Unset means the same. The verify response then carries discountIfProven, so the caller knows what proof would get. Published to agents in walletTerms on GET /v1/merchants and GET /v1/merchants/{id}.

pausedboolean

Optional. true pauses the store's recognition; false resumes it. While a store is paused, discount codes for it are refused (409 on /v1/verify, /v1/acp/discount, /v1/ucp/discount and /v1/discount/check; no credit used, no code created), /v1/pass/verify answers recognized false with paused true, it is left out of GET /v1/merchants, and its NFC stickers give no code. Resuming restores everything, including the same stickers. Idempotent.

Response

Settings updated

oktrue

Example response

{
  "meta": {
    "version": "1.0"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.