Case StudiesTradMarket
Traditional & World Music Instruments Marketplace

TradMarket

The marketplace for traditional and world music instruments, and the largest thing we have built. Three services: a custom storefront, a payments engine that makes Stripe match what every order owes, and an operator console that replaced three separate tools.

TradMarket platform mockup
3
Services
Storefront, payments API, admin console
On Demand
Seller Payouts
Sell first, onboard when ready
Custom
Admin Console
Replaced three separate tools
Single
Money Record
One source that Stripe is made to match

About TradMarket

TradMarket is the dedicated marketplace for traditional and world music instruments, built by and for the players, makers and collectors who know them best. Flutes, fiddles, shakuhachi, guqin: instruments that general resale sites file under a category nobody maintains.

It is the largest build in our portfolio. Not because of the storefront, which is substantial on its own, but because of what sits behind it. Second-hand instruments are high value, often one of a kind, and shipped internationally, so an order can be cancelled, returned, partly refunded, disputed with the bank, or hit with a carrier surcharge weeks after it arrived. Every one of those moves money, and a marketplace that gets it wrong is paying out of its own pocket.

The Challenge

Sharetribe gave us the marketplace to build on, and TradMarket asked a lot of what sits above it:

  • The conventional marketplace flow asks a seller to finish Stripe onboarding before their first listing goes up. For somebody who wants to list one instrument and see what happens, that is a lot to ask on day one
  • An order's money changes long after checkout, through cancellations, returns, partial refunds, chargebacks and carrier overages, and every change has to reach Stripe exactly once
  • Two colleagues clicking the same button, a webhook arriving twice, or a retry after a timeout must never pay or refund the same money twice
  • A seller who ends up owing money on one order has to settle it out of the next sale rather than leaving the marketplace short
  • Daily operations were spread across Sharetribe Console, a separate CMS and a separate category tool, so no one screen told the whole story of an order
  • Categories and the fields under them changed constantly, and every change needed a developer
  • A storefront that had to read as a specialist instrument shop rather than a marketplace template with a logo swapped in

Our Sharetribe Solution

Three services, each with a job the others do not touch: the storefront owns every order, a payments engine moves the money, and an operator console runs the business.

Sell First, Get Paid When You Are Ready

Most marketplaces ask for Stripe onboarding before a seller can list. Here a seller can list and sell straight away, and what each order earns them is worked out and held against it. The moment they finish onboarding, everything owed settles at once. Operators can also pay a seller immediately from the console. Nobody loses a first listing to a bank form.

One Record Of What An Order Owes

An order's line items are its only money record. Every change, a cancellation, a return, a refund, a label bought out of earnings, writes new line items on the order itself. The payments engine never calculates money of its own: it asks the storefront what the order still has to refund and pay out, reads what Stripe has already done, and moves the difference. One place to look when a number is questioned.

Money That Cannot Move Twice

Every call to Stripe carries a key built from the order's own state, so a retry, a duplicated webhook or two colleagues clicking at once resolve to the same single movement. The order is locked while its money moves, and Stripe's own record is re-read first so nothing is paid on a stale view. A nightly pass compares every order against Stripe and mails anything that disagrees.

Payout Timing That Protects Both Sides

A seller's first sale pays out when the parcel is delivered; after they have a track record, on the carrier's scan. Nothing pays out while a return, a dispute or a chargeback is open. If a seller ends up owing money on one order, it nets off their next transfer, oldest first, rather than leaving the marketplace to absorb it.

Returns, Disputes And Chargebacks As Real Flows

A return is previewed item by item before anybody commits: what comes back, what the shipping and tax do, the restocking fee, the cost of the return label. Disputes get a queue with deadline warnings and evidence filed straight to Stripe. A chargeback is money the bank has already taken, so it is accounted for as such rather than discovered later in a statement.

An Operator Console That Replaced Three Tools

Sharetribe Console for daily operations, a separate CMS for content, and a separate tool for categories, all folded into one interface. Transactions, disputes, returns, payouts, sellers and content in one place, with role-based access, two-factor sign-in and an audit record of who did what. It is a separate deployment from the payments engine on purpose: a human interface that changes weekly should not share a release or an attack surface with the process that moves money.

The Client Owns The Catalogue

The category tree and the fields that sit under each category are edited in the console and served to the storefront, so adding a category, or a field that only applies to woodwind, is an afternoon for the client rather than a ticket for us. The storefront's shop sections and links are managed the same way. Nothing in the catalogue needs a deploy.

A Storefront Designed For Instruments

A full design pass across the whole shop: browse, listing pages, the sell flow, checkout, orders and the account. The flows follow what people already know from the big resale sites, because a seller listing a fiddle should not have to learn a new vocabulary, and the surface is built for photographs of objects that are worth looking at.

The Results

TradMarket runs on three services, each carrying a job the others never touch:

  • Sellers list before they onboard, and what they have earned settles the moment they are ready to take it
  • One record of an order's money, with Stripe made to match it rather than asked to remember it
  • Every movement idempotent and locked, with a nightly reconciliation that reports anything Stripe and the order disagree about
  • Returns, disputes and chargebacks handled as ordinary parts of the business rather than exceptions somebody fixes by hand
  • A single operator console in place of three tools, with two-factor sign-in, role-based access and an audit record on every action
  • The catalogue in the client's hands: categories, the fields beneath them, and the storefront's own sections, all editable without a deploy
  • A storefront designed for the instruments, with flows borrowed from the resale sites sellers already know

Technologies Used

SharetribeReactNode.jsPostgreSQLRedisStripe ConnectEasyPostServer-Side RenderingCustom Admin ConsoleBackground Workers
We came to Butterfly partway into our marketplace build, looking for more structure, clearer communication and better follow-through than we had been getting. With custom development, issues will always come up; what sets Butterfly apart is how they handle those moments. If you are looking for an agency that will care about your project as much as you do, I would not hesitate to recommend them.
Blayne
Blayne
Founder, TradMarket

Is The Money The Hard Part?

Payouts before onboarding, returns that reach back months, chargebacks, carrier surcharges and a seller balance that has to stay honest. When an order's money keeps changing after checkout, the ledger is the product, and that is the part we build.

24-hour response
Free consultation
100% satisfaction guarantee