SettleMint
Token features

Permit

Operate the permit token feature in the Console. Create custodial EIP-2612 approvals for a spender, set a deadline, and relay stored permits on-chain.

The permit token feature implements EIP-2612 signature-based approvals on an asset. A spender receives an allowance from a signed approval message instead of a separate approve() transaction, which removes the failed-because-not-yet-approved error class for integrators.

There are two ways to approve a spender with permit. In a wallet flow, a holder signs the permit in their own wallet and an integrator submits the signature with the spending transaction. In the Console custodial flow, the platform signs the permit with the holder's managed key, stores the signed permit, and relays it on-chain in a later step.

For the architecture reference, see Permit. For the developer integration reference, see Token permits API.

When it attaches

Almost every system template attaches permit. See the system templates catalog.

What you configure

Nothing during asset creation. The feature has no operator-configurable parameters. The Asset Designer marks it as self-contained.

The custodial permit workflow

Open the asset, then open its Permit page. The page has three parts:

  • Create permit approval starts a new custodial approval for a spender.
  • Signed permits lists every approval the platform has signed for the asset, each with a status of pending, relayed, or expired.
  • Permit replay activity lists the on-chain permit() history for the asset.

A custodial approval moves through two steps. First a holder creates the approval. Creating the approval signs the permit and stores it as pending, and no transaction is sent yet. Later a custodian relays the stored approval on-chain, and the relay sets the allowance.

Rendering diagram...

Creating an approval does not set an allowance

The approval is only signed and stored when a holder creates it. The on-chain allowance changes when a custodian relays the stored approval. Until then the spender cannot use the allowance.

Create a permit approval

The approval owner is the holder who creates it. The platform resolves the owner from the signed-in wallet, so creating an approval acts on your own balance.

Open the Permit page and start the approval

Open the asset, open its Permit page, and choose Create permit approval.

Choose the spender

Enter the address that should be authorized to spend your tokens.

Set the approval amount

Choose one of three modes:

  • Exact amount approves a specific amount that you enter.
  • Unlimited approves the maximum amount the standard supports.
  • Revoke (0) sets the allowance to zero, which removes a prior approval after the approval is relayed.

Set the deadline

Choose a preset of 1 hour, 24 hours, 7 days, or 30 days, or choose Custom and pick a date and time. A custom deadline must be in the future. The Console rejects a deadline at or before the current time, because a permit that has already passed its deadline can never be relayed.

The Console rechecks a custom deadline against the current time while the sheet stays open. If the time you picked passes before you sign, signing is disabled until you choose a later time, so the sheet never produces a permit that is already expired.

Review and sign

Review the spender, amount, and deadline on the confirmation screen. Complete wallet verification and submit. The platform signs the approval and stores it as a pending signed permit. No transaction is sent at this step.

Relay a permit approval

Relaying applies a stored approval on-chain. The platform queue wallet pays the gas, so the holder sends nothing. After a successful relay, the allowance for the spender is set and the signed permit moves to relayed.

Relaying is a custodian action. A viewer without the custodian relay authority sees the signed permits list as read-only and cannot relay.

Find a relayable approval

On the asset Permit page, review the Signed permits list. A pending approval that is still valid shows a Relay action.

Confirm the holder and spender

Choose Relay, then confirm the holder and spender on the review screen.

Complete wallet verification and relay

Complete wallet verification and submit. The approval is relayed on-chain, the allowance is set, and the status changes to relayed.

Signed permit status

StatusMeaning
PendingThe approval is signed and stored but not yet relayed on-chain. The allowance is not set yet.
RelayedThe approval has been relayed on-chain. The allowance for the spender is set.
ExpiredThe approval passed its deadline before it was relayed. Create a new approval to authorize again.

Operating considerations

  • Permits include a nonce, deadline, and EIP-712 domain separator. Replayed permits are rejected on chain.
  • Permits do not bypass compliance modules. Identity verification, country restrictions, allow-lists, and transfer approval all evaluate normally on the resulting transfer.
  • A permit signature is per-holder, per-spender, per-nonce, and per-deadline. A single permit cannot authorize multiple spenders or operations.
  • A permit relayed in a wallet flow can record an on-chain permit with no matching stored approval. The Permit replay activity list shows the on-chain history. The Signed permits list shows the custodial approvals the platform has signed.

Troubleshooting

What you seeWhat to check
The deadline field rejects your custom valueThe deadline is at or before the current time. Pick a future date and time, or use a preset.
Sign becomes disabled while the sheet is openYour custom deadline passed while the sheet was open. The Console disables signing once a custom deadline lapses. Pick a later time, or use a preset.
Create permit approval is not availableConfirm the asset has the permit feature attached. See the system templates catalog.
A signed permit has no Relay actionThe approval is not relayable, or your account does not have the custodian relay authority. A relayed or expired approval has no Relay action.
A signed permit shows ExpiredThe approval passed its deadline before it was relayed. Create a new approval with a future deadline.
Relay fails or the allowance is not setConfirm the approval is still pending and valid, then retry. Check the asset's transaction history for the relay result.
Wallet does not offer permit signingConfirm the wallet supports EIP-2612 signing. Older wallets may require a fallback to standard approve-then-transfer.

On this page