AXIS docs
v1.0.0
Live demo Get help
● Set up · Outside the code

Accounts you must arrange
and how to test meanwhile.

Some steps happen outside the project: with Hyperliquid, Apple, Google, Reown and, optionally, Firebase. This page says what each one needs from you, in what order, and how to keep testing on testnet while you wait. Each dashboard step gives the click path as the provider labels it in October 2026 and links the provider's own guide; if a provider renames a menu, its linked guide is the reference.

01Recommended order

  1. Start on testnetBuild with --dart-define=HYPERLIQUID_NETWORK=testnet and test everything below without real money (how).
  2. Pick your app ID and domainRebrand first (Rebranding), because Firebase and the stores register your app under its ID.
  3. Apply for the Apple organisation account earlyIt can take the longest (below).
  4. Prepare the builder addressFund it with 100 USDC of perps collateral on mainnet when you are ready to earn (below).
  5. Optional servicesReown for WalletConnect, Firebase for push and crash reports.

02Hyperliquid builder requirements

There is no sign-up or application with Hyperliquid. The builder fee works through two on-chain conditions, both enforced by the venue, not by AXIS:

  1. Your builder address holds 100 USDC of perps collateralUse an address you control and that holds nothing else, so its balance reflects fees received. Fund its Hyperliquid perps account with at least 100 USDC (one way: import that wallet into AXIS on your own device and use Deposit). Keep the account in standard mode; Earnings → Prerequisites shows the mode the venue reports.
  2. Each trader approves your fee once, on chainAXIS asks the trader at their first order with a dialog that names the fee, and signs ApproveBuilderFee on their device only if they accept. You do nothing for this step; you cannot approve on a user's behalf.
  3. Publish your builder address and rateIn config.json or Firebase (checklist). Rate: 1 to 100 tenths of a basis point; 100 is the 0.1 % protocol cap for perps.

Check it from a terminal. Replace the two placeholders with real addresses. The answer is the approved rate in tenths of a basis point (0 = never approved):

curl -s -X POST https://api.hyperliquid.xyz/info \
  -H 'Content-Type: application/json' \
  -d '{"type":"maxBuilderFee","user":"0x<trader-address>","builder":"0x<your-builder-address>"}'

And the builder address collateral (look at marginSummary.accountValue):

curl -s -X POST https://api.hyperliquid.xyz/info \
  -H 'Content-Type: application/json' \
  -d '{"type":"clearinghouseState","user":"0x<your-builder-address>"}'

Or check it in Hyperliquid's own web app: open app.hyperliquid.xyz/portfolio → Connect (top right) with the builder wallet → the Portfolio page shows that address's perps account value. In AXIS itself, Earnings → Prerequisites reads the same value from the venue. Hyperliquid's rules for builder codes (the 100 USDC perps account value, standard account mode, ApproveBuilderFee) are in its official guide: Hyperliquid docs → Trading → Builder codes; the two /info requests above are documented in Hyperliquid docs → For developers → API → Info endpoint → Perpetuals.

03Apple: organisation account (guideline 3.1.5)

App Store Review Guideline 3.1.5 covers cryptocurrency apps. Apps that hold keys or facilitate trading are generally expected to come from an organisation developer account, not an individual one. What to do:

  1. Enrol as an organisationApple asks for your legal entity's details during enrolment, including a D-U-N-S number for the organisation. Allow time for verification.
  2. Have your legal pages onlinePrivacy policy, terms and risk disclosure at the URLs in lib/core/config/axis_identity.dart.
  3. Decide where you publishSubmit with trading switched on in your published config, the way your users will get it, and pick the countries in App Store Connect. Whether Apple approves a leveraged trading app in a given country is Apple's decision; AXIS cannot promise approval.

Read the current guideline text on Apple's developer site before you submit; it is updated from time to time.

Meanwhile: test on the iOS Simulator or with your own device through Xcode, and use the web build (flutter run -d chrome), which needs no Apple account.

04Google Play

Register a Play Console developer account, create the app with your own application ID, and complete the app content and data safety forms truthfully (if you enable Firebase, Analytics and Crashlytics send data). Google has its own policy for financial and crypto apps; read the current version in the Play Console help before you submit. Upload an app bundle signed with your own key (how).

