cURL
curl --request POST \
--url https://us.api.flexprice.io/v1/revenue_reports/rollforward \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"currency": "<string>",
"period_start": "2023-11-07T05:31:56Z",
"accounts": [],
"contract_ids": [
"<string>"
],
"customer_ids": [
"<string>"
],
"group_by": [],
"limit": 500,
"offset": 1,
"period_end": "2023-11-07T05:31:56Z",
"pob_ids": [
"<string>"
],
"posted_by": "<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_rollforward(currency="Moldovan Leu", period_start=parse_datetime("2025-06-02T22:16:06.570Z"))
# 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.getRevenueRollforward({
currency: "Moldovan Leu",
periodStart: new Date("2025-06-02T22:16:06.570Z"),
});
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.GetRevenueRollforward(ctx, types.RollforwardRequest{
Currency: "Moldovan Leu",
PeriodStart: types.MustTimeFromString("2025-06-02T22:16:06.570Z"),
})
if err != nil {
log.Fatal(err)
}
if res.RollforwardResponse != nil {
// handle response
}
}{
"items": [
{
"account": "cash",
"closing": "<string>",
"contract_id": "<string>",
"customer_id": "<string>",
"movements": {},
"opening": "<string>",
"period": "<string>",
"pob_id": "<string>"
}
],
"pagination": {
"limit": 123,
"offset": 123,
"total": 123
},
"totals": [
{
"account": "cash",
"closing": "<string>",
"contract_id": "<string>",
"customer_id": "<string>",
"movements": {},
"opening": "<string>",
"period": "<string>",
"pob_id": "<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 rollforward
Use when explaining how deferred revenue, unbilled receivable or another ledger account moved in ended months: opening balance, movements by category (invoiced, earned, adjustments, payments, refunds) and closing balance, optionally per customer, contract or performance obligation.
POST
/
revenue_reports
/
rollforward
cURL
curl --request POST \
--url https://us.api.flexprice.io/v1/revenue_reports/rollforward \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"currency": "<string>",
"period_start": "2023-11-07T05:31:56Z",
"accounts": [],
"contract_ids": [
"<string>"
],
"customer_ids": [
"<string>"
],
"group_by": [],
"limit": 500,
"offset": 1,
"period_end": "2023-11-07T05:31:56Z",
"pob_ids": [
"<string>"
],
"posted_by": "<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_rollforward(currency="Moldovan Leu", period_start=parse_datetime("2025-06-02T22:16:06.570Z"))
# 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.getRevenueRollforward({
currency: "Moldovan Leu",
periodStart: new Date("2025-06-02T22:16:06.570Z"),
});
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.GetRevenueRollforward(ctx, types.RollforwardRequest{
Currency: "Moldovan Leu",
PeriodStart: types.MustTimeFromString("2025-06-02T22:16:06.570Z"),
})
if err != nil {
log.Fatal(err)
}
if res.RollforwardResponse != nil {
// handle response
}
}{
"items": [
{
"account": "cash",
"closing": "<string>",
"contract_id": "<string>",
"customer_id": "<string>",
"movements": {},
"opening": "<string>",
"period": "<string>",
"pob_id": "<string>"
}
],
"pagination": {
"limit": 123,
"offset": 123,
"total": 123
},
"totals": [
{
"account": "cash",
"closing": "<string>",
"contract_id": "<string>",
"customer_id": "<string>",
"movements": {},
"opening": "<string>",
"period": "<string>",
"pob_id": "<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
Rollforward request
YYYY-MM
defaults to [deferred_revenue]
Available options:
cash, accounts_receivable, unbilled_receivable, deferred_revenue, customer_credit, tax_payable, revenue, contra_revenue Available options:
customer_id, contract_id, pob_id item rows per page; totals are never paged
Required range:
0 <= x <= 1000Required range:
x >= 0YYYY-MM, an ended month; defaults to period_start
only entries posted at or before it: the books as they were then

