Fungies for WooCommerce lets you sell digital products through your WooCommerce store while Fungies.io handles payments, taxes, and compliance as your Merchant of Record.
You keep full control of your storefront. Fungies takes care of the hard parts — payment processing, tax collection, invoicing, and regulatory compliance — so you can focus on your products.
fungies). Errors and warnings are always logged; verbose dumps are off by default to keep log files small and avoid storing third-party API payloads unless you’re troubleshooting.Fungies acts as your Merchant of Record, which means:
This plugin connects your WooCommerce store to the Fungies.io platform, an external third-party service operated by Fungies Inc.
What data is sent to Fungies:
Service endpoints used:
https://api.fungies.io/v0https://api.stage.fungies.net/v0https://{your-store}.app.fungies.ioA Fungies account is required to use this plugin. You can sign up at fungies.io.
Legal documents:
Every sync runs two phases on the same triggers:
GET /v0/offers/list, then for each offer create or update a matching WooCommerce product (name, description, image, price, currency).PATCH an existing one or POST a new one.woocommerce_update_product / woocommerce_new_product hooks (push only, debounced 5 seconds)_fungies_offer_id on a WooCommerce product marks it as Fungies-originated skipped during push._fungies_pushed_offer_id on a WooCommerce product marks it as already-pushed skipped during pull.is_pulling flag prevents WooCommerce update hooks from firing while the pull writes to the database.PATCH returns 404 “Product not found” (e.g. after switching from staging to production keys), stale IDs are cleared and the product is recreated in the current workspace.The plugin auto-detects the Fungies workspace currency. If your WooCommerce currency does not match, the push phase errors out with a clear message — products are never pushed at the wrong currency.
_fungies_offer_id — Fungies offer ID this WooCommerce product mirrors (set on pull)._fungies_currency — currency the offer was priced in (set on pull)._fungies_checkout_url — pre-built single-offer hosted checkout URL (set on pull)._fungies_pushed_product_id — Fungies product ID for a WC-originated product (set on push)._fungies_pushed_offer_id — Fungies offer ID for a WC-originated product (set on push)._fungies_pushed_at — timestamp of last successful push.When a customer clicks Place Order, the plugin produces a different Fungies hosted checkout URL depending on how many distinct offers are in the cart.
For each cart line item, the builder resolves a Fungies offer ID by checking, in order:
_fungies_offer_id (product was pulled from Fungies)._fungies_pushed_offer_id (product was pushed to Fungies from WooCommerce).Each unit (quantity) becomes one entry in the resulting offer-IDs array. Items without either meta key are logged and skipped.
Single offer (1 distinct offer ID, quantity 1) — no API call is needed. The plugin redirects directly to:
<store_url>/checkout/<offer_id>?fngs-customer-email=...&fngs-customer-country=...
Multiple offers (2 or more, or quantity > 1) — the plugin calls POST /v0/elements/checkout/create with all collected offer IDs, then redirects to:
<store_url>/checkout-element/<element_id>?fngs-customer-email=...&fngs-customer-country=...
The element ID is also stored on the WooCommerce order as _fungies_checkout_element_id for traceability. When the customer lands on the hosted checkout, Fungies promotes the element into a checkout session and the URL becomes …/checkout-element/<element_id>/checkout/<session_id> — every cart product is visible in the order summary.
The single-offer URL is stateless — no API call, no rate-limit cost, no extra latency. The multi-offer flow has to use the Checkout Element endpoint because Fungies’ single-offer URL only carries one offer ID. Before v2.1.6, multi-item carts would silently lose every line item except the first.