Meanwhile: flutter run on an emulator or a device in USB debugging mode needs no Play account.

05Reown (WalletConnect) project ID

  1. Create a projectOpen dashboard.reown.com (cloud.reown.com redirects there) → sign in or sign up with your own email → Create project → enter your app's name. If the dashboard asks which SDK the project is for, choose WalletKit: AXIS is a wallet that connects to dApps (package reown_walletkit).
  2. Copy the Project IDOpen the project from the dashboard's project list → the project page shows the Project ID with a copy button. Reown's own description of the ID and how it is used: Reown docs → Cloud → Relay → Project ID. Use one project per app; Reown asks you not to reuse an ID.
  3. Give the ID to the appEither publish "walletconnect_project_id": "<your-project-id>" in your config, or build with --dart-define=REOWN_PROJECT_ID=<your-project-id>. A project ID is not a secret, but it is tied to your Reown account and its limits.
  4. Set your metadataThe app name, URL and icon other apps see come from axis_identity.dart, and the redirect scheme from lib/features/wallet_connect/reown_wallet_service.dart (Rebranding → URLs).
  5. Allowlist your appIn the same project, add the origins and app IDs allowed to use the ID: your web terminal's origin (for example https://trade.example.com, plus http://localhost:<port> while you test) and your Android application ID / iOS bundle ID. Requests from anything not on the list are refused. Format and rules: Reown docs → Cloud → Relay → Allowlist; the other project settings are described in Reown docs → Dashboard configuration settings (AXIS needs none of those feature toggles).
You pay for your own Reown usage

The Reown project is yours, created under your own Reown account, and any cost it incurs is yours: Reown's free tier, its paid plans, its request and connection limits and any overage are a matter between you and Reown, under their current pricing and terms. The item price does not include a Reown project, a plan, or any WalletConnect usage, and the author is not a party to your agreement with Reown. Read their pricing before you publish, and size the plan for the number of users you expect. The terminal works without a project ID - only dApp connections are unavailable.

Meanwhile: everything except dApp connections works without a project ID.

06Firebase (optional)

  1. Create a Firebase projectAfter you have set your own app ID: console.firebase.google.com → Create a project (or Add project) → project name → choose whether to enable Google Analytics → Create project. Google's guide for this and the next step: Firebase docs → Add Firebase to your Flutter app.
  2. Connect it
    dart pub global activate flutterfire_cli
    flutterfire configure --project=<your-project>
    This replaces the placeholder lib/firebase_options.dart and writes the platform files (details). To confirm it worked: Firebase console → your project → gear icon next to Project Overview → Project settings → General tab → Your apps lists one app per platform you configured (Android, Apple, Web), each with your own package name or bundle ID.
  3. Web push onlyFirebase console → gear icon → Project settings → Cloud Messaging tab → Web configuration → Web Push certificates → Generate key pair, then pass the public key it shows as --dart-define=WEB_PUSH_VAPID_KEY=<key>. Google's guide: Firebase docs → Cloud Messaging → Web: configure web credentials. Web push end to end is unverified in this version.

Meanwhile: use a hosted config.json; the app runs fully without Firebase.

07How to test while you wait

  1. Build for testnet
    flutter run -d chrome --dart-define=HYPERLIQUID_NETWORK=testnet
    The header badge reads TESTNET, and Account → Operator console → Network lists the testnet endpoints (api.hyperliquid-testnet.xyz) and the testnet bridge. You can also switch a single device in the console.
  2. Get testnet fundsHyperliquid runs a testnet with its own faucet. Eligibility rules for the faucet are set by Hyperliquid and change; check their documentation. The in-app Deposit is refused on a testnet build on purpose, because it always moves real USDC on Arbitrum One.
  3. Switch perps on for your deviceOperator console → Surfaces → HYPERLIQUID PERPS. This changes only your device.
  4. Test the builder feeSet a builder address and a rate in the console on your device, place a small testnet order, accept the approval dialog, then open Earnings and press RECHECK. Whether the venue enforces the 100 USDC rule identically on testnet is unverified; confirm the final setup on mainnet with a small order.
Not the demo switch

AXIS_DEMO=true is for public demo sites only: it shows sample data and sends no orders. It is not a test mode for your setup (why).