Capitalize Income
Operational Use Cases
- Deferred fee recognition: Move onboarding or service fees into the loan balance and recognize them gradually.
- Promotional interest holidays: Capitalize interest that was deferred upfront on Dynamic loans.
- Merchant-funded incentives: Spread incentives over the loan’s life while keeping accounting clean.
Supported only on the Dynamic repayment schedule engine with income capitalization enabled on the product. A scheduled amortization job posts the CAPITALIZED_INCOME_AMORTIZATION transactions over time.
Lifecycle Snapshot
flowchart LR
A[Identify amount to defer] --> B[Submit capitalized income command]
B --> C[Deferred balance stored on loan]
C --> D[Scheduled job amortizes into income]
D --> E{Need adjustment?}
E -->|Yes| F[Submit capitalized income adjustment]
E -->|No| G[Continue scheduled amortization]
API Playbook
- Add capitalized income
POST /v1/loans/{loanId}/transactions?command=capitalizedIncome
{
"locale": "en",
"dateFormat": "dd MMM yyyy",
"transactionDate": "05 Jan 2025",
"transactionAmount": 95.00,
"note": "Deferred onboarding fee",
"externalId": "CI-2025-01-05-ONBOARD"
}Validations:
- Loan must be Active, Dynamic, interest-bearing, and already disbursed.
- Sum of disbursed principal + capitalized income cannot exceed the approved (or over-applied) amount.
- Adjust
Amount cannot exceed the remaining unrecognized balance tied to the original transaction.
POST /v1/loans/{loanId}/transactions/{capitalizedIncomeTxnId}?command=capitalizedIncomeAdjustment { "locale": "en", "dateFormat": "dd MMM yyyy", "transactionDate": "20 Jan 2025", "transactionAmount": 15.00, "note": "Partial waiver" }
Tips for Operations Teams
- Use
externalIdor notes if you need to map entries back to partner approvals. - Track deferred vs. recognized amounts via your finance dashboards so accounting can reconcile revenue properly.
- Capitalized income only defers recognition. Schedule the capitalized-income amortization cron job daily so
CAPITALIZED_INCOME_AMORTIZATIONtransactions move the liability into income; otherwise the deferred balance will remain on the books. - When the incentive requires actual cash settlement, process that transfer through the Payments API first, then post the capitalized income entry once funds clear.
How amortization behaves with missing or early payments
Embarc amortizes deferred income by time, not by borrower cash flow. The equal-amortization strategy calculates the day-weighted portion between the capitalization date and maturity. Therefore:
- Missed installments do not pause revenue recognition—the job still amortizes based on elapsed days.
- Partial/early payments also do not change the schedule; the amortization job keeps recognizing the planned amount until the deferred balance reaches zero.
- If the loan closes early (prepay, foreclosure, write-off, charge-off, or normal close), the closure/charge-off hooks run the same amortization routine to recognize whatever is left immediately, so no deferred balance lingers on the books.
Document this policy for auditors so they understand that revenue recognition follows the configured amortization strategy rather than actual borrower payments.
Baseline Example (Dynamic Loan B)
After installment #3, Baseline B still has USD 300 outstanding. Suppose a USD 18.00 onboarding fee must be recognised evenly across the final three installments. Posting capitalizedIncome for USD 18.00 on 15 Feb 2026 yields:
| Date | Event | Deferred income balance | Notes |
|---|---|---|---|
| 15 Feb 2026 | capitalizedIncome transaction | 18.00 | Fee moved into the capitalised bucket instead of P&L. |
| 21 Feb 2026 | Amortization job | 12.00 | CAPITALIZED_INCOME_AMORTIZATION posts USD 6.00, tied to installment #4. |
| 07 Mar 2026 | Next run | 6.00 | Another USD 6.00 recognised with installment #5. |
| 21 Mar 2026 | Final run | 0.00 | Remaining USD 6.00 recognised alongside installment #6. |
Accounting sees three matching journal entries (debit deferred income, credit income) so revenue is recognised gradually while the borrower still pays only the standard installment amounts.
Transactions created
| Date | Type | Amount (USD) | Allocation (Principal / Interest / Fee) | Notes |
|---|---|---|---|---|
| 15 Feb 2026 | CAPITALIZED_INCOME | 18.00 | 0.00 / 0.00 / 18.00 | Deferred onboarding fee. |
| 21 Feb 2026 | CAPITALIZED_INCOME_AMORTIZATION | 6.00 | 0.00 / 0.00 / 6.00 | Recognition tied to installment #4. |
| 07 Mar 2026 | CAPITALIZED_INCOME_AMORTIZATION | 6.00 | 0.00 / 0.00 / 6.00 | Recognition tied to installment #5. |
| 21 Mar 2026 | CAPITALIZED_INCOME_AMORTIZATION | 6.00 | 0.00 / 0.00 / 6.00 | Recognition tied to installment #6. |
Loan summary delta
| Metric | Before | After CAPITALIZED_INCOME | Notes |
|---|---|---|---|
capitalizedIncomeBalance | USD 0.00 | USD 18.00 | Immediately after posting. |
| After first amortization | USD 12.00 | Drops by USD 6.00 each run until zero. | |
| Installment totals | Unchanged | Borrower still pays the standard installment; amortization is a bookkeeping entry. |
Accounting snapshot
| Entry | Debit | Credit | Amount |
|---|---|---|---|
| Capitalize fee | Loans Receivable (112601) | Deferred Capitalized Income (212500) | USD 18.00 |
| Amortization (per run) | Deferred Capitalized Income (212500) | Fee/Interest Income (405000) | USD 6.00 |
Verification checklist
GET /v1/loans/{loanId}?associations=transactions,loanSummaryto confirm the new transaction types and the deferred balance.- Run/trigger the capitalized-income amortization job and recheck the deferred balance until it reaches zero.
- Review GL postings (if accrual accounting is enabled) to ensure the liability/income accounts match product configuration.
Sandbox request template
POST /v1/loans/{{baselineDynamicLoanId}}/transactions?command=capitalizedIncome
{
"locale": "en",
"dateFormat": "dd MMM yyyy",
"transactionDate": "15 Feb 2026",
"transactionAmount": 18.00,
"note": "Deferred onboarding fee",
"externalId": "CI-BL-B-0001"
}After posting, run the amortization job (or wait for the scheduled cron) and use the verification checklist to confirm the balance declines and journal entries are produced.
Updated about 1 month ago
