Skip to content

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.

Key Concepts

Charge Lifecycle

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

Allocation Configuration

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

Double-Entry Ledger

All financial transactions follow the accounting equation (Debits = Credits). Journal entries are immutable once created - corrections use adjustment entries.

Monetary Values

All monetary amounts are stored as DECIMAL type in cents (e.g., 5000 = $50.00). Use DECIMAL or NUMERIC type (BigDecimal in Java) for precision and to avoid rounding errors. Never use integers or floating-point for money.

Languages
Servers
Mock server
https://docs.nelnetpay.com/_mock/apis/billing-ledger-service
UAT server
https://api.uat.nelnetpay.com/billing
Production server
https://api.nelnetpay.com/billing

Rates

Manage rate catalog (pricing for services)

Operations

RateCards

Manage rate card groupings for UI organization

Operations

Subscriptions

Manage billable entity subscriptions to rates

Operations

AllocationConfigurations

Manage charge allocation configurations for split billing

Operations

Charges

Manage billable charges (mutable pre-invoice state)

Operations

SettledCharges

Query settled charges (immutable post-invoice state)

Operations

Refunds

Manage refunds for invoices, charges, or standalone refunds

Operations

Adjustments

Manage manual adjustments and corrections

Operations

Ledger

Manage double-entry accounting ledger

Operations
Webhooks

Exports

Export data in CSV format for GL integrations

Operations

Export Charges to CSV

Request

Export charges to CSV format.

Includes both mutable charges and settled charges based on filters.

Security
OAuth2
Query
event_date_fromstring(date)

Filter charges with event date on or after this date

event_date_tostring(date)

Filter charges with event date on or before this date

statusstring

Filter by charge status

Enum"PENDING""BILLED""VOID"
include_settledboolean

Include settled charges in export

Default true
curl -i -X GET \
  'https://docs.nelnetpay.com/_mock/apis/billing-ledger-service/exports/charges?event_date_from=2019-08-24&event_date_to=2019-08-24&status=PENDING&include_settled=true' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

CSV file

Headers
Content-Dispositionstring
Example: "attachment; filename=\"charges-2026-01-20.csv\""
Bodytext/csv
string
Response
No content

Export Ledger Entries to CSV

Request

Export journal entries and lines to CSV format for GL integration.

Format: Mirrors webhook event structure for consistency. Can be directly imported into QuickBooks, Xero, Sage Intacct, etc.

Security
OAuth2
Query
entry_date_fromstring(date-time)

Filter journal entries on or after this date

entry_date_tostring(date-time)

Filter journal entries on or before this date

sourcestring

Filter by journal entry source

Enum"INVOICE""PAYMENT""REFUND""ADJUSTMENT""REMITTANCE"
account_codestring

Filter by specific account code

Enum"REVENUE""AR""CONTRA_REVENUE""CLEARING""BANK""FEE_EXPENSE""REFUND_EXPENSE"
curl -i -X GET \
  'https://docs.nelnetpay.com/_mock/apis/billing-ledger-service/exports/ledgerEntries?entry_date_from=2019-08-24T14%3A15%3A22Z&entry_date_to=2019-08-24T14%3A15%3A22Z&source=INVOICE&account_code=REVENUE' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

CSV file

Headers
Content-Dispositionstring
Example: "attachment; filename=\"ledger-entries-2026-01-20.csv\""
Bodytext/csv
string
Response
No content