Skip to main content
This page is the reference for the CLI commands that move tokens, query balances, and pull funds from the faucet. For wallet lifecycle commands (create, import, export, set-active) see gen wallet.
Recipients are grd@... account locators. Every --to and --account flag on this page expects a 1-part bech32m account locator with the grd@ HRP. Raw 0x... entity hex is rejected. To get the locator for a wallet you control, run gen wallet show <name> --account-address-only. See gen wallet for the full wallet surface.
All gen client commands accept the global --rpc-url <URL> (-s), --header NAME=VALUE, and --json (-j) options. JSON mode emits a single envelope with ok, command, timestamp, and result.

Balances

gen wallet balance

Query the GEN balance (or a selected token) for the active or named wallet.
Key flags:
  • [NAME] (positional): Wallet to act on; defaults to the active wallet.
  • --wallet <NAME>: Wallet to act on, as a flag instead of the positional NAME; defaults to the active wallet.
  • --token-contract <GVM_CONTRACT>: Query a specific token contract instead of the default GEN token.
Text output prints Balance, Symbol, and Name.

gen wallet balances

Query every token balance held by the active or named wallet in one call.
Text output prints one block per token contract. JSON output is a map keyed by token contract string with balance, symbol, and name per entry.

gen client balance

Query the GEN balance (or a selected token) for any account on the network, not just one of your local wallets.
Key flags:
  • --wallet <NAME>: Use a specific wallet instead of the active wallet.
  • --account <ACCOUNT>: Query the token balance for a specific GvmAccount (bech32m, HRP grd@) instead of a wallet.
  • --token-contract <GVM_CONTRACT>: Query a specific token contract instead of the default GEN token.
If neither --account nor --wallet is supplied, the active wallet is used. Output mirrors gen wallet balance.

Transfers

gen wallet transfer

Send tokens from a local wallet to a recipient account. The active wallet is used unless --wallet is supplied; transfers prompt for confirmation unless --yes is passed.
Key flags:
  • --wallet <NAME>: Use a specific wallet instead of the active wallet.
  • --to <RECIPIENT>: Recipient GvmAccount in bech32m format (HRP grd@) (required).
  • --amount <SUBUNITS>: Token amount in subunits (u128 decimal string) (required).
  • --token-contract <GVM_CONTRACT>: Deployed token contract in bech32m format. Must resolve to the genesis fungible-token code ID (the genesis GEN contract); other code IDs are rejected.
  • --with-confirmation: Ask the remote holder to confirm transfer delivery before returning.
  • --no-wait: Return immediately after sending without waiting for the activation to complete.
  • --yes (-y): Skip the interactive transfer confirmation prompt.
Text output reports the activation ID and final status after waiting (or just the activation ID with --no-wait). In --json mode the result is the same envelope used across the CLI:
status and outcome_result are present only once the activation resolves (omitted with --no-wait). A fresh random activation tag is generated for each submission, so repeating an identical transfer does not trip duplicate-activation replay protection.

gen client transfer

Lower-level alternative to gen wallet transfer with the same on-chain effect and the same wallet resolution: --wallet is optional and falls back to the active wallet. Like gen wallet transfer, it prompts for confirmation, so pass --yes for non-interactive use; in --json or other non-interactive contexts it errors without --yes rather than prompting.
Key flags:
  • --wallet <NAME>: Use a specific wallet instead of the active wallet.
  • --to <RECIPIENT>: Recipient GvmAccount in bech32m format (HRP grd@) (required).
  • --amount <SUBUNITS>: Token amount in subunits (u128 decimal string) (required).
  • --token-contract <GVM_CONTRACT>: Deployed token contract in bech32m format. Must resolve to the genesis fungible-token code ID (the genesis GEN contract); other code IDs are rejected.
  • --with-confirmation: Ask the remote holder to confirm transfer delivery before returning.
  • --no-wait: Return immediately after sending without waiting for the activation to complete.
  • --yes (-y): Skip the interactive transfer confirmation prompt.
For scripts and CI, pass --yes so the command never blocks on (or errors at) the confirmation prompt.

Faucet

The faucet signs the activation; you supply the recipient. If the recipient account does not exist, the funded path auto-creates it via the Fungible Token contract’s receive-failure callback.

gen wallet faucet

Request faucet funds for, or simply create, an account. Defaults to the active wallet’s account when no recipient flag is set.
Pick the recipient with at most one of --wallet or --to; with neither, the active wallet’s account is used. Exactly one of --amount or --create-account-only is required, and the two are mutually exclusive. --create-account-only is the unfunded path: combining it with --amount, --token-contract, or --without-confirmation is rejected as an invalid argument combination, not silently ignored (--token-contract and --without-confirmation both require --amount). Key flags:
  • --wallet <NAME>: Use a specific wallet instead of the active wallet.
  • --to <RECIPIENT>: Recipient GvmAccount in bech32m format (HRP grd@).
  • --amount <SUBUNITS>: Amount in subunits to transfer from the faucet (must be > 0).
  • --create-account-only: Create the account without funding it.
  • --token-contract <GVM_CONTRACT>: Token contract for the funded path. Defaults to the genesis FT (GEN).
  • --without-confirmation: Use fire-and-forget transfer instead of transfer_with_confirmation (funded path only).
  • --no-wait: Return immediately after sending without waiting for the activation and its continuations to complete.
Text output reports the activation ID and final status.

gen client faucet

Same implementation and flags as gen wallet faucet. Use whichever subcommand fits the rest of your script.
If you use --no-wait, follow up with gen client get-activation --activation-id <id> to verify the final status.

Common patterns

  • Sign offline, submit elsewhere. Build the canonical unsigned bytes once with gen wallet build-activation, sign on an isolated host with gen wallet sign-activation (or gen client sign-activation), then push the signed bytes from anywhere with gen client submit-activation --signed-activation-file ./signed.txt. The same wallet that built the activation must sign it.
  • Dry-run before submitting. Pass the unsigned activation produced by build-activation to gen client simulate-activation to dry-run against current (or a specific) state without broadcasting. Useful for verifying transfer parameters and gas before spending. See Activations.
  • Submit and poll. Add --no-wait to any transfer or faucet command to return as soon as the validator acknowledges the request; the response includes the activation_id. Confirm the final outcome later with gen client get-activation --activation-id <id>.
  • Make repeated identical submissions unique. Transfer and funded-faucet submissions generate a fresh activation tag automatically. For the detached flow, pass --activation-tag <U32> to sign-activation or sign-and-submit-activation to override it manually.

See also

  • Wallet management: create, import, export, and select wallets.
  • Activations: build-activation, simulate-activation, sign-activation, submit-activation, and get-activation.
  • Quickstart: end-to-end first transfer in five minutes.