Case study · Integrations · WooCommerce · API

A dropshipping API for a moulding manufacturer: 80% of partner orders with no manual re-entry

A manufacturer of finishing mouldings wanted partner stores to be able to sell its products without holding their own stock, with orders going straight into the shipping system. We built a dropshipping API on WooCommerce that calculates B2B discounts on its own, checks stock and passes orders to Sellasist accurate to the cent. Two months in, around 80% of all the store’s orders come through the API.

The client makes skirting boards, cornices and wall mouldings in polystyrene, MDF (including fire-resistant and moisture-resistant versions), XPS and stainless steel. It sells through its own WooCommerce store and handles orders, shipping and invoices in Sellasist. Companies that sell finishing materials themselves wanted these mouldings in their range, but without keeping stock and without re-entering every order by hand.

Paczki białych listew sufitowych i przypodłogowych na przenośniku rolkowym w magazynie, w tle regały z zielonymi liniami światła
Illustration. AI-generated image (Magnific). We don’t show screenshots of the admin panel because they contain end customers’ data.
~80%of all store orders now come through the API (361 of 453)
PLN 121,677gross in partner orders, mostly in September and October
0rejected orders and duplicates in the last 30 days

Starting point

Dropshipping looks simple: the partner sells, the manufacturer ships. The devil is in the details, and there were plenty of them here:

  • B2B prices are individual. Companies with a Business account have separate discounts for individual product categories and groups. A partner cannot type the price into the order, because then the partner controls the discount, not the manufacturer.
  • Some products are sold by the metre. In the store, a moulding’s price is per metre, but the partner receives a piece of a specific length. The price per piece has to follow from the product’s length.
  • Orders have to land in Sellasist straight away. That is where the shipping label, invoice and payment terms are created. Anything that reaches Sellasist wrong has to be fixed by hand.
  • Partners use different systems. One has an online store, another an ERP. Each names shipping methods differently and retries sending an order differently when something goes wrong with the network.

The goal: the partner connects its system once, and from then on orders flow on their own, with the right price, the right shipping and the right payment terms.

The solution: a dropshipping API inside WooCommerce

Instead of a separate platform, we wrote a plugin for the existing store. That way the catalogue, stock and prices have a single source: the same one the store uses. Each partner gets its own API key, which we store in the database only as a hash, so even a database leak doesn’t reveal the keys.

EndpointWhat the partner uses it for
GET /pingConnection and key test.
GET /productsCatalogue with prices already after the partner discount, dimensions, weight and images, paginated.
GET /products/{sku}A single product by SKU.
GET /stockStock levels only, a lightweight request for frequent syncing.
POST /ordersPlacing an order with the number from the partner’s system.
GET /orders/{id}Status, tracking number and tracking link.
POST /orders/{id}/statusCancellation or return, as long as the goods haven’t left the warehouse.

The most important one is POST /orders. Before an order is created, it goes through several gates. See what happens in each scenario:

Simulator · fictional data

What happens when a partner sends an order?

Click a scenario to see which steps the order goes through and what the API responds. The steps and responses match how the live system works.

  1. 1 · PartnerThe partner’s system sends the ordernumber, items, address, shipping
  2. 2 · KeyAPI key checkhash compared with the database
  3. 3 · DuplicateHas this number been sent before?lock at database level
  4. 4 · StockIs there stock for every item?before the order is created
  5. 5 · PricePrice and discount calculated by the manufacturerthe price in the request is ignored
  6. 6 · StoreOrder in WooCommercestock reduced automatically
  7. 7 · SellasistShipping, invoice, payment termswithout manual transcription
// the API response will appear here

Choose a scenario and send the order.

Miniaturowa makieta: biała fabryka pośrodku połączona zielonymi świetlnymi ścieżkami z kilkoma sklepami, po ścieżkach jadą małe paczki
Illustration. One catalogue and one warehouse, many partner stores. AI-generated image (Magnific).

The price is always calculated by the manufacturer

