cURL
curl --request POST \
--url https://us.api.flexprice.io/v1/revenue_reports/waterfall \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"currency": "<string>",
"period_end": "2023-11-07T05:31:56Z",
"period_start": "2023-11-07T05:31:56Z",
"as_of": "<string>",
"contract_ids": [
"<string>"
],
"customer_ids": [
"<string>"
],
"details": true,
"limit": 500,
"offset": 1,
"pob_ids": [
"<string>"
]
}
'from flexprice import Flexprice
from flexprice.utils import parse_datetime
with Flexprice(
api_key_auth="<YOUR_API_KEY_HERE>",
) as f_client:
res = f_client.revenue_reports.get_revenue_waterfall(currency="Dalasi", period_end=parse_datetime("2025-08-28T20:02:24.445Z"), period_start=parse_datetime("2024-03-13T15:39:09.277Z"))
# Handle response
print(res)import { Flexprice } from "@flexprice/sdk";
const flexprice = new Flexprice({
apiKeyAuth: "<YOUR_API_KEY_HERE>",
});
async function run() {
const result = await flexprice.revenueReports.getRevenueWaterfall({
currency: "Dalasi",
periodEnd: new Date("2025-08-28T20:02:24.445Z"),
periodStart: new Date("2024-03-13T15:39:09.277Z"),
});
console.log(result);
}
run();package main
import(
"context"
flexprice "github.com/flexprice/go-sdk/v2"
"github.com/flexprice/go-sdk/v2/types"
"github.com/flexprice/go-sdk/v2/models/types"
"log"
)
func main() {
ctx := context.Background()
s := flexprice.New(
flexprice.WithSecurity("<YOUR_API_KEY_HERE>"),
)
res, err := s.RevenueReports.GetRevenueWaterfall(ctx, types.WaterfallRequest{
Currency: "Dalasi",
PeriodEnd: types.MustTimeFromString("2025-08-28T20:02:24.445Z"),
PeriodStart: types.MustTimeFromString("2024-03-13T15:39:09.277Z"),
})
if err != nil {
log.Fatal(err)
}
if res.WaterfallResponse != nil {
// handle response
}
}{
"items": [
{
"cells": [
{
"deferred": "<string>",
"period": "<string>",
"revenue": {
"actual": "<string>",
"pending": "<string>",
"scheduled": "<string>",
"total": "<string>"
},
"unbilled": "<string>"
}
],
"contract_id": "<string>",
"customer_id": "<string>",
"pob_id": "<string>"
}
],
"pagination": {
"limit": 123,
"offset": 123,
"total": 123
},
"totals": [
{
"deferred": "<string>",
"period": "<string>",
"revenue": {
"actual": "<string>",
"pending": "<string>",
"scheduled": "<string>",
"total": "<string>"
},
"unbilled": "<string>"
}
]
}{
"code": "http_client_error",
"http_status_code": 123,
"message": "<string>"
}{
"code": "http_client_error",
"http_status_code": 123,
"message": "<string>"
}Revenue Reports
Get revenue waterfall
Use when showing revenue per customer, contract or performance obligation and month: actual (posted), pending (earned, not yet posted) and scheduled (invoiced, not yet earned), with optional month-end deferred and unbilled balances. Covers at most 36 months.
POST
/
revenue_reports
/
waterfall
cURL
curl --request POST \
--url https://us.api.flexprice.io/v1/revenue_reports/waterfall \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"currency": "<string>",
"period_end": "2023-11-07T05:31:56Z",
"period_start": "2023-11-07T05:31:56Z",
"as_of": "<string>",
"contract_ids": [
"<string>"
],
"customer_ids": [
"<string>"
],
"details": true,
"limit": 500,
"offset": 1,
"pob_ids": [
"<string>"
]
}
'from flexprice import Flexprice
from flexprice.utils import parse_datetime
with Flexprice(
api_key_auth="<YOUR_API_KEY_HERE>",
) as f_client:
res = f_client.revenue_reports.get_revenue_waterfall(currency="Dalasi", period_end=parse_datetime("2025-08-28T20:02:24.445Z"), period_start=parse_datetime("2024-03-13T15:39:09.277Z"))
# Handle response
print(res)import { Flexprice } from "@flexprice/sdk";
const flexprice = new Flexprice({
apiKeyAuth: "<YOUR_API_KEY_HERE>",
});
async function run() {
const result = await flexprice.revenueReports.getRevenueWaterfall({
currency: "Dalasi",
periodEnd: new Date("2025-08-28T20:02:24.445Z"),
periodStart: new Date("2024-03-13T15:39:09.277Z"),
});
console.log(result);
}
run();package main
import(
"context"
flexprice "github.com/flexprice/go-sdk/v2"
"github.com/flexprice/go-sdk/v2/types"
"github.com/flexprice/go-sdk/v2/models/types"
"log"
)
func main() {
ctx := context.Background()
s := flexprice.New(
flexprice.WithSecurity("<YOUR_API_KEY_HERE>"),
)
res, err := s.RevenueReports.GetRevenueWaterfall(ctx, types.WaterfallRequest{
Currency: "Dalasi",
PeriodEnd: types.MustTimeFromString("2025-08-28T20:02:24.445Z"),
PeriodStart: types.MustTimeFromString("2024-03-13T15:39:09.277Z"),
})
if err != nil {
log.Fatal(err)
}
if res.WaterfallResponse != nil {
// handle response
}
}{
"items": [
{
"cells": [
{
"deferred": "<string>",
"period": "<string>",
"revenue": {
"actual": "<string>",
"pending": "<string>",
"scheduled": "<string>",
"total": "<string>"
},
"unbilled": "<string>"
}
],
"contract_id": "<string>",
"customer_id": "<string>",
"pob_id": "<string>"
}
],
"pagination": {
"limit": 123,
"offset": 123,
"total": 123
},
"totals": [
{
"deferred": "<string>",
"period": "<string>",
"revenue": {
"actual": "<string>",
"pending": "<string>",
"scheduled": "<string>",
"total": "<string>"
},
"unbilled": "<string>"
}
]
}{
"code": "http_client_error",
"http_status_code": 123,
"message": "<string>"
}{
"code": "http_client_error",
"http_status_code": 123,
"message": "<string>"
}Authorizations
Enter your API key in the format x-api-key <api-key>*
Body
application/json
Waterfall request
YYYY-MM, at most 36 months from period_start
YYYY-MM
report date: pending and scheduled split here; defaults to now
month-end deferred and unbilled balances
Available options:
customer_id, contract_id, pob_id rows per page; totals are never paged
Required range:
0 <= x <= 1000Required range:
x >= 0
