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.
Download OpenAPI description
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
Request
Initiate a refund for one or more invoices, charges, or as a standalone refund.
Refund Types:
- Invoice Refund: Refund one or more invoices
- Charge Refund: Refund one or more specific charges
- Standalone Refund: Refund without reference to an invoice/charge
Process:
- Refund request is validated
- Billing Service calls Payment API to process refund
- On success, journal entries are created (DR Refund Expense, CR Bank)
- Optionally, receipt is sent via Receipt Service
Security
OAuth2
- Mock serverhttps://docs.nelnetpay.com/_mock/apis/billing-ledger-service/refunds
- UAT serverhttps://api.uat.nelnetpay.com/billing/refunds
- Production serverhttps://api.nelnetpay.com/billing/refunds
- 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/refunds \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"refundType": "INVOICE",
"invoiceIds": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"chargeIds": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"accountId": "3d07c219-0a88-45be-9cfc-91e9d095a1e9",
"amount": 1,
"reason": "string",
"sendReceipt": false,
"metadata": {
"property1": "string",
"property2": "string"
}
}'Response
application/json
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5", "refundType": "INVOICE", "invoiceIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "chargeIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "accountId": "3d07c219-0a88-45be-9cfc-91e9d095a1e9", "amount": 0, "status": "PENDING", "reason": "string", "paymentTransactionId": "string", "journalEntryId": "72600ee4-b304-47f3-89cd-f685d2692490", "failureReason": "string", "metadata": { "property1": "string", "property2": "string" }, "optimisticLockVersion": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z" }
- Mock serverhttps://docs.nelnetpay.com/_mock/apis/billing-ledger-service/refunds
- UAT serverhttps://api.uat.nelnetpay.com/billing/refunds
- Production serverhttps://api.nelnetpay.com/billing/refunds
- 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/refunds?status=PENDING&refund_type=INVOICE&page=1&page_size=50' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'Response
application/json
{ "results": [ { … } ], "pagination": { "totalRecords": 100, "currentPage": 1, "totalPages": 10, "nextPage": 2, "prevPage": null } }
- Mock serverhttps://docs.nelnetpay.com/_mock/apis/billing-ledger-service/refunds/{refundId}
- UAT serverhttps://api.uat.nelnetpay.com/billing/refunds/{refundId}
- Production serverhttps://api.nelnetpay.com/billing/refunds/{refundId}
- 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/refunds/{refundId}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'Response
application/json
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5", "refundType": "INVOICE", "invoiceIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "chargeIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "accountId": "3d07c219-0a88-45be-9cfc-91e9d095a1e9", "amount": 0, "status": "PENDING", "reason": "string", "paymentTransactionId": "string", "journalEntryId": "72600ee4-b304-47f3-89cd-f685d2692490", "failureReason": "string", "metadata": { "property1": "string", "property2": "string" }, "optimisticLockVersion": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z" }
- Mock serverhttps://docs.nelnetpay.com/_mock/apis/billing-ledger-service/refunds/{refundId}/status
- UAT serverhttps://api.uat.nelnetpay.com/billing/refunds/{refundId}/status
- Production serverhttps://api.nelnetpay.com/billing/refunds/{refundId}/status
- 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/refunds/{refundId}/status' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'Response
application/json
{ "refundId": "3324897f-393a-4bf6-b3af-0b999cbc2521", "status": "PENDING", "paymentGatewayStatus": "string", "lastCheckedAt": "2019-08-24T14:15:22Z" }