SettleMint
Compliance modules

Country Restrictions

Choose CountryAllowList or CountryBlockList to permit or exclude token recipients by ISO 3166-1 country code, covering MiCA jurisdiction selection, OFAC sanctions screening, and similar regulatory requirements.

Country restrictions let an asset accept or reject token recipients based on the country code stored on the recipient's identity. The platform evaluates these controls before minting or transferring regulated tokens.

Use CountryAllowList when you need to limit distribution to a defined set of jurisdictions. Use CountryBlockList when you need to exclude specific jurisdictions while the rest remain eligible.

Decide which country control to use

Policy goalUse this moduleResult
Limit distribution to a defined marketCountryAllowListRecipients must have one of the configured ISO 3166-1 numeric country codes
Exclude sanctioned or unsupported jurisdictionsCountryBlockListRecipients must not have one of the configured blocked country codes
Combine permitted and prohibited jurisdictionsBoth modules togetherThe recipient must pass both checks before DALP allows the token operation

Country modules check the recipient's country code from identity registry storage. The recipient must already have a registered identity with a non-zero country code before the platform can evaluate the module.

Where these modules apply

OperationCountryAllowListCountryBlockList
MintingChecks recipient countryChecks recipient country
TransfersChecks recipient countryChecks recipient country
BurnsNot applicableNot applicable
Forced transfersNot applicableNot applicable

Configure country restrictions

  1. Choose your asset's policy requirement: allow only selected countries, block selected countries, or combine both.
  2. Convert each jurisdiction to its ISO 3166-1 numeric country code.
  3. Add the chosen country module when configuring the asset's compliance controls.
  4. Enter the country-code list for that module.
  5. Confirm each recipient's identity record has the expected country code before you mint or transfer tokens.
  6. Test with one eligible recipient and one ineligible recipient before you open the asset to wider operations.

Interface (capabilities)

CountryAllowList

CapabilityWho can callInputsOn-chain effectEmitsNotes
setModuleParametersToken admin (via compliance)Array of ISO 3166-1 numeric country codesStores allowed country listNoneEmpty list blocks all transfers
canTransferCompliance engineSender, recipient, amountChecks recipient's country code against allowed listNoneCountry code read from identity registry storage

CountryBlockList

CapabilityWho can callInputsOn-chain effectEmitsNotes
setModuleParametersToken admin (via compliance)Array of blocked country codesStores blocked country listNoneEmpty list permits known-country recipients
canTransferCompliance engineSender, recipient, amountChecks recipient's country code against blocked listNoneUnknown identity or country still fails

Country allowlist configuration for geographic transfer restrictions

Use cases

Use caseModuleExample
MiCA EU complianceCountryAllowList27 EU member state codes
OFAC sanctions screeningCountryBlockListSanctioned jurisdiction codes
Reg D (US only)CountryAllowList[840] (United States)
Singapore MASCountryAllowList[702] (Singapore)
Japan FSACountryAllowList[392] (Japan)
UK FCACountryAllowList[826] (United Kingdom)

ISO 3166-1 numeric codes

A selection of common codes appears below. The MiCA EU Standard template includes the full set of EU 27 member state codes. For other jurisdictions, consult the ISO 3166-1 numeric code list directly.

CountryCode
United States840
United Kingdom826
Japan392
Singapore702
Germany276
France250

Key invariants

  • Country check applies to the recipient, not the sender.
  • The recipient must have a registered identity and a non-zero country code before the platform can approve the operation.
  • Combining CountryAllowList and CountryBlockList creates a combination restriction. Both modules must pass.
  • An empty allow list blocks all recipients. An empty block list permits recipients with known countries.

Operational signals

These modules emit no events. Monitor for ComplianceCheckFailed revert errors in failed transactions when transfers violate country restrictions. Inspect the revert reason string to identify the blocked direction.

Failure modes & edge cases

Each item below describes the trigger and the revert that the platform returns:

  • Recipient identity not registered: reverts with ComplianceCheckFailed("Receiver identity unknown").
  • Recipient country code not set or stored as zero: reverts with ComplianceCheckFailed("Receiver identity unknown").
  • Recipient country absent from CountryAllowList: reverts with ComplianceCheckFailed("Receiver country not allowed").
  • CountryBlockList includes the recipient country: reverts with ComplianceCheckFailed("Receiver country blocked").
  • Sanctioned country added to the block list after tokens already transferred: existing holders keep their tokens until they attempt a new transfer.
  • Combining CountryAllowList and CountryBlockList creates a combination restriction. Both must pass independently.

See also

On this page