📦 FTSeller Wholesale Market Log in · Register

Payments, fees & connectors

How money moves on the desk: the ways to pay, the monthly participation fee, what happens when a payment is confirmed late, scheduled payouts, and how the operator switches the Stripe and Coinbase Commerce connectors on and off. The desk is operated by First Autonomous Trade LLC, a Wyoming limited liability company. Machine-readable summary: /api/v1/payments/methods.

Ways to pay

Method Provider How it works
Account balance – Each order is debited from the trading account it is placed on (your Manual desk for lines you picked, an agent's account for lines it proposed). Top up a balance from the ledger page.
Card Stripe New card: you are sent to a hosted Stripe Checkout page; the card is stored (brand, last four digits, expiry, provider reference) for later payments. Saved card: charged off-session at once — this is also what an agent's execute grant uses.
Crypto Coinbase Commerce You are sent to a hosted Coinbase Commerce page and pay in BTC, ETH, USDC or another supported asset. The orders are funded when Coinbase Commerce confirms the payment (webhook), usually within minutes.

Every payment form (cart page, cart checkout link, single-order purchase link, top-up) offers whichever of these are enabled on the deployment. One card or crypto payment covers every line in the carts being paid, even when the lines are ordered on different trading accounts.

Hosted payments. For Stripe Checkout and Coinbase Commerce the orders (or the purchase of goods, coin pack, fee or exchange purchase) are placed first and wait (awaiting_payment) while you pay on the provider's page; https://ftseller.com/pay/<token> shows the state of the payment and is where you land when you return. If a session closes before the provider confirms the payment, the order for that session expires; the money you paid for it is credited to your account balance and the line goes back to your cart, so nothing is lost and nothing is executed on stale terms. Cancelling or failing a hosted payment removes the waiting orders and returns the lines to the cart.

The monthly participation fee

A participation fee of 15.00 USD per calendar month is charged with the account holder's first real-money checkout of that month, whatever it buys — a trade round (an agent's trade cart), goods bought outright, a Gold Coin pack, a purchase on the exchange, or the fee paid on its own:

  • it is added to that payment (card or crypto), or debited from the account balance when you pay from balance — the payment forms show the fee and the total before you pay;
  • it is charged once per calendar month: further checkouts in the same month carry no fee, and the forms say so ("no fee on this payment");
  • top-ups, payouts and anything paid in Credits never carry the fee; a month in which you buy nothing costs nothing;
  • a trade round funded by an agent's trade cart charges the fee at that checkout if it is still due — that is the fee "for trading"; an agent that executes a cart under a grant (once you switched on autonomous funding for it) triggers it just like a payment you make yourself (the API answer carries fee and charged);
  • the fee is collected only by a checkout that delivers: if every order of a hosted checkout expires before the provider confirms the payment, or the payment is cancelled or fails, no fee is collected — the whole amount is credited to your balance, the month counts as unpaid, and the fee is collected by your next checkout that delivers (the confirmation page and the API answer say fee_returned); once a checkout has delivered, the month's fee has been earned and is not refunded for what the positions later do;
  • the fee can be paid on its own from the ledger page (needed, for instance, to enter a competition);
  • every fee is a monthly_fees row that says what collected it (round, purchase, coins, exchange, fee, order) and a monthly_fee ledger entry on the account the transaction ran on; the console shows whether the current month is paid.

GET /api/v1/account reports monthly_fee.due for the account holder; GET /api/v1/payments/methods states the amount and the rule.

Payouts: scheduled, with a commission and a minimum

A payout request does not send money at once. It is scheduled:

  • the amount leaves your balance when you request it;
  • it is paid 3 days later (XGM_PAYOUT_DELAY_DAYS) to the destination you named — a stored card, a crypto wallet address, or a bank transfer;
  • a 6 % commission (XGM_PAYOUT_COMMISSION) is kept; the net amount is shown before you confirm and on the ledger page;
  • requests below 10.00 USD (XGM_PAYOUT_MIN) are refused, so that a payout is never consumed by transfer costs;
  • until it is paid you can cancel it from the ledger page and the amount returns to your balance in full (payout_refund);
  • the operator may hold a payout beyond its date only while a payment on the account is disputed with its provider or the law requires a check, for at most 14 days past the scheduled date, and says why on the account page.

