Skip to main content
A FlareHQ merchant account is your business identity on the platform. It holds your verified email, your payout wallet, and your API key — everything you need to create hosted checkouts, payment links, and programmatic USDC flows on Arc Mainnet. Merchant-facing payment settlement is USDC. Merchant accounts follow a deliberate lifecycle. Each stage is a separate API call, and each one has its own page in the API reference:

Create your account

Call POST /api/merchant/signup with your business email, a display name, and a password of at least 8 characters. FlareHQ sends a 6-digit verification code to that email address; the code expires after 10 minutes.
Every account is created with a Circle-managed payout wallet in mind. The walletProvider, walletAddress, and externalAddress fields are ignored at signup — connecting a personal wallet (MetaMask, WalletConnect, Coinbase) happens later, after you’re authenticated, via the SIWE flow described below. See Sign Up.

Verify your email

Confirm the code you received with POST /api/merchant/verify. This is the most important step in the lifecycle because it provisions two things at once:
  1. Your API key — a one-time credential in the format arc_live_<48-hex-chars>. It is returned in this response and never shown again, so save it immediately.
  2. Your payout wallet — a Circle-managed wallet, created automatically when your provider is CIRCLE, so payments settle to an address you control without you managing keys.
The API key is displayed only once, in this response. Store it in a password manager or secrets vault. If you lose it, you can’t retrieve it from the dashboard — you’ll need to re-provision the account.
The key issued at verification is prefixed arc_live_.... This is the credential you pass as the x-api-key header for API calls. It is separate from the SDK secret key (fhq_sec_test_...) you might use from @flarehq/sdk for checkout sessions.
See Verify Email.

Log in to the dashboard

Once verified, log in with your email and password. POST /api/merchant/login validates your credentials and sets an HTTP-only merchant_token cookie that lasts 7 days. Dashboard-scoped actions — wallet management, withdrawals, and payment links — authenticate with this cookie; the API-key endpoints (like the dashboard KPIs below) use x-api-key instead.
The login call rejects unverified and deactivated accounts with a 403. Keep the cookie jar (-b cookies.txt on subsequent calls) so your wallet, withdraw, and payment-link requests carry the session. See Login.

Dashboard KPIs

GET /api/merchant/dashboard is the one account endpoint that authenticates with your API key rather than the session cookie. Pass it in the x-api-key header:
The response returns your business name, your API key, and your full payment history — the raw material for building revenue charts, fulfillment dashboards, or reconciliation views:
See Dashboard KPIs.

Set up your payout wallet

Your Circle-managed wallet is provisioned automatically at verification, but you still control the payout destination. The wallet endpoints let you read it, switch back to Circle, or connect a wallet you already own. Read your wallet with GET /api/merchant/wallet, authenticated by the merchant_token cookie:
Switch back to Circle with PATCH /api/merchant/wallet and { "walletProvider": "CIRCLE" }. This endpoint only accepts CIRCLE — it provisions a brand-new Circle wallet for your payouts. It deliberately rejects external addresses, because connecting a wallet you own requires proving ownership first. Connect an external wallet through a two-step SIWE (Sign-In With Ethereum) flow at GET/POST /api/merchant/wallet/connect. You must already be logged in — this links a wallet to your merchant identity, it doesn’t create one.
1

Request a nonce challenge

Pass your wallet address as a query parameter. FlareHQ builds a SIWE message, stores the nonce in a 5-minute HTTP-only cookie, and returns the message for you to sign.
2

Sign the message and submit

Have the customer sign the message in their wallet (MetaMask, WalletConnect, or Coinbase), then submit the address, message, signature, and wallet kind. FlareHQ verifies the signature against the nonce and links the wallet.
The walletKind must be one of METAMASK, WALLETCONNECT, or COINBASE. Connecting an external wallet never stores a private key — you keep custody; FlareHQ only records the address. See Merchant Wallet and Connect Wallet (SIWE).

Withdraw USDC

If your payout wallet is Circle-managed, POST /api/merchant/withdraw moves USDC out of it to any external address you control. Merchants with an external wallet don’t need this — settlements land directly in a wallet they hold the keys to.
FlareHQ validates the destination address and confirms the wallet has sufficient balance before submitting the on-chain USDC transfer. The response includes the transaction hash and a link to view it on the Arc Mainnet explorer (https://explorer.arc.io). See Withdraw. Once your payout wallet is set up, POST /api/merchant/payment-link turns a fixed amount into a shareable checkout URL — ideal for invoices, social-media sales, or one-off collections. Links expire after 24 hours.
Share checkoutUrl anywhere — email, DM, QR code. Your customer completes the USDC payment on the hosted page, and if you supplied a webhookUrl you’ll receive lifecycle events. GET /api/merchant/payment-link lists your 100 most recent links with their current status. See Payment Links and Hosted Checkout.

Next steps

Hosted Checkout

Create on-demand checkout sessions with the payments API and redirect customers to the hosted page.

Consumer Payments

Learn how consumers create sessions, track balances, and send or request payments — including Flow, the chat assistant.

Initialize Payment API

Full reference for creating a USDC payment session and getting a checkout URL.

Webhooks

Subscribe to payment lifecycle events so your backend reacts the moment a payment settles.