Fungies
Start free
Developers · Payment API

A payment API with the tax return already handled

One REST API over products, offers, orders, payments, subscriptions and customers. Signed webhooks push every state change to your server. Underneath all of it we are the Merchant of Record, so VAT, GST and US sales tax never become code you have to write.

No upfront costs. No credit card required.

Already selling with Fungies

Two headers

Authenticate, listen, fulfil

A public key reads and a secret key writes. Everything that happens afterwards arrives at your endpoint as a signed POST, retried until you acknowledge it.

# The public key goes on every request.
# Writes — POST, PATCH, DELETE — also carry the secret key.
curl https://api.fungies.io/v0/orders \
  -H "x-fngs-public-key: $FNGS_PUBLIC_KEY" \
  -H "x-fngs-secret-key: $FNGS_SECRET_KEY"

# Keys are issued at app.fungies.io/devs/api-keys.
# 401 means the key is missing or wrong. 403 means it lacks the permission.
# Plain HTTP is rejected outright.

What the API covers

Products
One-time purchases, subscriptions, memberships and game keys, each with variants and plans for the configurations you sell.
Offers
The price on top of a product: currency, billing interval, trial. Licence and game keys are uploaded against an offer and handed out on purchase.
Orders
List, retrieve, cancel and refund. Refunds can be partial, and archived records stay readable for reporting.
Payments
Every charge, renewal and refund as its own object. A payment still pending can be cancelled mid-checkout.
Subscriptions
Create, update with proration, pause collection, charge a one-off amount, end a trial early, and preview the next renewal before it happens.
Users
Customer records with billing details, plus the inventory of everything a given customer currently owns.
Discounts
Coupon codes and automatic sale discounts, fixed or percentage, returned with their usage statistics.
Checkout elements
Create the hosted, overlay or embedded checkout that your buy buttons point at, without opening the dashboard.
Tax
Ask what an offer costs a buyer in a given country with tax included, before they ever reach a checkout.
Webhooks
Register endpoints, choose event types, rotate secrets, fire a synthetic test event, and read the delivery history attempt by attempt.

How a payment moves through it

  1. 01

    You describe what you sell

    A product holds the thing, variants and plans hold its configurations, and offers hold the price. One product can carry as many offers as you have price points.

  2. 02

    A checkout element opens

    Point a button at a checkout URL and choose hosted, overlay or embedded. Billing details, discount codes, quantities and your own custom fields can all be passed in at the moment it opens.

  3. 03

    We take the payment, and the liability

    Tax is calculated for the buyer's country, the charge is screened for fraud, and the sale is made under our name rather than yours. The contract, the filing and the chargeback are ours.

  4. 04

    Your server hears about it

    A POST signed with HMAC-SHA256 arrives at your endpoint within seconds. We allow thirty seconds per attempt and retry five times, and every delivery is recorded whether it succeeded or not.

  5. 05

    You reconcile from the API

    Events tell you that something changed, not what the state is now — deliveries are asynchronous and can arrive out of order. When it matters, read the object back and treat that as the answer.

Why build on this one

01

The tax return is not part of your integration

Most payment APIs stop at the charge and leave you a spreadsheet. As Merchant of Record we calculate, collect, remit and file VAT across 27 EU states, plus GST and US sales tax, and we take the audit that follows.

02

Webhooks that admit how distributed systems behave

At-least-once delivery, five retries, and an idempotency key on every event. The documentation says outright which events can race each other and which one actually means money arrived, instead of leaving you to discover it in production.

03

Reading and writing are different keys

A public key reads. A secret key is required for anything that changes state. The public one can survive being in a build; the secret one stays on your server, and the two rotate independently.

04

HTTP is not the only way in

The same API backs a command-line tool, an MCP server for Cursor and Claude, a JavaScript SDK for checkout, and a WooCommerce plugin. Most integrations need less code than they were budgeted.

Questions a developer asks first

Build against it before you commit to it

Create an account, generate a test key, and run a full purchase through the sandbox. Nothing is charged and no card is needed to get that far.

No upfront costs. No credit card required.