IFR Benefits Network guide

Customer proof and seller checkout, without ceremony.

This is the operating guide for the current shop app: customer-presented checkout passes, compatible seller QR proofs, wallet-owned seller profiles, rule-based discounts and seller-signed redemption.

Customer path

Use a benefit at a seller

1

Install or open the app

Use shop.ifrunit.tech in the browser, or add it to the home screen on iPhone, iPad or supported Android devices when the browser offers PWA install. Android 9 and older should remain in browser mode.

2

Connect an Ethereum wallet

The app reads ETH, IFR and IFRLock status. Verification never transfers tokens; it only asks for a one-time signature.

3

Lock IFR in the shop app when needed

If a seller rule requires more locked IFR than the wallet has, use the in-app Lock IFR panel, then return with the same wallet.

4

Present your QR and confirm

Create a short-lived customer QR. After the seller scans it and chooses a rule, review seller, product, discount and required IFR on your device, then approve the exact checkout. You can still scan a compatible seller QR instead.

5

Review My benefits anywhere

On the home screen, sign the explicit read-only history request to load benefits verified by the same wallet across devices. The ten-minute access stays only in browser memory.

Seller path

Offer and redeem benefits

1

Create a seller profile

Connect the seller wallet, create a profile, and keep the Business ID. The default network policy allows each owner wallet up to five active and 25 total profiles, including deactivated profiles.

2

Take a profile offline safely

Deactivation hides the public catalog and scanner and pauses products, rules and checkout staff. Reactivation restores only the profile and permanent URL; review products and rules, then authorize each staff wallet again only when needed.

3

Create benefit rules

Define category, product or service, discount, minimum locked IFR and QR lifetime. Active rules appear in the scanner.

4

Put the scanner at checkout

Open /b/:businessId on the counter device. Scan or paste the customer pass, select the intended active rule and sign its one-time binding. Compatible seller-issued QR sessions remain available.

5

Keep rewards optional

Registering a seller profile never enables rewards; they stay off until the owner wallet signs a separate reward application, and an owner-signed disable stops them at any time. Sellers that want a separate standard EVM payout account (StealthX-style setups) prove control of that account with its own fresh signature before governance compares it on-chain; smart-contract wallet proof is not supported yet. Sellers that opt out entirely (VLABS-style setups) simply never apply.

6

Review recent customer checks

Load owner-only session history in pages of 50 to see QR status, masked verified wallet, locked amount and rejection reason, or create a browser-local masked full CSV export.

7

Redeem only after APPROVED

The customer signs the QR challenge, the backend checks IFRLock on-chain, and the seller wallet signs the one-time redeem action.

Wallet support

Use the wallet your browser exposes.

Production checks browser-injected Ethereum wallets first, then opens WalletConnect when no injected provider is available. Customer, seller and checkout screens keep WalletConnect and Coinbase Wallet visible as explicit choices for MetaMask, Trust, Rainbow, OKX and hundreds of compatible wallets.

New users should create or import their wallet inside a trusted wallet app first. The Benefits Network is non-custodial: it never asks for a seed phrase, never stores private keys, and only requests wallet signatures or explicit IFR approve/lock transactions.

New wallet setup

Create an Ethereum wallet in MetaMask, Coinbase Wallet, Trust, OKX or another EVM-capable wallet, then connect it here.

Recovery and phishing safety

Back up the recovery phrase offline inside the wallet setup, never paste it into a website, verify shop.ifrunit.tech and Ethereum Mainnet, and disconnect after using a shared device.

IFR locking

Use the shop app's Lock IFR panel to approve only the entered amount and lock it in IFRLock.

Customer signatures

Pass creation, exact-offer confirmation, compatible seller-QR proof or read-only My benefits authorization; none moves tokens.

Seller signatures

Short-lived server-issued messages for profile, rules, session history, redeem and reward opt-in or opt-out actions.

Developer hooks

The current API surface

Seller profile

Request a resource-bound one-time business:create challenge, sign it, then POST /api/seller/businesses with x-ifr-nonce.

Profile lifecycle

List active and inactive owned profiles with business:list. Deactivate with business:delete to atomically pause the profile, products, rules and operators. Restore only the profile with a fresh business:reactivate challenge scoped to its Business ID.

Rules

Read with timestamp-signed GET. Every POST/PATCH/DELETE uses a fresh nonce bound to the business or exact rule.

Session history

GET /api/seller/businesses/:id/sessions?limit=50&cursor=...&snapshot=... with Action: sessions:list. Preserve the first response snapshot across pages.

QR session

Request a one-time Action: sessions:create message bound to owner/operator, business and rule; sign it, then POST /api/sessions with x-ifr-nonce.

Customer pass

POST /api/passes/challenge, sign and create an opaque pass; seller signs passes:bind scoped to pass and rule; customer confirms through the private control-token endpoints.

Customer proof

GET /api/sessions/:id/challenge, then POST /api/attest with the customer signature.

Customer history

POST /api/customer/history/challenge, sign once, exchange at /authorize, then use the memory-only read token for signer-bound snapshot pages.

Redeem

Request a one-time sessions:redeem challenge bound to the session ID, sign it, then POST /api/sessions/:id/redeem with x-ifr-nonce.

Seller rewards

Rewards are off by default. rewards:apply, rewards:disable and rewards:reward-wallet each use a fresh business-bound nonce; confirming a separate payout wallet also requires that wallet to sign its own one-time proof for the same business and scope.