curl --request POST \
--url https://api.meetcampfire.com/rr/api/v1/contracts/{contract_id}/bundles \
--header 'Content-Type: application/json' \
--data '
{
"contract": 9001,
"bundle_name": "Standard Allocation Bundle",
"start_date": "2026-01-01",
"end_date": "2026-12-31",
"rebalance_journal_entries_indefinitely": false,
"lines": [
{
"product": 1201,
"amount": "7000.00"
},
{
"product": 1202,
"amount": "3000.00"
}
]
}
'{
"id": 123,
"is_deleted": false,
"deleted_at": "2023-11-07T05:31:56Z",
"lines": [
{
"id": 123,
"is_deleted": false,
"deleted_at": "2023-11-07T05:31:56Z",
"product_name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"last_modified_at": "2023-11-07T05:31:56Z",
"customer": 123,
"amount": 0,
"product": 123
}
],
"bundle_name": "<string>",
"start_date": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"last_modified_at": "2023-11-07T05:31:56Z",
"customer": 123,
"contract": 123,
"end_date": "2023-12-25",
"rebalance_journal_entries_indefinitely": false,
"bundle_description": "<string>",
"use_daily_accounting": true,
"proration_method": "standard",
"use_catchup": true,
"catchup_date": "2023-12-25"
}Revenue Recognition
Create Contract Bundle
Create a new contract bundle.
Evergreen vs standard:
- Standard contracts require a fixed bundle end_date.
- Evergreen contracts allow end_date to be null (open-ended) or set to a billing-period end date. Evergreen bundle start/end dates must align with billing period boundaries.
Evergreen-specific option:
- rebalance_journal_entries_indefinitely=true keeps invoice-journal rebalancing in sync as the evergreen contract extends.
POST
/
rr
/
api
/
v1
/
contracts
/
{contract_id}
/
bundles
curl --request POST \
--url https://api.meetcampfire.com/rr/api/v1/contracts/{contract_id}/bundles \
--header 'Content-Type: application/json' \
--data '
{
"contract": 9001,
"bundle_name": "Standard Allocation Bundle",
"start_date": "2026-01-01",
"end_date": "2026-12-31",
"rebalance_journal_entries_indefinitely": false,
"lines": [
{
"product": 1201,
"amount": "7000.00"
},
{
"product": 1202,
"amount": "3000.00"
}
]
}
'{
"id": 123,
"is_deleted": false,
"deleted_at": "2023-11-07T05:31:56Z",
"lines": [
{
"id": 123,
"is_deleted": false,
"deleted_at": "2023-11-07T05:31:56Z",
"product_name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"last_modified_at": "2023-11-07T05:31:56Z",
"customer": 123,
"amount": 0,
"product": 123
}
],
"bundle_name": "<string>",
"start_date": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"last_modified_at": "2023-11-07T05:31:56Z",
"customer": 123,
"contract": 123,
"end_date": "2023-12-25",
"rebalance_journal_entries_indefinitely": false,
"bundle_description": "<string>",
"use_daily_accounting": true,
"proration_method": "standard",
"use_catchup": true,
"catchup_date": "2023-12-25"
}Path Parameters
Body
application/jsonapplication/x-www-form-urlencodedmultipart/form-data
Show child attributes
Show child attributes
Maximum string length:
250Bundle end date. Required for standard contracts. For evergreen contracts this may be null to follow the contract timeline, or set to a billing-period end date.
Should only be used for Evergreen contracts. When true, linked invoice journal entries are rebalanced on each evergreen contract extension.
Maximum string length:
250standard- Standard (actual month length)thirty_day- Fixed 30-day monthdaily- Daily
Available options:
standard, thirty_day, daily Response
201 - application/json
Show child attributes
Show child attributes
Maximum string length:
250Bundle end date. Required for standard contracts. For evergreen contracts this may be null to follow the contract timeline, or set to a billing-period end date.
Should only be used for Evergreen contracts. When true, linked invoice journal entries are rebalanced on each evergreen contract extension.
Maximum string length:
250standard- Standard (actual month length)thirty_day- Fixed 30-day monthdaily- Daily
Available options:
standard, thirty_day, daily