SETSimple Easy Transactions
SET DocsAPI reference and complianceUpdated 2026-11-09
Browse: SET API (Platforms)

Metadata, audit log, rate limits and versions

SET API and SET Merchant API · Live since 2026-11-09

Metadata

Attach up to 20 of your own ids to a customer, virtual account, bank account, Cash-Out Address, Conversion Address, recipient or payout.

  • Send metadata: {…} when you create the object. Every answer and event then carries the object's metadata ({} when none).
  • Read it with GET /v1/metadata/{id}. Change it with POST /v1/metadata/{id} {metadata}: keys you send are set, "" or null removes a key, and metadata: null clears all.
  • Keys are 1–40 of A-Z a-z 0-9 _ . : -; values are strings of at most 200 characters.
  • Metadata never goes to SET's provider. metadata on any other call is 400 metadata_not_supported.

Never personal data. A value that looks like an email, has a space (as a name does), or has a run of more than 8 digits (as an account, card, phone or tax number does) is refused with 400 metadata_personal_data before anything runs.

Audit log

GET /v1/audit_log lists every write made with your keys, and by SET's operator for you, newest first. Each entry has:

  • actor: a key's prefix, or {type: "operator"};
  • method, path, objectId, status, requestId, createdAt;
  • action, for changes made on SET's console.

It never holds a body. Refused writes are listed with their status. Filter with actor=key|operator, and page with createdBefore.

Request ids and rate-limit headers

Every answer carries Request-Id; quote it when you contact SET. Every answer to a key also carries:

HeaderMeaning
RateLimit-LimitRequests allowed this minute: the tighter of the per-key limit and, for a write, the write limit
RateLimit-RemainingWhat is left this minute, by SET's own count
RateLimit-ResetSeconds to the end of the minute

The limiter itself counts per location, so a 429 rate_limited can come a little before or after RateLimit-Remaining reaches zero.

Versions (SET-Version)

  • Every /v1 answer carries SET-Version, the dated version it follows.
  • Each key is pinned to the version current when it was issued, so a later change never breaks an existing integration.
  • Send SET-Version on a request to follow another version SET offers. An unknown one is 400 version_unsupported.
  • Today there is one version, 2026-11-09. A breaking change ships under a new date.