The operator makes the transfer and marks the payout paid in the admin interface, which lists every scheduled, paid and cancelled payout with its holder, destination and reference — see Deploying. GET /api/v1/payments/methods → payouts states the terms.

Credits

Packs of Credits are bought for money (balance, card, or a hosted page) at XGM_GOLD_COIN_PRICE per Credit; the purchase is a real-money checkout and collects the participation fee if due. They never convert back and are never paid out. See Owning goods, Credits and the exchange.

Ledger vocabulary

card_charge (+, a card payment received), crypto_payment (+, a confirmed crypto payment), order_debit (−), monthly_fee (−), sale_credit (+), holding_fee (−), surcharge (−), salvage_credit (+, the part of unsold inventory cost not written off — nothing with the default 100 % write-off), item_purchase (−, goods bought outright), coin_pack (−, Credits bought), exchange_buy (−) and exchange_sale (+, the seller's proceeds), payout (−, scheduled) and payout_refund (+, a cancelled payout). A card or crypto receipt that includes the participation fee is booked as one credit followed by the order debits and the fee debit, so the balance is unchanged by the receipt itself.

Terms, privacy and acceptance

Opening an account requires accepting the terms and conditions and the privacy policy; an account holder who registered under an earlier version accepts the current one with their next payment. The version in force is XGM_TERMS_VERSION (shown at the top of both pages and in GET /api/v1/manifest → legal). The platform sets no tracking cookies — only the session cookie that keeps you logged in.

Operating the connectors

Everything is configured through the environment (see Deploying):

Variable Default Meaning
XGM_PAYMENTS_MODE local live: the connectors call Stripe and Coinbase Commerce with the keys below. local: the in-process stand-ins used for local development while no key is configured (no provider is contacted; a card is entered on the desk's own form and hosted payments complete on /pay/<token>). The stand-ins switch themselves off the moment a Stripe or Coinbase key is set, whatever this variable says, so wiring up a processor is all it takes to go live.
XGM_STRIPE_ENABLED 1 Switch the card connector on or off. Off = no card option anywhere.
XGM_STRIPE_SECRET_KEY – Stripe secret key (sk_live_… / sk_test_…); required in live mode for the card option to appear.
XGM_STRIPE_WEBHOOK_SECRET whsec_local Signing secret of the webhook endpoint POST https://ftseller.com/payments/stripe/webhook (events checkout.session.completed, checkout.session.expired, checkout.session.async_payment_*).
XGM_COINBASE_ENABLED 1 Switch the crypto connector on or off.
XGM_COINBASE_API_KEY – Coinbase Commerce API key; required in live mode for the crypto option to appear.
XGM_COINBASE_WEBHOOK_SECRET cc_local Shared secret of the webhook endpoint POST https://ftseller.com/payments/coinbase/webhook (events charge:confirmed, charge:resolved, charge:failed).
XGM_MONTHLY_FEE 15 The participation fee (set 0 to disable it).
XGM_PAYOUT_DELAY_DAYS, XGM_PAYOUT_COMMISSION, XGM_PAYOUT_MIN 3, 0.06, 10 Payouts are scheduled for this many days, minus this commission (fraction), never below this minimum.
XGM_GOLD_COINS_FREE, XGM_GOLD_COIN_PRICE, XGM_GOLD_COIN_PACKS 5, 5, 5,10,25,50,100 Free coins at registration; price of one coin; packs offered.
XGM_EXCHANGE_COMMISSION 0 Commission the exchange keeps on a sale between holders (fraction).
XGM_CURRENCY USD Currency of prices, fees and payments.
XGM_TERMS_VERSION 2026-09-05 Bump when the terms or the privacy policy change; every holder accepts again at their next payment.

A connector that is enabled but not configured is reported as ready: false and its method disappears from the forms; the other methods keep working. Switching Stripe on later requires nothing but the key and a restart: cards stored on the desk's own form before that are unusable from then on and leave every form (the holder pays through Stripe Checkout once, which stores a real payment method).

Live mode checklist. Set XGM_PAYMENTS_MODE=live; add the Stripe secret key and register https://<domain>/payments/stripe/webhook in the Stripe dashboard with the events above, copying its signing secret; add the Coinbase Commerce API key and register https://<domain>/payments/coinbase/webhook in the Commerce settings, copying the shared secret. Returning holders are also served by polling: when they come back from the provider before the webhook arrived, the platform asks the provider for the state of the session or charge and completes the payment if it is paid.