Custom API


Overview

The Custom API data source lets you push subscription data into GrowPanel from any billing system — a custom-built platform, an in-house database, or a service we don't natively integrate with. Once it's set up, your engineering team writes a small piece of code that sends customers, plans, and invoices to our REST API, and GrowPanel calculates MRR, churn, retention and everything else.

This page is the setup walkthrough. The actual code-writing happens in Building integrations — hand that link to your developer once you've created the data source.


When to use this

Use the Custom API data source when:

  • Your billing system isn't one of our native connectors (Stripe, Chargebee, Recurly, Google Sheets).
  • You want to combine billing data with internal data from your own product or database.
  • You're on a platform that uses Stripe under the hood but generates one-off invoices instead of real Stripe subscriptions — your engineering team can model the subscription state correctly via the API.

You can run a Custom API data source alongside native connectors — for example, a Stripe data source for self-serve customers plus a Custom API source for enterprise customers billed by another system.


Setting up the data source

Step 1: Add the data source

  1. Navigate to Settings → Data sources.
  2. Click Add data source → select Custom API.
  3. Give it a descriptive name (e.g. "Internal billing platform" or "Enterprise contracts").
  4. Click Save.

Step 2: Save the API key

When the data source is created, GrowPanel shows an access_token once. This is the API key your code will use to authenticate. Copy it immediately and store it as a secret — the full value is never shown again.

If you lose it, you can generate a new key under Settings → API Keys, but that's a key rotation, not retrieval.

Step 3: Note the data source ID

Open the new data source from the list — the ID is shown on the detail page. Your engineer will need this ID; it tells GrowPanel which data source each customer, plan and invoice belongs to.


Hand it to your engineer

Send these to whoever's building the integration:

  • The API key (the access_token from setup)
  • The data source ID
  • The link to Building integrations — the full engineering guide, including schemas, sync patterns, and skeleton code in JavaScript and Python

Once the integration is live, data appears on the data source detail page as it's imported. The same reports, dashboards and customer detail views that work with native connectors work with custom-pushed data.


What gets pushed

In short: three kinds of records.

TypeWhat it represents
CustomersWho is paying you
PlansWhat they're paying for — pricing, billing interval
InvoicesRecords of what they actually paid

GrowPanel reconstructs subscription state from the invoice history — your engineer doesn't need to send "subscription" objects, just invoices. New, expansion, contraction, churn and reactivation movements are detected automatically by diffing each new invoice against the customer's history.

The full data model, required fields, and code examples are in Building integrations.


Once data is flowing

After the first invoices land:

  • Dashboards and reports show the data alongside any other data sources.
  • The customer list and customer detail pages show every customer the integration has pushed.
  • The data source detail page shows when the most recent data arrived.

If something looks off (a customer is missing, MRR doesn't match), the customer detail page shows every invoice GrowPanel received from your integration — usually enough for the developer to find the gap.


Need help?

For setup questions, use the support widget in-app or email [email protected]. For integration design help (schema questions, sync patterns, getting the numbers to match), point your engineer at Building integrations — and they're welcome to email us too if they want a design review before shipping.