MiniKit.sendTransaction() to submit one or more World Chain transactions.
Breaking Changes in MiniKit v2: This command now uses Permit2 AllowanceTransfers under the hood.
You will no longer need to specify a permit2 array, but will need to bundle an approval to the permit2 contract in the same transaction as your main action.
Permit2 Allowance Transfers
Allowance transfers are the default method for moving tokens in mini apps. You should only rely on theapprove method for Allowance Transfers, and can bundle them in one sendTransaction call with your main contract action for a seamless user experience.
Expiration should always be set to 0 as the approval will be consumed in the same transaction.
World App automatically approves new ERC-20 tokens to the Permit2 contract.
Your contract only needs to call
permit2.transferFrom — the token-level
approval is already in place.Result
Confirming the User Operation
The command resolves as soon as the user operation is submitted, so the first identifier you receive isuserOpHash.
You can either use the @worldcoin/minikit-react hook or poll the Developer Portal
to check when the user operation is mined and get the final transaction_hash.
Error Codes
| Code | Meaning |
|---|---|
invalid_operation | The requested operation is not allowed |
user_rejected | The user rejected the request |
input_error | The payload is invalid |
simulation_failed | Simulation failed before execution |
transaction_failed | The transaction failed after submission |
generic_error | Unexpected failure |
disallowed_operation | The requested operation is disallowed |
validation_error | Validation failed before execution |
invalid_contract | The contract is not allowed for your app |
malicious_operation | The operation was flagged as malicious |
daily_tx_limit_reached | Daily transaction limit reached |
permitted_amount_exceeds_slippage | Permit2 amount exceeds allowed slippage |
permitted_amount_not_found | Permit2 amount could not be resolved |
Fallback Behavior
By default we intend for mini apps to be useable outside of World App. Fallbacks generally will not be needed for this command and you should instead follow the migration path outlined.Allowlisting Contracts and Tokens
Before your mini app can send transactions, you must allowlist the contracts and tokens it interacts with. Navigate to Developer Portal > Mini App > Permissions and add:- Permit2 Tokens — every ERC-20 token your app transfers via Permit2
- Contract Entrypoints — every contract your app calls directly

Developer Portal Whitelist