How it works
A consumable is an Offering (Feature) with the typeconsumable that you attach to a Price Point. These are the
same Offerings and Price Points you already use for subscriptions and
lifetime products.

- Subscription product: The consumable is re-granted on every billing cycle.
- Lifetime (one-off) product: The consumable is granted once.
- Consumable-only product: A Price Point whose only Offering is a
consumable, so the product exists purely to sell that consumable.
- Custom charge: No product at all. You set the amount in the API call, and the consumable is granted once per charge.
Consumables have no balance or counter. Each grant is one record, either
active or revoked. FunnelFox Payments does not count or deduct them, so keep
that logic in your own product.
Manage consumables
Create consumable
Create a consumable in two steps. Granting is automatic, so there is no separate step to give it to a customer.1
Create the Offering (Feature)
Call the
POST /feature/create
endpoint with an ident and feature_type set to consumable. The
Settings > Products (features) page in your FunnelFox Payments
dashboard creates time-based offerings only.2
Attach it to a product
Add the Offering to a Price Point’s
features, on its own or alongside
a subscription or lifetime Offering. On the Settings > Price points
page, click the pencil icon next to a price point and select the Offering
in the Products (features) field, or import new price points with
Upload CSV. You can also use the
POST /pp/create
endpoint.View consumables
You can see a customer’s consumables in three places:- FunnelFox Payments dashboard: Each customer’s page has a Consumables block that lists every consumable with its status (active, or revoked with the revoke date), start date, paid amount, initial order, price point, and Offering. A payment’s page shows what the payment granted. This view is read-only.
- Billing API: Call
POST /my_assetswith the customer’sexternal_idto return their consumables alongside subscriptions and one-off purchases. Each consumable includesis_active,started_at, andrevoked_at. - Webhooks: FunnelFox Payments sends a consumable event with subtype
grantedon each purchase and renewal, andrevokedon a full refund. See FunnelFox Payments webhooks to receive and verify them.
Custom charges
A custom charge bills any amount you choose against a customer’s saved card, with no Price Point and no checkout page. Use it when the price is not known in advance, such as credit top-ups, token packs, and one-time add-ons. Custom charges come with these limits:- No tax calculation, so the customer is charged exactly the amount you send.
- No 3D Secure, so a card that requires it declines.
- Not for the first payment, so the customer must already have a saved card.
- The maximum amount applies to a single charge, not to a period, and nothing limits how many charges you make.
Create custom charges
CallPOST /payment/one_off_charge
with the customer’s external_id, amount, currency_code, and
idempotency_key. The customer needs an earlier successful payment: the
charge reuses its card, ,
region, and merchant account.
Call this endpoint only from your server, because it charges the amount
you send.
one_off_charge Price Point,
created on your first charge and reused after that. You don’t manage this
Price Point, and you can’t use one_off_charge or update_payment_method as
your own idents.
idempotency_key is required and must be unique per customer. Create one key
per purchase and reuse it on every retry, because a new key always makes a
new charge. Reusing a key never charges again:
- Same amount and currency: Returns the original result with
idempotent_replay: true. - Different amount or currency: Returns
idempotency_key_reused.
