Manage rate catalog (pricing for services)
Billing & Ledger Service API (1.0.0)
The Billing & Ledger Service is the financial engine of the NPS Billing Platform. It manages pricing (Rates, Rate Cards), subscription configurations, allocation rules for split billing scenarios (divorced households, subsidies), charge lifecycle, and double-entry accounting ledger.
Charges follow a strict lifecycle with immutability after invoicing:
- PENDING → Created but not validated
- BILLED → Validated and ready to invoice (still editable)
- INVOICED → Invoiced (IMMUTABLE - moved to SettledCharge)
- PAID → Paid directly without invoice
- VOID → Cancelled
Defines how charges are split between multiple accounts (e.g., divorced parents, subsidy agencies). Three rule types:
- RESPONSIBLE_PARTY: Percentage-based split
- COVERAGE_TRANSFER: Fixed amount covered (e.g., $25 subsidy per charge)
- BILLING_CAP: Maximum amount per period
All financial transactions follow the accounting equation (Debits = Credits). Journal entries are immutable once created - corrections use adjustment entries.
- Mock serverhttps://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions
- UAT serverhttps://api.uat.nelnetpay.com/billing/subscriptions
- Production serverhttps://api.nelnetpay.com/billing/subscriptions
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions?billable_entity_id=497f6eca-6276-4993-bfeb-53cbbbba6f08&status=ACTIVE&page=1&page_size=50' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'Successful response
Billing frequency for subscriptions
Day of week (1-7) for WEEKLY/BIWEEKLY, day of month (1-31) for MONTHLY
IANA timezone for billing calculations
Business version number for change tracking (subscription configuration history)
Optimistic locking version (managed by Hibernate @Version). Prevents concurrent update conflicts.
{ "results": [ { … } ], "pagination": { "totalRecords": 100, "currentPage": 1, "totalPages": 10, "nextPage": 2, "prevPage": null } }
Request
Create a new subscription linking a billable entity to a rate.
Validation: The billable entity must be associated with ALL accounts referenced in the allocation configuration. This is validated via Profile Service.
Billing Frequency:
DAILY- Charges generated dailyWEEKLY- Charges generated weekly (anchorDay = day of week 1-7)BIWEEKLY- Charges generated every two weeksMONTHLY- Charges generated monthly (anchorDay = day of month 1-31)
Billing frequency for subscriptions
- Mock serverhttps://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions
- UAT serverhttps://api.uat.nelnetpay.com/billing/subscriptions
- Production serverhttps://api.nelnetpay.com/billing/subscriptions
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"billableEntityId": "550e8400-e29b-41d4-a716-446655440010",
"rateId": "550e8400-e29b-41d4-a716-446655440001",
"allocationConfigId": "550e8400-e29b-41d4-a716-446655440020",
"discountRateIds": [
"550e8400-e29b-41d4-a716-446655440002"
],
"billingFrequency": "WEEKLY",
"billingAnchorDay": 1,
"billingTimezone": "America/New_York",
"startDate": "2026-01-20"
}'Subscription created successfully
Billing frequency for subscriptions
Day of week (1-7) for WEEKLY/BIWEEKLY, day of month (1-31) for MONTHLY
Business version number for change tracking (subscription configuration history)
Optimistic locking version (managed by Hibernate @Version). Prevents concurrent update conflicts.
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5", "billableEntityId": "efd73805-0b19-4de3-9f1e-a64de8c44765", "rateId": "dc6263b0-e8fb-4144-a111-53fde6c86836", "allocationConfigId": "dacda6b8-3e25-4031-b6a4-1ec5aa108ab2", "discountRateIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "billingFrequency": "DAILY", "billingAnchorDay": 1, "billingTimezone": "America/New_York", "startDate": "2019-08-24", "endDate": "2019-08-24", "status": "ACTIVE", "version": 0, "optimisticLockVersion": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }
- Mock serverhttps://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions/{subscriptionId}
- UAT serverhttps://api.uat.nelnetpay.com/billing/subscriptions/{subscriptionId}
- Production serverhttps://api.nelnetpay.com/billing/subscriptions/{subscriptionId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions/{subscriptionId}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'Successful response
Billing frequency for subscriptions
Day of week (1-7) for WEEKLY/BIWEEKLY, day of month (1-31) for MONTHLY
Business version number for change tracking (subscription configuration history)
Optimistic locking version (managed by Hibernate @Version). Prevents concurrent update conflicts.
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5", "billableEntityId": "efd73805-0b19-4de3-9f1e-a64de8c44765", "rateId": "dc6263b0-e8fb-4144-a111-53fde6c86836", "allocationConfigId": "dacda6b8-3e25-4031-b6a4-1ec5aa108ab2", "discountRateIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "billingFrequency": "DAILY", "billingAnchorDay": 1, "billingTimezone": "America/New_York", "startDate": "2019-08-24", "endDate": "2019-08-24", "status": "ACTIVE", "version": 0, "optimisticLockVersion": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }
- Mock serverhttps://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions/{subscriptionId}
- UAT serverhttps://api.uat.nelnetpay.com/billing/subscriptions/{subscriptionId}
- Production serverhttps://api.nelnetpay.com/billing/subscriptions/{subscriptionId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PATCH \
'https://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions/{subscriptionId}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"rateId": "dc6263b0-e8fb-4144-a111-53fde6c86836",
"allocationConfigId": "dacda6b8-3e25-4031-b6a4-1ec5aa108ab2",
"discountRateIds": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"billingFrequency": "DAILY",
"billingAnchorDay": 1,
"billingTimezone": "string",
"endDate": "2019-08-24"
}'Subscription updated successfully
Billing frequency for subscriptions
Day of week (1-7) for WEEKLY/BIWEEKLY, day of month (1-31) for MONTHLY
Business version number for change tracking (subscription configuration history)
Optimistic locking version (managed by Hibernate @Version). Prevents concurrent update conflicts.
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5", "billableEntityId": "efd73805-0b19-4de3-9f1e-a64de8c44765", "rateId": "dc6263b0-e8fb-4144-a111-53fde6c86836", "allocationConfigId": "dacda6b8-3e25-4031-b6a4-1ec5aa108ab2", "discountRateIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "billingFrequency": "DAILY", "billingAnchorDay": 1, "billingTimezone": "America/New_York", "startDate": "2019-08-24", "endDate": "2019-08-24", "status": "ACTIVE", "version": 0, "optimisticLockVersion": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }
- Mock serverhttps://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions/{subscriptionId}/pause
- UAT serverhttps://api.uat.nelnetpay.com/billing/subscriptions/{subscriptionId}/pause
- Production serverhttps://api.nelnetpay.com/billing/subscriptions/{subscriptionId}/pause
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
'https://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions/{subscriptionId}/pause' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'Subscription paused successfully
Billing frequency for subscriptions
Day of week (1-7) for WEEKLY/BIWEEKLY, day of month (1-31) for MONTHLY
Business version number for change tracking (subscription configuration history)
Optimistic locking version (managed by Hibernate @Version). Prevents concurrent update conflicts.
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5", "billableEntityId": "efd73805-0b19-4de3-9f1e-a64de8c44765", "rateId": "dc6263b0-e8fb-4144-a111-53fde6c86836", "allocationConfigId": "dacda6b8-3e25-4031-b6a4-1ec5aa108ab2", "discountRateIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "billingFrequency": "DAILY", "billingAnchorDay": 1, "billingTimezone": "America/New_York", "startDate": "2019-08-24", "endDate": "2019-08-24", "status": "ACTIVE", "version": 0, "optimisticLockVersion": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }
- Mock serverhttps://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions/{subscriptionId}/resume
- UAT serverhttps://api.uat.nelnetpay.com/billing/subscriptions/{subscriptionId}/resume
- Production serverhttps://api.nelnetpay.com/billing/subscriptions/{subscriptionId}/resume
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
'https://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions/{subscriptionId}/resume' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'Subscription resumed successfully
Billing frequency for subscriptions
Day of week (1-7) for WEEKLY/BIWEEKLY, day of month (1-31) for MONTHLY
Business version number for change tracking (subscription configuration history)
Optimistic locking version (managed by Hibernate @Version). Prevents concurrent update conflicts.
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5", "billableEntityId": "efd73805-0b19-4de3-9f1e-a64de8c44765", "rateId": "dc6263b0-e8fb-4144-a111-53fde6c86836", "allocationConfigId": "dacda6b8-3e25-4031-b6a4-1ec5aa108ab2", "discountRateIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "billingFrequency": "DAILY", "billingAnchorDay": 1, "billingTimezone": "America/New_York", "startDate": "2019-08-24", "endDate": "2019-08-24", "status": "ACTIVE", "version": 0, "optimisticLockVersion": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }
- Mock serverhttps://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions/{subscriptionId}/cancel
- UAT serverhttps://api.uat.nelnetpay.com/billing/subscriptions/{subscriptionId}/cancel
- Production serverhttps://api.nelnetpay.com/billing/subscriptions/{subscriptionId}/cancel
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
'https://docs.nelnetpay.com/_mock/apis/billing-ledger-service/subscriptions/{subscriptionId}/cancel' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"effectiveDate": "2019-08-24",
"reason": "string"
}'Subscription cancelled successfully
Billing frequency for subscriptions
Day of week (1-7) for WEEKLY/BIWEEKLY, day of month (1-31) for MONTHLY
Business version number for change tracking (subscription configuration history)
Optimistic locking version (managed by Hibernate @Version). Prevents concurrent update conflicts.
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5", "billableEntityId": "efd73805-0b19-4de3-9f1e-a64de8c44765", "rateId": "dc6263b0-e8fb-4144-a111-53fde6c86836", "allocationConfigId": "dacda6b8-3e25-4031-b6a4-1ec5aa108ab2", "discountRateIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "billingFrequency": "DAILY", "billingAnchorDay": 1, "billingTimezone": "America/New_York", "startDate": "2019-08-24", "endDate": "2019-08-24", "status": "ACTIVE", "version": 0, "optimisticLockVersion": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }