=== Biklo for WooCommerce ===
Contributors: biklo
Tags: marketplace, biklo, bicycles, multichannel, sync
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 7.4
WC requires at least: 8.2
WC tested up to: 11.1
Stable tag: 0.9.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Sell on Biklo, the bike marketplace, straight from your WooCommerce shop: products, stock, orders, returns and payouts.

== Description ==

Biklo is a marketplace for bikes and everything around them, in 30 European countries.
This plugin connects your WooCommerce shop to your Biklo company account, so you sell
there without typing your catalogue in twice.

* **Your products on Biklo, kept in step.** Map your categories, brands and condition to
  Biklo's once; the Readiness screen says exactly what to fix before a product can go.
  Then stock, prices and changes are sent as they happen.
* **Biklo orders in WooCommerce.** They arrive paid, with the stock taken. Accept them,
  print the Biklo courier label and follow the tracking from the order screen.
* **Returns decided in your shop.** When a returned parcel is back with you, accept or
  reject the return on the order; what Biklo refunds is recorded as a WooCommerce refund.
* **Payouts.** See your Biklo balance and withdraw it from your admin.
* **Try everything first.** A `bk_test_` key connects to the Biklo sandbox, where nothing
  is real: no buyers, no payments, no couriers.

You need a Biklo **company** account and a shop in the same currency as your Biklo account.

