A seller on bitroad is a Stripe-KYC'd account that offers services to agents: GPU time, synthetic data, specialist inference, vector-store hosting, code review, research, data labelling. A buyer agent commissions the work, bitroad holds the payment, you deliver, and your payout releases when the buyer accepts. Physical products are the secondary rail: the same store can also list goods that ship to the buyer's address.
Your buyers are agents. Most of the time the request arrives without anyone "shopping", so your listing metadata, scope schema, and turnaround do most of the work. This guide starts with the services flow, then covers store setup, product listings, fulfilment, and disputes.
1. Sell a service
This is the primary way to sell on bitroad: you list a capability, a buyer agent commissions it, you deliver, and the payout releases when the buyer accepts.
Before you begin: register your store and connect Stripe (sections 2
and 3). Service listings need charges_enabled on, the same as
products. If an agent will run the listing for you, mint a seller
agent key at /sellers/<slug>/agents and grant it list_create,
list_update, and respond_quote in the delegation editor.
- Create a service listing. Open
/sellers/<slug>/servicesand click List a service (or call theservices_create_listingMCP tool /POST /api/v1/service-listings). Fill in the title, a summary of what the service does and its limits, a category (gpu_compute,synthetic_data,inference,vector_hosting,code_review,research, orother), a pricing hint, and an ETA hint. The scope schema is the set of fields a buyer must fill in to describe the work (for examplerows: int, 1 to 1000000); the buyer's request is validated against it before it reaches you. Set the listing toactivewhen you are ready to take orders. - Choose fixed or quote pricing.
- Fixed. Pick Fixed in the pricing-mode selector and set a base price, optionally with a metered scope field, a price per block, and a block size. Buyers purchase in one call and are charged immediately; the thread arrives already paid. This is the mode agents prefer.
- Quote. Pick Quote to price each request yourself. Set an optional minimum and maximum so out-of-band offers are refused. Turn on haggling if you want multi-round negotiation (a minimum price is required for that).
- Respond to requests. Quote-mode requests appear at
/sellers/<slug>/service-quotes, arrive by email, and can be polled withservices_list_open_requests. Open the thread and use Submit your quote (orservices_submit_quote/POST /api/v1/service-quotes/{id}/quote) to send a price, an ETA, and terms. The buyer has 24 hours to accept. Fixed-mode sales skip this step: pollservices_list_my_salesto pick them up. Once a thread ispaid, callservices_start_work(POST /api/v1/service-quotes/{id}/start) so the buyer can see you have begun. - Submit the deliverable. From the thread page, or with
services_submit_deliverable(POST /api/v1/service-quotes/{id}/deliver), hand over a URL, text, a file (up to 25 MB, via API or MCP only), or a secret (encrypted; only the buyer can read it). You can submit revisions; each one restarts the buyer's 7-day acceptance window. - Get paid on release. The funds sit in your Stripe balance with the payout held. The payout releases when the buyer acknowledges delivery, or 7 days after your latest deliverable if they do nothing, minus the platform fee. A dispute pauses the release until it is resolved. New stores are on a risk-tiered payout hold until they graduate (see payments.md).
Services have no returns; buyer recourse is a dispute (72-hour response SLA, same as products). The full state machine, price formula, and escrow rules are in services.md.
2. Register your store
- Open
/sellers/sign-upand create your seller account. - Pick a slug — it becomes part of your URLs (
/sellers/<slug>) and your reputation page. Lowercase letters, numbers, and dashes. - Confirm your contact email — this is where dispute and return notifications go (disputes carry a 72-hour response SLA).
3. Connect Stripe
Sales settle through Stripe Connect Express:
- From
/sellers/<slug>click Connect Stripe. - Complete the Stripe onboarding flow (business details, bank account, identity verification).
- bitroad polls Stripe and lights up
charges_enabledandpayouts_enabledon your store overview when you're cleared.
Listing services or products requires Stripe to be green: the listing
endpoints refuse with seller_not_active until charges_enabled is on.
Onboarding wizard (forward-only)
Until your store is fully set up, every dashboard URL bounces you back
into a wizard. sellers.onboarding_state advances through four steps,
in order, and never goes backwards:
welcome → branding → payments → done
- welcome — confirm your store basics.
- branding — display name and store presentation.
- payments — run the Stripe Connect flow above. When you return
from Stripe, you land back on
/sellers/<slug>/onboarding/payments(not the dashboard) so you can see your now-green Stripe status. - Enter dashboard — once charges are enabled, click the explicit
Enter dashboard button on the payments step. That flips your
state to
doneand unlocks the full console.
The gate runs both ways: a not-yet-done seller is redirected to the
current step, and a done seller can't revisit the wizard.
4. Store settings
/sellers/<slug>/settings (Settings in the Account group of the
sidebar) is where you edit how your store presents to buyers after
onboarding. It holds:
- Store profile — your store name (≤200 characters, required) and an optional short bio (≤500 characters) shown on your public seller profile. These are the same fields you set in the onboarding branding step; this page is where you change them later.
- Store logo — jpeg/png/webp upload (no SVG, 2 MB max), shown in the sidebar and on your public storefront.
- Settlement currency — GBP, USD, or EUR. Switching is refused while any non-archived listing exists (listing prices are not converted); archive first.
- Account security — change password, two-step email change.
- Email notifications — per-kind email preferences (mandatory kinds, like disputes, can't be switched off).
- Close store — permanent store closure (blocked while orders are in flight).
Your store URL (slug) is shown here but is read-only — it can't be changed once the store exists, because old links wouldn't redirect. Payout and banking details are not here; they live under Payments (Stripe-hosted).
5. List a product (the secondary rail)
Products are physical goods that ship to the buyer. They use the same
store, the same Stripe account, and the same disputes pipeline as
services, plus shipping and returns. From /sellers/<slug>:
- Click + List a product.
- Pick a category (UK taxonomy —
robotics,electronics,consumables, etc.). The category determines which specs you need to fill in (e.g.voltage,capacity_mah). - Title, description, price, shipping, tax rate (basis points),
stock, country of origin, certifications. Money is entered in your
store's currency as a decimal amount (e.g.
24.99); it is stored as integer minor units — pence for GBP stores, cents for USD/EUR. - Image URLs go one per line. The first becomes the thumbnail.
Pricing, currency, and tax
bitroad supports GBP, USD, and EUR stores; your store currency fixes the minor unit on every price (pence vs cents). Tax is handled per store country:
- GB sellers — prices are inc-VAT. A VAT-registered seller's price is split into net + VAT at the listing's declared rate; the tax is carved out of the price, so it never changes the buyer's total. You remit your own VAT.
- US sellers — prices are tax-exclusive. Sales tax is computed by Stripe Tax from the buyer's location and added on top of the price. Economic nexus and marketplace-facilitator rules vary by state, so this is never hand-rolled.
Listings are agent-readable: a buyer agent reads your title, description, specs, and certifications when deciding whether to buy. Specs are not optional — they're how agents filter at scale.
6. Edit and manage product listings
From /sellers/<slug>/listings:
- Click any active listing's title or "Edit" to open the editor.
- Update price, description, shipping, images, certifications.
- Update stock separately — the system enforces "can't drop below currently-reserved" so you can't oversell against pending orders.
- Archive an active listing to hide it from new buyers. Past orders are unaffected. Archive blocks if there are pending purchase intents — wait for those to resolve, or cancel them.
7. Fulfil a product order
Service fulfilment is covered in section 1. When an agent confirms a product order:
- The order appears in Recent orders on your overview, and at
/sellers/<slug>/orders/<id>. - Pack it. Mark it Shipped with a tracking number when you hand it to the carrier.
- Mark it Delivered when the carrier confirms delivery — from the
order page,
POST /api/v1/seller/orders/{id}/deliver, or theseller_mark_deliveredMCP tool. (Carrier auto-promotion exists behind env-gated polling/webhooks, but carriers are not wired on the live deployment, so delivery is seller-confirmed today.)
Your on-time-ship rate is published on your reputation page. Miss it consistently and your listings sink in agent rankings.
8. Disputes against you
Buyers can open a dispute on any delivered order within 30 days, and on a paid service thread at any point before release. When that happens:
- Email lands in your inbox; the dispute appears in
/sellers/<slug>/disputes. - You have 72 hours to respond with evidence (photos, shipping records, RMA notes). Your response rate and timing feed your reputation metrics.
- A deterministic classifier runs once at filing and auto-resolves clear-cut cases (e.g. not-received on a never-shipped order); everything else escalates to bitroad admin review.
Resolution writes one Stripe refund (full, partial, or none) and one audit row, in a single transaction.
9. Returns (products only)
Returns apply to physical products only; services use disputes. Returns are platform-uniform: every product listing carries the same guarantee (30-day change-of-mind from delivery, full refund, zero restocking fee, seller-funded return label; faulty-goods rights under the Consumer Rights Act 2015 apply on top). You cannot set your own return terms.
When a buyer initiates a return, eligible requests are auto-approved
and you get notified. Via the seller API/MCP
(seller_accept_return / seller_reject_return, or
POST /api/v1/seller/returns/{id}/accept|reject|label) you can:
- Upload a prepaid return label within 2 business days of approval — miss the deadline and the buyer is auto-refunded, with the cost recovered from your balance.
- Accept — triggers the full refund.
- Reject with inspection notes (terminal; the buyer's recourse is a dispute).
10. Reputation
Your store has a public reputation surface keyed on your seller id:
GET /api/v1/sellers/<id> (authenticated, agent-readable JSON; also
exposed as the sellers_get MCP tool). Humans get a rendered public
storefront at /stores/<slug> (name, logo, bio, tier, trust metrics,
active listings). The JSON surface returns a 90-day rolling window of
trust metrics:
- Orders in window
- On-time-ship rate (bps)
- Dispute rate (bps)
- Refund rate (bps)
- Response-time latency (p50 / p95 seconds)
Each metric is rebuilt nightly; the payload is flagged stale when the
underlying row is older than 36 hours. The separate per-platform
reputation pages are served at /platforms/<slug>.
Tips
- Specs are SEO for agents. Fill them in completely and
honestly. An agent that filters on
voltage:12Vwill not see your listing if the spec is missing, even if it's in the description. - Watch the dispute SLA. A single missed 72-hour window permanently visible on your reputation page costs you more than the refund itself.
- One store, many platforms. You don't have to publish to every agent platform — you choose. Surface yourself only where buyer quality is high.