abx.
Using ABXGuides

Sales

A primary sale runs through the shared fixed-price minter, a single ownerless contract per chain that serves every project. Only the fixed-price minter ships now; see Minting for the protocol model.

Sales run against a collection. A plain 1/1 has no minter, so to sell a single piece, deploy a one-token collection (abx deploy-series --count 1) — or, if copies of that piece are fine, an edition (abx deploy --copies <n|open>), which ships a native sale stack on its own.

Configure and buy

  • abx minter configure <token> --price <eth> --allocation <n>: set the price and how many tokens this minter may sell for the project. Use --price-raw <units> for exact base units, and --erc20 0x... to price in an ERC-20 instead of ETH. Only the token owner can configure.
  • abx minter show <token>: the sale terms, whether the minter is assigned on the token, the payee, the pause state, and supply.
  • abx minter buy <token> [--to 0x...]: buy one token. An ERC-20 sale needs a prior approval to the minter.

Re-configuring a live sale takes effect immediately, and every buy carries the terms it was quoted, so an in-flight purchase reverts SaleTermsChanged rather than paying the new price. That is the point — it is what stops a price change from reaching a buyer's ERC-20 allowance — but it means a price change during a busy mint will fail some in-flight buys. Pause first if you want a clean cutover.

Buyers retry, and the CLI re-reads the terms on each minter buy. The scaffolded mint page reads the terms when it loads, so after a terms change a buyer may need to reload it before their next attempt succeeds — it recovers automatically from SaleTermsChanged, but a price cut surfaces as WrongPayment (the ETH lane requires the exact value, since V1 has no refunds) and that path does not self-refresh. Another reason to pause for a cutover rather than re-pricing under live traffic.

Wiring a collection for sale

A sale needs two separate grants, both from the project owner, plus a payee. Run them in this order:

  1. abx minter configure <token> ...: set the sale terms on the minter.
  2. abx set-minter <token> --minter <address>: authorize that minter on the token.
  3. abx set-primary-payee <token> --payee 0x...: set the payout address. A sale reverts without one.
  4. abx unpause <token>: open minting. Run this last.

"Configured" on the minter and "assigned" on the token are different grants; a sale needs both. Use abx set-max-invocations <token> --max <n> to lower the supply cap, which only decreases, and abx pause <token> to return to owner-only minting.

Two things worth knowing about these grants, because a buyer can read both. They have no timelock — re-configuring price, payee, allocation or pause takes effect immediately, and what protects a buyer is the terms assertion on their own purchase, not a delay on yours. And allocation is a budget inside the minter, not a slice of your supply: set-minter grants the minter the whole remaining cap, and you can keep minting reserves alongside it, so the supply cap is the real ceiling. Both, and the rest of what you retain after the sale, are listed in what a project owner can do.

Editions: per-id sales

An edition (--copies) sells through a sibling contract, AbxFixedPriceMinter1155, priced per id rather than per collection:

  • abx minter configure <token> --token-id <n> --price <eth> --allocation <n>: price that one id.
  • abx minter show <token> --token-id <n>: that id's sale terms and readiness.
  • abx minter buy <token> --token-id <n> --quantity <n>: buy n copies in one purchase, paying price × quantity.

--token-id is required on every minter subcommand against an edition, and refused against a plain collection. Wiring is otherwise identical: set-minter, set-primary-payee, and unpause stay contract-wide — one minter, one payee, one pause gate for the whole id space. OneOfOneEdition (a single work deployed with --copies, no folder) needs no Series wrapper at all: it implements the mint primitive directly, at id 0, so abx deploy --copies <n|open> --no-mint already has a full sale stack once wired up.

Mint page

abx mint-page <token> scaffolds a self-contained mint site for the fixed-price minter, ready to deploy to a static host. It reads the sale state and images directly from the chain. Sales are in ETH in this version.

Works against a Series, or an edition (OneOfOneEdition/EditionImage/EditionCode) — on an edition the page is a token-id-and-quantity purchase card rather than a gallery. Pointed at a plain 1/1, mint-page refuses up front rather than scaffolding a page that would sit on "Loading…" forever; deploy a one-token collection instead (abx deploy-series --dir <folder> --count 1), or an edition of one work (abx deploy --copies <n|open>).

On this page