Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.getcarbon.co/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The Carbon Lending API allows fintech partners to originate business loans for their own end-customers. The full flow — from customer enrollment through repayment — is orchestrated via REST API with webhook notifications at every lifecycle event.

Flow

Customer  ────►  Account  ────►  Enroll  ────►  KYC  ────►  Apply  ────►  Underwriting


Repayment  ◄────  Disburse  ◄────  Post-offer KYC  ◄────  Offer

Step-by-step

StepActionEndpoint
0Create the customer recordPOST /v1/customers
1Create a Carbon account for the customerPOST /v1/accounts
2Enroll customer for lendingPOST /v1/loans/customers/enroll
3Trigger KYC verificationPOST /v1/loans/customers/:id/verify-kyc
4Poll KYC until VERIFIEDGET /v1/loans/customers/:id/kyc-status
5Submit loan applicationPOST /v1/loans/apply
6Submit business profile dataPOST /v1/loans/:id/submit-underwriting
7Request bank statementPOST /v1/loans/:id/bank-statement
8Upload supporting documentsPOST /v1/loans/:id/documents
9Start credit decisioningPOST /v1/loans/:id/start-decisioning
10Poll until HAS_OFFERGET /v1/loans/:id
11Fetch offer detailsGET /v1/loans/:id/offer
12Set disbursement accountPOST /v1/loans/:id/disbursement-account
13Accept offerPOST /v1/loans/:id/offer/accept
14Agree to termsPOST /v1/loans/:id/terms/agree
15Upload board resolution (non-sole-prop)POST /v1/loans/:id/board-resolution
16Add guarantor (if required)POST /v1/loans/:id/guarantor
17Complete post-offer KYCPOST /v1/loans/:id/post-offer-kyc
Carbon admin disburses(internal)
18Charge repaymentsPOST /v1/loans/:loanId/repayments

Key Concepts

Amounts

All monetary values are in kobo. Divide by 100 to get Naira.
300,000 kobo = ₦3,000

application_id vs loan_id

  • application_id — UUID created when POST /v1/loans/apply succeeds. Used in all loan operation routes (:applicationId).
  • loan_id — Populated after disbursement. Used only for repayment routes (:loanId).

Idempotency

EndpointKey
POST /v1/loans/customers/enrollcustomer_id
POST /v1/loans/applyreference
Resending the same key returns the existing record rather than creating a duplicate.

Board Resolution

Required for all business customers except sole proprietors. Two-step process:
  1. Upload file via POST /v1/loans/:id/documents with file_tag = BOARD_RESOLUTION_DOC — save the file_url.
  2. Pass file_url to POST /v1/loans/:id/board-resolution.

Webhooks

Subscribe to real-time loan events via the webhook system. Each status change fires an event to your registered webhook URL.
EventTrigger
loan.application.receivedApplication submitted
loan.kyc.pendingKYC verification started
loan.offer.generatedOffer ready
loan.offer.acceptedOffer accepted
loan.offer.declinedOffer declined
loan.offer.expiredOffer expired
loan.application.declinedApplication rejected
loan.application.approvedApproved for disbursement
loan.disbursedFunds disbursed
loan.arrearsLoan in arrears
loan.closedLoan fully repaid
See the Webhooks guide for delivery details and retry behaviour.