This was the project’s most important rule. In an order, the partner only sends the SKU and quantity. Even if it sends a price, the system ignores it and calculates its own:

  • The partner discount is a single percentage for the whole catalogue, set in the admin panel.
  • The Business discount applies when the partner’s email matches a Business account in the store. The plugin links these accounts automatically when the partner is saved. The discount is calculated per product: first by the product group (tag), then by category.
  • The winner is the higher of the two discounts. For mouldings sold by the metre, the price per metre is multiplied by the length of the piece, exactly as in the store’s cart.

In practice, partners get their discount from the Business account: 356 of 360 API orders received it automatically, with no manual calculation.

Calculator · sample discounts

Which discount wins?

Choose a product, set the partner discount and switch the Business account on or off. Also try typing “your own” price into the partner field.

…Business discount for this product
…discount applied to the order
…net price per piece calculated by the manufacturer

Prices and percentages are examples. The mechanics are the same as in the live system: the product group takes priority over the category, the higher discount wins, and the price in the request has no effect on the result.

Four things you won’t find in the documentation

The API itself is half the work. The other half began when real orders started flowing into Sellasist. Each of the problems below only showed up in production, and each would have cost the client’s team daily manual fixes.

1. Where the grosz goes missing

Sellasist reads the unit price from the order and requires unit price times quantity to equal the line value exactly. Standard WooCommerce calculates VAT on the net total of the whole line and only rounds at the end. With larger quantities the two methods drift apart by a few grosz, and then Sellasist splits the line into two. With mouldings this is not an exception: 327 of 393 lines in partner orders have a quantity greater than 1.

The fix: we calculate the gross unit price first, multiply it by the quantity and derive VAT as the difference. We set taxes manually on every line and on shipping, so WooCommerce doesn’t recalculate them its own way afterwards.

Try it yourself

Will this line drift apart in Sellasist?

The default values are a real case from production: 22 pieces at PLN 20.77 net, 23% VAT. Change the price and quantity.

Standard WooCommerce calculation

Line net
VAT on the total
Line gross
Unit price × qty

Our algorithm

Gross unit price
Line gross
VAT as the difference
Unit price × qty

Accurate to the grosz

2. Courier or parcel locker?

At first, all partner orders had the same shipping method in WooCommerce. Sellasist maps shipping by method ID, so it couldn’t tell a courier from a parcel locker, and orders arrived with a message that no shipping method was mapped. It also turned out that free text in the order is not enough: Sellasist builds its mapping list from the methods registered in the store’s shipping zone.

So we added five real shipping methods (courier, parcel locker, personal pickup, free and catch-all), visible in the store’s API but hidden from customers in the cart. The partner can send the shipping type directly or just its name, and the system works out what it means. The shipping cost comes from the same price list that Sellasist uses. After the rules were set up once in its panel, Sellasist also remapped earlier orders.

Shipping method translator

What did the partner call the shipping, and what comes out of it?

Type a method name the way a partner store might send it, or click an example. The examples are in Polish, as Polish stores send them.

…method in WooCommerce
…how Sellasist sees it after mapping
…gross shipping cost in the order

3. An invoice marked paid before anyone paid

One partner, which places orders straight from its ERP system, reported that its invoices were arriving in Sellasist as paid, even though it has 30 days to pay. The cause was in WooCommerce: setting an order to “processing” automatically sets a paid date. Sellasist saw that date and treated the invoice as paid, skipping the payment terms from the buyer group. The fix is one line that clears the paid date after the status is set. Finding it meant comparing exactly what Sellasist reads from the order.

Before and after

What does accounting see?

Switch to see the same invoice before and after the fix.

4. The partner’s order number where people look for it

The warehouse and customer service work in Sellasist, not in WooCommerce. The order number from the partner’s system was saved in the order data, but Sellasist didn’t show it. Now it goes in as the first line of the order note (“Partner no.: …”), which Sellasist displays right away. When a partner calls about a parcel, their number is all it takes.

Why it matters

