Standalone Mini Apps
This guide provides a generic implementation pattern for Standalone Mini Apps. It focuses on the core technical building blocks required to make these flows reliable and production-safe.
If you are a vibecode developer, you can simply copy the entire page using the button above and paste in your coding environment
Standalone Mini Apps generally have the following flow:
Create a short-lived intent (
intentId,reference,amount,recipient,expiresAt).Encode intent reference into transfer data.
Build a Gnosis App deep link URL.
Render QR from that URL.
Query transfer-data events for the recipient.
Decode and match event
dataagainst your intent.Verify transfer amount from receipt logs.
Run your business action.
Gnosis App Deep Link Format
For CRC transfer flows:
https://app.gnosis.io/transfer/{recipientAddress}/crc?amount={amountCrc}&data={urlEncodedTransferData}recipientAddress: expected receiving addressamount: human-readable CRC amount stringdata: URL-encoded transfer-data payload used for deterministic matching
Example:
Use the Circles SDK Transfer Data Encoder
Use SDK utils instead of custom encoding:
Encoded structure:
version(1 byte)type(2 bytes)length(2 bytes)payload(N bytes)
This gives consistent decoding and catches malformed data (version/length mismatch).
Which Data Type to Use
0x0001: UTF-8 text payload0x1001: UTF-8 message + metadata payload
Recommended:
Use
0x0001when you only need a reference string.Use
0x1001when you want message + structured metadata.
0x0001 example:
0x1001 example:
Build QR URL with Encoded Data
Richer context example:
Detect Transactions with Transfer Data RPC Query
Use circles_events scoped to the expected recipient and filtered to transfer-data events.
Request:
Detection:
Fetch events via
circles_events.Filter
to == recipientAddress.Decode each event
data.Match decoded reference to expected intent reference.
Verify amount and tx success via receipt logs.
Do not match on amount alone.
Decode and Extract Reference Reliably
Verify Amount from Receipt Logs
After reference match, load tx receipt and compute actual transferred amount.
For Circles flows, sum all relevant transfer amounts for matching from -> to across receipt logs, then compare:
Idempotent Post-Confirmation Actions
Minimal End-to-End Example
Using encodeCrcV2TransferData / decodeCrcV2TransferData plus circles_events (CrcV2_TransferData) makes QR detection deterministic and keeps transactions properly annotated in Gnosis App for better UX.
Now that the payment/user action is successfully decoded, you can proceed with your app's own business logic, be it a payout for winning a game, processing refund for a store, etc.
Here are some examples you can use as a base of your own app:
Last updated
Was this helpful?