Skip to content
You are reading the docs for ShopClass 7.1.0.dev1, still in development. Read the stable docs.

Currencies & paid listings

Listings → Currencies lists the currencies sellers can price in. Each has a code, name and description; add the ones your market uses and delete the rest.

The list shows how many listings use each currency, so you can see what is safe to remove. Deleting a currency that listings are priced in leaves those listings without a valid one. Check the count first.

A single-country site should offer exactly one. Every extra currency is another decision on the publish form and another thing to compare in search results.

New in 6.2.0. ShopClass can sell credits and charge for listings without a payment gateway in core. It is off by default. Nothing changes until you turn it on.

The settings move once you switch it on: while billing is off they live at Settings → Billing; enabling it promotes Billing to a top-level menu with Orders, Packages, Credits and Settings under it, and removes the entry from Settings. If you cannot find the screen you were just on, that is why.

The split matters: core owns entitlements, plugins own money. Core decides what a seller is entitled to (a featured listing for fourteen days, three extra photos, a bump) and a payment plugin decides how they paid for it. Core never sees a card number or a gateway API key.

That is why upgrades are priced in credits: an abstract unit a payment plugin sells, rather than a currency core would have to charge in.

Settings → Billing → Enable billing is the master switch. Until a payment method is installed, the screen tells you plainly: No payment methods installed, with Browse plugins to find one. Each installed method shows as Ready or Needs setting up.

Bank transfer / cash is built in and needs no plugin: you write your own payment instructions and settle each order by hand once the money arrives, with no card processor or API keys involved. Right for a local site with a handful of paying sellers.

Cash on delivery is built in too. Switch it on under Settings → Billing → Shop, with an optional fee added to the order. The buyer pays the courier: ship the order unpaid, and marking it delivered marks it paid. An unshipped order left unpaid is cancelled after Cancel unpaid orders after (days) (Settings → Billing → Shop).

The Shop tab holds the settings a goods checkout needs:

  • Delivery charge and Free delivery from: one “Standard delivery” method at a flat charge, free once the order reaches the amount (0 means never).
  • Cash on delivery and its fee.
  • Cancel unpaid orders after (days): bank transfer and cash on delivery orders keep their stock from the moment they are placed. Left unpaid this long (7 days by default), they are cancelled once a day and the stock goes back on sale.
  • Open unpaid orders per buyer: the most bank transfer and cash on delivery orders one buyer may hold unpaid at once (3 by default, 0 for no limit). Past it, checkout asks them to pay for or cancel an open order first.
  • Order number prefix: KC- makes order 1042 read #KC-1042.

A card payment takes the stock when the payment comes in. If two buyers pay for the last one at the same moment, the second order is still paid and is marked oversold for you to sort out.

Test Payments is a bundled plugin for trying the flow out. Its checkout page lets you choose Pay, Decline, Leave pending or Fail, and each one drives the real billing callback, so you can see an order succeed, hang or fail without moving any money. Install it from Plugins, then enable it.

Upgrade What the seller gets
Featured listings Promoted placement, for a set number of days
Highlight Visual emphasis in listing results, for a set number of days
Urgent An urgency marker, for a set number of days
Bump to top Back to the top of results, with a cooldown between bumps
Extra photos A raised photo cap on one listing
Extra listing runtime More days than the category’s limit allows
Extra slots More listings than the free allowance
Skip the posting wait Waives the flood-control delay between posts

Each is sold independently (turn on only what you actually want to sell) and each has its own price in credits and, where relevant, its own duration.

Sellers buy listing upgrades from My listings, next to each listing. They buy account upgrades (extra slots, extra photos, longer listings, skip the posting wait) from their Credits page, under “Upgrades for your account”. That box shows only the upgrades you turn on.

Billing → Packages defines the bundles buyers choose from at checkout: how much credit each contains and what it costs. Without at least one package there is nothing for a buyer to purchase.

Sellers get a wallet page with their credit balance and history, a page to buy bundles, and a list of their past orders. On their own listings they get an action to spend credits on an upgrade, featuring the listing for a set number of days, for example.

Orders are visible to you at Billing → Orders, and balances at Billing → Credits.

A paid after close entry in Tools → Activity log means the provider took the money for an order that had already failed. The order stays failed. Open it and click Mark as paid to give the buyer their credits, or refund the payment in the provider’s dashboard.

When an order is paid, the buyer gets a receipt by e-mail, whatever the payment method. Each paid or refunded order also has a Receipt link on the buyer’s orders page: a page they can print or save as PDF. You open the same page from View receipt on the order in Billing → Orders.

Under Settings → Billing → Receipts you can switch the e-mail off and add your business name, address and tax number to every receipt. A receipt is not a tax invoice.

If the e-mail cannot be sent, it waits on the background queue and is tried again. A buyer gets one receipt per order.

A paid goods order sends the buyer one confirmation with every item, the delivery address and the delivery method, and sends you a “New order” mail. A bank transfer or cash on delivery order sends both at once, before payment, and the confirmation when you mark it paid. If a mail cannot be sent, it waits on the background queue and is tried again.

Open an order in Billing → Orders to see its items, address and buyer. If stock ran out after the order was paid, an Oversold note lists the short items. Use Mark shipped (carrier, tracking number and an optional https tracking link) and Mark delivered to move it along; the buyer is e-mailed when it ships. Cancel order closes an order that is not paid yet. To ship at the top of the list shows paid orders that have not shipped.

Free listings per seller and the photo cap set what sellers get for nothing. These are what make the upgrades worth buying: with unlimited free listings and no photo cap, nobody needs extra slots or extra photos.

Set the free allowance to what a casual seller needs and a dealer does not.

Take payment at the end of posting (Settings → Billing → Pricing, on by default when extra slots are for sale). A seller over the limit fills in the whole form, the listing is saved hidden as Waiting for payment, and they pay on the last step with credits or a package. It is deleted after Cancel unpaid orders after (days) (Settings → Billing → Shop) if they never pay, and they get a reminder e-mail a day before (edit it in Settings → Emails). Turn the switch off and an over-limit seller is stopped at the form. In Listings, filter by Waiting for payment, and use Publish without payment to put one live free.

  • Take a backup.
  • Test the whole flow end to end with bank transfer first, including what a seller sees when their upgrade expires.
  • Write your refund terms into your Terms page: the payment plugin will not do it for you.
  • Confirm that expiry actually runs: entitlements expire on the hourly cron. Without cron, a featured listing stays featured forever and you have sold something you cannot take back.

The contract between core and a payment plugin (what an entitlement is, how a plugin grants one, and what core guarantees about it) is specified in docs/BILLING.md.