Create & Book Business Loan
Business loans are managed under the /business-loans resource. Loan IDs use
the BL. prefix. A loan moves through a main status, and while awaiting a
credit decision it also carries a separate decision status.
Loan types
Section titled “Loan types”The type you set at creation determines amortization and whether withdrawals
are allowed.
type | Description |
|---|---|
DURATION_ANNUITY | Fixed-term loan with annuity (level) payments. |
DURATION_STRAIGHT | Fixed-term loan with straight amortization. |
DURATION_BULLET | Fixed-term loan, principal repaid at maturity. |
NON_DURATION_REVOLVING_CREDIT | Open-ended revolving credit line. Only this type supports withdrawals. |
Status model
Section titled “Status model”Main status (mainStatus)
Section titled “Main status (mainStatus)”| Status | Meaning |
|---|---|
CREATED | Created, not yet activated. |
ARCHIVED | Archived before activation (reversible). |
PENDING_DECISION | Activated and awaiting a credit decision. |
DENIED | Credit decision denied. Terminal. |
ACTIVATED | Credit decision approved; loan is live. |
PAUSED | Temporarily paused. |
CLOSED | Fully repaid and closed. Terminal. |
STOPPED | Terminated. Terminal. |
CREATED ──activate──> PENDING_DECISION ──approve──> ACTIVATED ──> PAUSED │ │ │ │ │ └────────deny───────> DENIED │ │ └──archive──> ARCHIVED └──> CLOSED / STOPPEDDecision status (decisionStatusCode)
Section titled “Decision status (decisionStatusCode)”While mainStatus is PENDING_DECISION, the loan also carries a decision
status used to track the underwriting workflow: PENDING,
READY_FOR_DECISION, WAITING, REFINANCE, and the terminal DECIDED. Both
approve and deny set the decision status to DECIDED.
End-to-end flow
Section titled “End-to-end flow”-
Create the loan.
Terminal window curl -X POST "https://$HOST/business-loans" \-H "Authorization: Bearer $JWT" \-H "Content-Type: application/json" \-d '{"clientId": "C.100100","type": "DURATION_ANNUITY","currency": "SEK","total": "100000.00","loanProfileCode": "<profile-code>"}'The loan is created with
mainStatus = CREATED. Required right:CreateBusinessLoan. -
Activate it.
Pass
?activate=1on the create call to create and activate in one step (this is what the Operations Portal does), or activate an existingCREATEDloan separately. Activation:- sets
mainStatustoPENDING_DECISION, - sets
decisionStatusCodetoPENDING, - generates the payment reference (OCR),
- attaches the loan profile resolved from
loanProfileCode+currency.
Terminal window curl -X POST "https://$HOST/business-loans?activate=1" \-H "Authorization: Bearer $JWT" \-H "Content-Type: application/json" \-d '{ "clientId": "C.100100", "type": "DURATION_ANNUITY", "currency": "SEK", "total": "100000.00", "loanProfileCode": "<profile-code>" }' - sets
-
(Optional) Move the decision status as underwriting progresses.
Terminal window curl -X PUT "https://$HOST/business-loans/$BL_ID/credit-decision/move" \-H "Authorization: Bearer $JWT" \-H "Content-Type: application/json" \-d '{ "status": "READY_FOR_DECISION" }'Only allowed while
mainStatusisPENDING_DECISIONand the loan has not already beenDECIDED. Required right:UpdateCreditDecisionStatus. -
Approve or deny the credit decision.
Approve (right
CreditDecisionApproveBusinessLoans):Terminal window curl -X PUT "https://$HOST/business-loans/$BL_ID/credit-decision/approve" \-H "Authorization: Bearer $JWT"Approval moves
mainStatustoACTIVATED, setsdecisionStatusCodetoDECIDED, and books the loan:- For fixed-term loans, creates a
BUSINESS_LOAN_BOOKEDfinancial event for the approvedtotal. Revolving credit starts at a zero balance, so no booked event is created up front. - Creates the loan’s client (fund) account and payment reference.
- Books any initial fees per their charge method (a
BEFORE_PAYOUTfee is booked then written off against the payout;INSTALLMENT_ALLfees are spread across installments instead). - Seeds the repayment ledger events.
Deny (right
CreditDecisionDenyBusinessLoans):Terminal window curl -X PUT "https://$HOST/business-loans/$BL_ID/credit-decision/deny" \-H "Authorization: Bearer $JWT"Denial sets
mainStatustoDENIEDanddecisionStatusCodetoDECIDED. This is terminal. - For fixed-term loans, creates a
-
Read state and related detail.
Terminal window curl "https://$HOST/business-loans/$BL_ID" -H "Authorization: Bearer $JWT"Sub-resources:
/fees,/guarantors,/profile,/financial-events.
Withdrawals (revolving credit only)
Section titled “Withdrawals (revolving credit only)”Withdrawals apply only to NON_DURATION_REVOLVING_CREDIT loans and use a
dual-confirmation flow.
curl -X PUT "https://$HOST/business-loans/$BL_ID/withdraw" \ -H "Authorization: Bearer $JWT" \ -H "Content-Type: application/json" \ -d '{ "amount": 15000.00, "requestedDate": "2026-04-15", "description": "Operational costs" }'Validation: the amount must be greater than zero and must not exceed the
available balance; requestedDate, if given, must be today or later; the loan
must be ACTIVATED and of revolving-credit type; and no other withdrawal
request may already be pending. Required right:
CreateBusinessLoanWithdrawal.
The available balance is exposed read-only on the loan as totalLoanApproved,
totalLoanUsed, and totalLoanAvailable (computed only while ACTIVATED or
PAUSED).
Financial events
Section titled “Financial events”Every monetary change is recorded as a financial event
(GET /business-loans/<id>/financial-events). Common type codes:
| Code | When |
|---|---|
BUSINESS_LOAN_BOOKED | Loan booked on approval (fixed-term loans). |
BUSINESS_LOAN_WITHDRAWAL | Approved withdrawal on revolving credit. |
BUSINESS_LOAN_PAYMENT | Payment received. |
BUSINESS_LOAN_FEE / BUSINESS_LOAN_INTEREST | Fee or interest added. |
BUSINESS_LOAN_FEE_WRITE_OFF / BUSINESS_LOAN_INTEREST_WRITE_OFF | Fee or interest written off. |
BUSINESS_LOAN_INSTALLMENT_INVOICE_FINANCED / BUSINESS_LOAN_INSTALLMENT_SERVICE_PAYMENT | Installment booked from an invoice. |
The full field surface for each call is in the reference under the business-loans tag.