Skip to main content
The Billing API lets you model products as price points, orchestrate checkout with your PSPs, and manage subscriptions end-to-end — including pausing/resuming, discounts, migrations, and refunds.
This doc covers the FunnelFox Billing API only. If you’re using the FunnelFox API, go to the FunnelFox API section.

Base URL

All API requests should be made to:
https://billing.funnelfox.com/{org_id}/v1
Replace {org_id} with your organization ID provided by your Customer Success Manager when your FunnelFox Billing account was created.
Don’t confuse {org_id} with your FunnelFox Project ID found in your FunnelFox General settings.

Authentication

Authenticate your API requests by including your secret key in the ff-secret-key header. Some endpoints are public and don’t require authentication.
  • /payment/refund
  • /subscription/enable_autorenew
  • /subscription/disable_autorenew
  • /subscription/migration
  • /discount
  • /subscription/defer
  • /subscription/pause
  • /subscription/resume
  • /subscription/search
  • /pp/export_csv
  • /pp/import_csv
  • /pp/update
  • /pp/create
  • /feature/create
  • /payments_history
  • /transaction_report
  • /search_users
  • /checkout/create_client_session
  • /checkout/update_client_session
  • /checkout/create_payment
  • /checkout/one_click
  • /checkout/resume_payment
  • /my_assets
  • /price_points
  • /features

Secret key

Request your API secret key from your Solution manager, or set it yourself on the Settings page of the FunnelFox Billing dashboard. To set your API secret key:
  1. Go to the Settings page of the FunnelFox Billing dashboard.
  2. Configure the following fields:
  • ff_api_secrets_new.first.enabled: Set to true to enable the secret key.
  • ff_api_secrets_new.first.group: Set to admin for full access. You can also use support or viewer for limited access.
  • ff_api_secrets_new.first.key: Enter your secret key value. Store this securely—once saved, the UI will not display it again.
  1. Press Enter to save changes.
You can set an additional secret key using the ff_api_secrets_new.second fields.

Available endpoints

  • POST /payment/refund — Refund an order (full or partial; optional “soft” refund)
  • POST /subscription/enable_autorenew — Turn on autorenew
  • POST /subscription/disable_autorenew — Turn off autorenew
  • POST /subscription/migration — Move a sub to another price point (price_prorate, delayed_start)
  • POST /discount — Apply a percentage discount for a number of iterations
  • POST /subscription/defer — Delay the next charge until a time
  • POST /subscription/pause — Stop billing and access until a time
  • POST /subscription/resume — Cancel pause and restart billing/access
  • POST /subscription/search — Search and filter subscriptions
  • POST /price_points — List price points (filter by ident)
  • POST /pp/export_csv — Export all price points to CSV
  • POST /pp/import_csv — Bulk-create price points from CSV
  • POST /pp/update — Update by ident
  • POST /pp/create — Create a price point
  • POST /feature/create — Create a feature (timebased, lifetime, consumable)
  • POST /features — List all features
  • POST /my_assets — Fetch user ownership (subscriptions & one-off purchases)
  • POST /payments_history — Return successful payments of user
  • POST /transaction_report — Return all transactions
  • POST /search_users — Search user
  • POST /checkout/create_client_session — Get a client token & order for the selected price point
  • POST /checkout/update_client_session — Re-bind an order to a different price point
  • POST /checkout/create_payment — Charge using a payment_method_token
  • POST /checkout/one_click — One-click purchase by external_id + pp_ident
  • POST /checkout/resume_payment — Complete a payment after additional action
Learn more in the FunnelFox Billing API reference.

Making requests

Path parameters

All endpoints defined under https://billing.funnelfox.com/{org_id}/v1/... require the org_id in the URL path.

Request body

Most endpoints accept JSON parameters in the request body. Parameters vary by endpoint - see the API Reference for details.

Example request

curl -X POST 'https://billing.funnelfox.com/{org_id}/v1/price_points' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "ident": null
  }'

Response format

All successful responses follow this structure:
{
  "data": {
    // Response data specific to the endpoint
  },
  "status": "success"
}

Example response

{
  "data": {
    "price_points": [
      {
        "ident": "monthly-premium",
        "currency": {
          "code": "USD",
          "minor_units": 2,
          "title": "US Dollar",
          "symbol": "$"
        },
        "intro_type": "free_trial",
        "lifetime_price": null,
        "intro_free_trial_period": 7,
        "intro_free_trial_period_duration": "days",
        "intro_paid_trial_price": null,
        "intro_paid_trial_period": null,
        "intro_paid_trial_period_duration": null,
        "next_price": "9.99",
        "next_period": 1,
        "next_period_duration": "months",
        "features": [
          {
            "ident": "premium-access"
          }
        ]
      }
    ]
  },
  "status": "success"
}

Filtering

The POST /price_points endpoint is the only one that supports narrowing results by ident to retrieve specific price points. Pass an ident value to retrieve only the matching price point:
curl -X POST 'https://billing.funnelfox.com/{org_id}/v1/price_points' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "ident": "pro_monthly_usd"
  }'
List all price points (no filter):
curl -X POST 'https://billing.funnelfox.com/{org_id}/v1/price_points' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{}'

Error handling

The API returns standard HTTP status codes with detailed error messages.
{
  "status": "error",
  "req_id": "acMMsjP9",
  "error": [
    {
      "msg": "Error description",
      "type": "error_type"
    }
  ]
}
Response fields:
  • status - Always "error" for failed requests
  • req_id - Unique request identifier for debugging
  • error - Array of error objects with msg (description) and type (error category)