The step-by-step guide, with screenshots from install to returns:
[apps.biklo.com/woocommerce](https://apps.biklo.com/woocommerce/).

== Installation ==

1. Install and activate the plugin (Plugins → Add New, or upload the zip).
2. In your Biklo account, open **My account → API integrations** and create an API key.
3. In WordPress, open **Biklo → Connect**, paste the key and press **Test connection**.
4. Map your categories and brands, check **Readiness**, then **Start syncing**.

Start with a `bk_test_` key: it connects to the Biklo sandbox, where nothing is real.
The full guide: [apps.biklo.com/woocommerce](https://apps.biklo.com/woocommerce/).

== Frequently Asked Questions ==

= Does it cost anything? =

The plugin is free. What you sell on Biklo carries Biklo's usual fees on each order, as
the Biklo marketplace terms set them.

= Do I need a developer? =

No. Install, paste a key, map your categories and brands, start the sync.

= Can I use a private seller account? =

No: selling through the plugin needs a Biklo company account.

= What happens when I delete the plugin? =

Its key, settings and sync data are removed from your shop, and its notification address
is removed from Biklo. Your orders stay, and your listings stay on Biklo until you remove
them there.

= Where do I get help? =

The **Get help** button on every Biklo screen sends our support team what they need to look
into a problem. Or write to contact@biklo.com.

== External services ==

This plugin connects your shop to the **Biklo Partner API**, run by BIKLO MARKET SRL
(Brașov, Romania). It is needed for everything the plugin does: without it the plugin does
nothing. It talks to `https://api.biklo.com` with a live key (`bk_live_`), or to
`https://sandbox-api.biklo.com` with a test key (`bk_test_`).

What is sent, and when:

* **With every request:** your Biklo API key (to identify your account) and the plugin's
  version.
* **When you test or save your key:** nothing else - Biklo answers with your account's
  details.
* **When the sync runs** (when products, stock or prices change, and on a schedule): your
  products' titles, descriptions, photo addresses, prices, stock, SKU, categories, brands,
  attributes and parcel sizes. Products you exclude are never sent.
* **When the sync starts:** your site's address, once, so Biklo can notify your shop of
  new orders.
* **When you handle a Biklo order:** accepting it, the address it leaves from and the number
  of parcels, invoices you attach, cancellations, and your decision on a return with your
  reason.
* **Only when you press Get help:** a support report you can read before sending - versions,
  settings, your API key masked, the state of the sync and orders, recent activity and the
  list of active plugins.

Biklo sends your shop the orders its buyers place with you (with the buyer's delivery
details, to ship them), courier labels, tracking, return statuses and payouts.

* Terms of use: [https://apps.biklo.com/terms/](https://apps.biklo.com/terms/)
* Privacy policy: [https://apps.biklo.com/privacy/](https://apps.biklo.com/privacy/)

== Screenshots ==

1. Connect: paste your Biklo key and test the connection.
2. Map your shop's categories to Biklo's.
3. Readiness: every product that cannot go to Biklo yet, and why.
4. Sync: what was sent, what is waiting, and the checks.
5. A Biklo order in WooCommerce, handled from its Biklo box.
6. Payouts: your balance on Biklo, withdrawn from your admin.

== Changelog ==

= 0.9.0 =
* Returns follow Biklo's inspection: when a return parcel is back with you, the order's Biklo box says so with the deadline, and you accept the return (Biklo refunds the buyer) or reject it with a reason (the Biklo team decides) right there. The orders list shows "check the returned product" while it waits.
* What is recorded is exactly what Biklo did: a full refund as before (pieces back into stock per Settings → Returns); part of the price refunded by the Biklo team - a refund of that amount, nothing back in stock, with its own refund reason; no refund - a note only. Each step of the decision is an order note.
* Sandbox: play the whole return from the Biklo box - the buyer starts it, the parcel arrives, the deadline passes, and the Biklo team refunds all, half or nothing.
* The merchant guide has a Returns page: every way a return can end, step by step with screenshots.
* The webhook also listens to return.delivered, return.escalated and return.resolved; existing installs are updated on the next order check.

= 0.8.0 =
* Returns: when a buyer starts a return on Biklo, the order gets a note; when the parcel is back and Biklo refunds the buyer, the order gets a matching refund here (no money moves) and the pieces go back into stock - or not, if you untick Settings → Returns to check them first.
* Tracking opens in a pop-up on the order screen, with every courier scan, instead of another site.
* The Biklo order number shows in the orders list; the plugin's own line fields are hidden from the order items.
* Sandbox: play the buyer's return from the order's Biklo box.
* Large catalogues: Readiness reads stored verdicts (checked in the background, a product again whenever it is edited) - fast with thousands of products, none hidden. A wave of stock or price changes goes to Biklo in one batch instead of one call per product.
* Leaving cleans up: deleting the plugin, removing the key or switching to another key deletes the webhook the plugin registered on Biklo.
* Works against an older Biklo too: the order pop-up falls back to your own address, and links to Biklo pages never disappear.
* Get help, on every Biklo screen: describe the problem and send it to Biklo support with the plugin's diagnostics (versions, settings, sync and order state, recent errors - never keys or secrets), which you can read first. You get a reference; if Biklo cannot be reached, the same report is ready as an email to support.
* New Biklo → Payouts: your Biklo balance per currency, withdrawing what is available to your bank, payouts and money per order - and, when Stripe still needs something for payouts, exactly what, with a link to finish it on Biklo.
* Accepting a Biklo order opens a review pop-up: what you send (lower any product, even to 0 - Biklo refunds the buyer the rest), packing (one box by default), and where it ships from - your address or a pickup point - with the exact contact and phone the courier gets. Accepting waits until you confirm you checked them; a money summary shows what is refunded and what you ship.
* A new look for every Biklo screen: setup tabs (Connect → Categories → Brands → Readiness → Sync), cards, a save bar that tells you when something is unsaved, search on Categories, Brands and Readiness, summaries of what is mapped, and an activity timeline.
* Settings shows what is set on your Biklo account - who pays delivery and Biklo's service fee, price offers, where the courier collects, the countries you sell to, payouts - as Biklo has it now, with what each means and a link to change it on Biklo.
* The webhook also listens to return.completed; existing installs are updated on the next order check.

= 0.7.0 =
* Quantities: a Biklo sale no longer takes the product off Biklo. The listing keeps selling what the shop has left, and comes off only when the shop's stock reaches 0.
* Short of stock for a Biklo order? Accept it with the pieces you have - the Biklo box is set to them - and Biklo refunds the buyer the rest once the courier is booked. Only an order with nothing left to send is rejected automatically.
* A Biklo order shipped short gets a matching refund in WooCommerce (no money moves - Biklo paid the buyer back), and the pieces go back into stock.
* "Everything in one box" carries the pieces actually sent; the default is now "one box per product".
* The webhook also listens to order.items_changed and product.sold; existing installs are updated on the next order check.

= 0.6.0 =
* A Biklo order is completed in the shop when the courier delivers it (and what is still in stock goes back on sale). Biklo keeps the order "accepted" through delivery and records the delivery separately; the plugin now reads that.
* No more "Confirm handed to courier" step: Biklo dropped it. Print the label and hand the parcel over; the courier's tracking does the rest.
* Sandbox: the "play the courier" buttons appear as soon as the order has an AWB.

= 0.5.1 =
* Sandbox keys: create a Biklo test order from Biklo → Sync, and play the courier from the order's Biklo box - the whole order flow without a real purchase.
* A product whose Biklo listing was archived (in the Biklo dashboard, or by an earlier install) is put back on sale when the shop sends it again.

= 0.5.0 =
* Ship Biklo orders from the order screen: accept (with "everything in one box"), book the courier, print the label (PDF or ZPL), confirm the handover.
* Send Biklo the link to your invoice for the buyer.
* A Biklo column on the orders list shows what is waiting for you.
* Biklo → Settings shows this shop's webhook URL with a Copy button. Let the plugin register it, or add it in Biklo yourself and paste the signing secret.

= 0.4.0 =
* Biklo orders arrive in WooCommerce as paid orders, with the stock taken - instantly through Biklo's notifications, and checked every 10 minutes as well.
* Accept or reject a Biklo order from the Biklo box on the order. Biklo delivers it.
* An order the shop no longer has stock for is rejected on Biklo automatically.
* A product sold on Biklo goes back on sale after delivery if you still have stock.
* WooCommerce does not email the buyer of a Biklo order - Biklo does.

= 0.3.0 =
* Sync: products that are ready are listed on Biklo, and stock and price changes follow - including the ones your orders make.
* Products that leave your shop (draft, trash, deleted, excluded) are archived on Biklo, and put back on sale when they return.
* Images go with the product - one request per product, or one per 500 in a batch.
* Variations are listed as one Biklo product with a size or colour picker.
* The sync refuses to start if your shop's currency is not the one Biklo prices your listings in.
* Biklo → Sync shows what was sent, what Biklo refused and why.

= 0.2.1 =
* Biklo has its own menu in the admin sidebar: Settings, Categories, Brands, Readiness.
* Every Biklo page shows whether the shop is connected to the sandbox or the live marketplace.
* Fixed the Brands table layout.

= 0.2.0 =
* Link WooCommerce categories to Biklo categories, with suggestions.
* Match brands to Biklo's brand lists; unknown brands go to "Altă Marcă" or are held back.
* Product condition: shop default, a product attribute, or a per-product choice.
* Readiness list: what Biklo will receive for every product, and what still needs fixing.
* Product "Biklo" tab: exclude a product, a separate Biklo title, condition, category.

= 0.1.0 =
* Connect to Biklo with an encrypted API key; test the connection and the key's permissions.
