Keep the state layers separate
A
202 response or transaction hash is not final confirmation. A confirmed
request transaction is not the same as completed RWA settlement.
Fee-wrapper provisioning
Generate one UUID v4 per logical wrapper and persist it before the POST. If the request outcome is uncertain, retry the same payload with the samerequestId
or query GET /v2/fee-wrappers?requestId=.... Never create a new ID merely
because the client timed out.
Treat provisioning as pending, ready as usable, and failed as terminal for
that request. Do not use contractAddress until readiness is confirmed.
Access and fee updates
When an allowlist or fee mutation returnssubmitted, retain its transaction
hash and poll the associated read endpoint or consume the status-change webhook.
Before retrying after a timeout, read the current resource to avoid submitting a
duplicate or contradictory change.
Onchain request/claim flows
Persist the contract address, chain ID, owner, transaction hash, returned onchain request ID, requested amount, and minimum-output parameters. Use onchain state or a successful call simulation to determine whether a claim is ready. Elapsed time fromprocessingPolicies is an estimate, not proof of claimability.
For a claim, reconcile all three facts:
- The claim transaction succeeded.
- The expected assets or shares moved to the intended address.
- Your local operation record is marked terminal exactly once.