Each of these four problems looked like a detail. Together they would mean that, with around ten orders every working day, someone at the company fixes shipping methods, split lines and invoice statuses instead of selling. An integration is only finished when the data on the other side needs no manual handling.

Documentation for partners and for the team

We prepared two PDF documents for the API. For partners: connection and key, catalogue, placing orders, statuses, error codes, terms of cooperation and a ready-made example in Python. For the client’s team: adding and editing partners, handling orders, discounts, the API log and answers to common questions. The API log records every call, so a “it never arrived on our side” question can be checked in a minute.

Pracownik magazynu owija folią paczkę białych listew przypodłogowych, w tle kartony i samochód dostawczy
Illustration. An order from a partner ends the same way as an order from the store: with a parcel from the manufacturer’s warehouse. AI-generated image (Magnific).

Results

The first partner tested the API from July and switched to it fully at the end of August. Since then, partner orders have made up most of the store’s sales.

Orders via the API

From testing to 80% of sales in two months

Number of partner orders in each month. Hover over a bar to see the gross value.

Data from the store’s database as of 23 October 2026. October covers 23 days.

  • 361 orders via the API worth PLN 121,677 gross, 3,682 pieces of goods.
  • Around 80% of all store orders in this period came from partners (361 of 453).
  • 5,444 API calls in 30 days: 4,033 catalogue requests, 1,176 stock requests and 235 new orders.
  • 0 rejected orders and 0 duplicates in the same period. The partner pulls stock levels continuously, so orders are placed for goods that are actually in the warehouse.
  • Discounts with no manual calculation: 356 of 360 orders with an automatic Business discount.
  • Shipping mapped in Sellasist for all new orders, with no missing-shipping-method message.

Further partners connect on the same terms: they get a key, the documentation and, from day one, the same prices, stock and rules as the first one.

We build similar integrations between online stores and ERP, CRM and shipping systems as part of our ERP/CRM integrationsservice. If you’re wondering what else can be automated in B2B sales, take a look at our articles on automating a B2B sales department i on automation in wholesale.

Frequently asked questions about dropshipping APIs

What is a dropshipping API in WooCommerce?

It is an interface through which partner stores fetch the manufacturer’s catalogue, prices and stock and place orders directly in the manufacturer’s WooCommerce store. The manufacturer ships the goods to the end customer, while the partner keeps no warehouse and does not re-enter orders by hand.

Can a partner set the price in an order sent through the API?

No. In this implementation the partner only sends the SKU and quantity, and the price is always calculated by the manufacturer’s store: with the partner discount or with the Business discount assigned to product categories and groups, whichever is higher.

How do API orders get into Sellasist?

Sellasist fetches them from the WooCommerce store like any other order. To make sure they need no fixes, every order has a registered shipping and payment method, taxes calculated so that unit price times quantity equals the line value, an empty paid date when payment is deferred, and the partner’s order number in the order note.

What happens if a partner sends the same order twice?

No second order is created. The pair “partner and order number” is unique in the database, so a repeat returns the existing order with the “duplicate” flag, even if both requests arrive at the same moment.

Can an ERP system be connected to the API instead of an online store?

Yes. The API accepts plain HTTP requests with a key in the header, so both an online store and an ERP system can use it. One of the partners in this implementation places orders directly from its ERP.

Why did Sellasist split order lines into two?

Sellasist requires the gross unit price multiplied by the quantity to equal the line value exactly. Standard WooCommerce calculates VAT on the line’s net total, so with larger quantities the result was a few grosz off. We calculate the gross unit price first and derive VAT as the difference.

Your integration

Want partners to order from you without emails and re-typing?

Book a free call. We’ll look at how to connect your store, ERP or shipping system with partners so that prices, stock and invoices match with no manual fixes.

Schedule a call

or see our offer →

Next step

Did you like this article?

If after reading this you feel your company also has processes worth rebuilding, book a free call. Together we will check where sales are really leaking and what makes sense to implement first.

Schedule a call