Credilinq.ai Loans API
The Loans API from Credilinq.ai — 4 operation(s) for loans.
The Loans API from Credilinq.ai — 4 operation(s) for loans.
openapi: 3.0.0
info:
title: CrediLinq Authentication Loans API
description: 'CrediLinq embedded finance API: B2B PayLater and GMV Financing for platforms and marketplaces. Covers Auth0 token generation, merchant onboarding and eligibility, customer and director KYC, credit line and loan (drawdown) management, payments and reconciliation, reporting, and demographic reference data.'
version: '1.0'
contact:
name: CrediLinq Support
email: support@credilinq.ai
url: https://docs.credilinq.ai/
servers:
- url: https://sandbox-api.credilinq.ai
description: Sandbox
- url: https://stage-api.credilinq.ai
description: Staging
- url: https://api.credilinq.ai
description: Production
security:
- access-token: []
tags:
- name: Loans
paths:
/v1/loan/calculateloanschedule:
post:
operationId: DrawdownController_calculateRepaymentScheduleBNPL
summary: Preview Loan
description: ''
parameters:
- name: accept-language
in: header
description: 'Language of the response, supported languages: en-us, in'
schema:
type: string
default: en-us
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CalculateLoanScheduleV1Dto'
responses:
'200':
description: Preview Your Loan Details
content:
application/json:
schema:
$ref: '#/components/schemas/GetCalculateLoanResponse'
'400':
description: Invalid Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestDrawdownResponse'
'401':
description: Invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'403':
description: Forbidden resource
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
'404':
description: Requested Data Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerNotFoundResponse'
'500':
description: Internal Server Error, Some problem is there, please try after sometime
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
tags:
- Loans
security:
- access-token: []
/v1/loan:
post:
operationId: DrawdownController_createDrawdownBNPL
summary: Create Loan
description: ''
parameters:
- name: accept-language
in: header
description: 'Language of the response, supported languages: en-us, in'
schema:
type: string
default: en-us
- name: idempotency-key
in: header
description: Idempotency Key for retries
schema:
type: string
default: ''
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateLoanV1Dto'
responses:
'200':
description: Loan created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDrawdownResponse'
'400':
description: Invalid Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestDrawdownResponse'
'401':
description: Invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'403':
description: Forbidden resource
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
'404':
description: Requested Data Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerNotFoundResponse'
'500':
description: Internal Server Error, Some problem is there, please try after sometime
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
tags:
- Loans
security:
- access-token: []
/v1/loan/disburse:
post:
operationId: DrawdownController_disburseDrawdownBNPL
summary: Disburse loan
description: ''
parameters:
- name: accept-language
in: header
description: 'Language of the response, supported languages: en-us, in'
schema:
type: string
default: en-us
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DisburseLoanDto'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/DisburseDrawdownResponse'
'400':
description: Invalid Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestDrawdownResponse'
'401':
description: Invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'403':
description: Forbidden resource
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
'404':
description: Requested Data Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/DrawdownNotFoundResponse'
'500':
description: Internal Server Error, Some problem is there, please try after sometime
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
tags:
- Loans
security:
- access-token: []
/v1/loan/summary/{loanId}:
get:
operationId: DrawdownController_getDrawdownBNPL
summary: Loan Summary
description: ''
parameters:
- name: accept-language
in: header
description: 'Language of the response, supported languages: en-us, in'
schema:
type: string
default: en-us
- name: loanId
required: true
in: path
schema:
type: string
responses:
'200':
description: Loan summary details
content:
application/json:
schema:
$ref: '#/components/schemas/GetLoanSummaryResponse'
'401':
description: Invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
'403':
description: Forbidden resource
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
'404':
description: Requested Data Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/DrawdownNotFoundResponse'
'500':
description: Internal Server Error, Some problem is there, please try after sometime
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
tags:
- Loans
security:
- access-token: []
components:
schemas:
DisburseLoanDto:
type: object
properties:
loanId:
type: string
default: ''
example: c3eb1619-ff24-4773-97d8-b05264621e60
description: Loan Id
metadata:
type: string
description: Metadata for loans. It can be used for reporting, reconciliation purpose.
example: ''
required:
- loanId
LoanResponse:
type: object
properties:
loanId:
type: string
default: string
description: Id of the created loan
loanReferenceNo:
type: string
default: string
description: Reference Number of the created loan for eg. BNPL***
customerReferenceNo:
type: string
default: ''
description: Customer Reference number, for which loan is created
loanTerm:
type: number
example: 30
description: Duration of the loan. Based on loan terms selected at the cusomer level, The customer for whom loan is being created should be
enum:
- 30
- 45
- 60
- 90
- 120
- 150
- 180
- 210
- 240
- 270
- 300
- 330
- 360
default: 30
loanType:
type: string
description: "Type of loan\n \n We support these two types,\n \n 1. ```BNPL``` - Buyer Financing\n \n 2. ```GMV``` - Seller Financing"
example: BNPL
loanStatus:
type: string
description: "Status of loan\n \n We support these three statuses,\n \n 1. ```pending-for-approval``` - Loan is pending for approval\n \n 2. ```waiting-for-disbursal``` - Loan is pending for disbursal,\n \n 3. ```active``` - Loan is active,\n \n 4. ```rejected``` - Loan is rejected for some reason,\n \n 5. ```closed``` - Loan is paid & closed"
example: waiting-for-disbursal
disbursalAmount:
type: number
description: Loan Amount
default: 2000
totalDueAmount:
type: number
description: Total Loan Due Amount
default: 2000
loanDueDate:
type: string
description: Loan Due Date in Local Format eg. 21 Aug 2023
default: 21 August 2023
example: 21 August 2023
loanDueDateUTC:
type: string
description: Loan Due Date in UTC Format eg. 2023-08-20T18:30:00.000Z
default: '2023-08-20T18:30:00.000Z'
example: '2023-08-20T18:30:00.000Z'
dueDatePostGracePeriod:
type: string
description: Loan Due Date with grace period in Local Format eg. 24 Aug 2023
default: 24 August 2023
example: 24 August 2023
dueDatePostGracePeriodUTC:
type: string
description: Loan Due Date with grace period in UTC Format eg. 2023-08-23T18:30:00.000Z
default: '2023-08-23T18:30:00.000Z'
example: '2023-08-23T18:30:00.000Z'
gracePeriodInDays:
type: number
description: Grace Period(In Days), After which loan goes into overdue.
default: 3
example: 3
charges:
type: number
description: Total Monthly Charges(%) Applied on Loan Amount
default: 1
chargesApplied:
type: number
description: Total Amount of Charges Applied on Loan Amount
default: 50
customerApprovedCredit:
type: number
description: Customer Approved Credit Line
default: 20000
customerAvailableCredit:
type: number
description: Customer Remaining Credit Line after loan
default: 17500
remark:
type: string
description: Remark given while requesting for loan
default: string
metadata:
type: string
default: string
description: Metadata for loans. It can be used for reporting, reconciliation purpose.
createdAt:
type: string
default: '2025-01-08T05:12:17.405Z'
description: Created Timestamp of the created loan in UTC Format eg. 2023-03-30T11:46:42.195Z
updatedAt:
type: string
default: '2025-01-08T05:12:17.405Z'
description: Updated Timestamp of the created loan in UTC Format eg. 2023-03-30T11:46:42.195Z
currency:
type: string
default: SGD
description: Currency Code
required:
- loanId
- loanReferenceNo
- customerReferenceNo
- loanTerm
- loanType
- loanStatus
- disbursalAmount
- totalDueAmount
- loanDueDate
- loanDueDateUTC
- dueDatePostGracePeriod
- dueDatePostGracePeriodUTC
- gracePeriodInDays
- charges
- chargesApplied
- customerApprovedCredit
- customerAvailableCredit
- remark
- metadata
- createdAt
- updatedAt
- currency
GetLoanSummaryResponse:
type: object
properties:
statusCode:
type: number
default: 200
description: The HTTP status code of the error
data:
description: Response Data from the operation
allOf:
- $ref: '#/components/schemas/LoanSummaryResponse'
message:
type: string
default: Success
description: Human-readable message containing all available details about the operation
success:
type: boolean
default: true
description: A boolean indicating whether this was a success response or an error response
required:
- statusCode
- data
- message
- success
GetCalculateLoanResponse:
type: object
properties:
statusCode:
type: number
default: 200
description: The HTTP status code of the error
data:
description: Response Data from the operation
allOf:
- $ref: '#/components/schemas/CalculateLoanResponse'
message:
type: string
default: Success
description: Human-readable message containing all available details about the operation
success:
type: boolean
default: true
description: A boolean indicating whether this was a success response or an error response
required:
- statusCode
- data
- message
- success
DisburseLoanStatusResponse:
type: object
properties:
loanId:
type: string
default: string
description: Id of the created loan
loanReferenceNo:
type: string
default: string
description: Reference Number of the created loan for eg. BNPL***
customerReferenceNo:
type: string
default: ''
description: Customer Reference number, for which loan is created
loanTerm:
type: number
example: 30
description: Duration of the loan. Based on loan terms selected at the cusomer level, The customer for whom loan is being created should be
enum:
- 30
- 45
- 60
- 90
- 120
- 150
- 180
- 210
- 240
- 270
- 300
- 330
- 360
default: 30
loanType:
type: string
description: "Type of loan\n \n We support these two types,\n \n 1. ```BNPL``` - Buyer Financing\n \n 2. ```GMV``` - Seller Financing"
example: BNPL
loanStatus:
type: string
description: "Status of loan\n \n We support these three statuses,\n \n 1. ```pending-for-approval``` - Loan is pending for approval\n \n 2. ```waiting-for-disbursal``` - Loan is pending for disbursal,\n \n 3. ```active``` - Loan is active,\n \n 4. ```rejected``` - Loan is rejected for some reason,\n \n 5. ```closed``` - Loan is paid & closed"
example: active
disbursalAmount:
type: number
description: Loan Amount
default: 2000
totalDueAmount:
type: number
description: Total Loan Due Amount
default: 2000
loanDueDate:
type: string
description: Loan Due Date in Local Format eg. 21 Aug 2023
default: 21 August 2023
example: 21 August 2023
loanDueDateUTC:
type: string
description: Loan Due Date in UTC Format eg. 2023-08-20T18:30:00.000Z
default: '2023-08-20T18:30:00.000Z'
example: '2023-08-20T18:30:00.000Z'
dueDatePostGracePeriod:
type: string
description: Loan Due Date with grace period in Local Format eg. 24 Aug 2023
default: 24 August 2023
example: 24 August 2023
dueDatePostGracePeriodUTC:
type: string
description: Loan Due Date with grace period in UTC Format eg. 2023-08-23T18:30:00.000Z
default: '2023-08-23T18:30:00.000Z'
example: '2023-08-23T18:30:00.000Z'
gracePeriodInDays:
type: number
description: Grace Period(In Days), After which loan goes into overdue.
default: 3
example: 3
charges:
type: number
description: Total Monthly Charges(%) Applied on Loan Amount
default: 1
chargesApplied:
type: number
description: Total Amount of Charges Applied on Loan Amount
default: 50
customerApprovedCredit:
type: number
description: Customer Approved Credit Line
default: 20000
customerAvailableCredit:
type: number
description: Customer Remaining Credit Line after loan
default: 17500
remark:
type: string
description: Remark given while requesting for loan
default: string
metadata:
type: string
default: string
description: Metadata for loans. It can be used for reporting, reconciliation purpose.
createdAt:
type: string
default: '2025-01-08T05:12:17.405Z'
description: Created Timestamp of the created loan in UTC Format eg. 2023-03-30T11:46:42.195Z
updatedAt:
type: string
default: '2025-01-08T05:12:17.405Z'
description: Updated Timestamp of the created loan in UTC Format eg. 2023-03-30T11:46:42.195Z
currency:
type: string
default: SGD
description: Currency Code
required:
- loanId
- loanReferenceNo
- customerReferenceNo
- loanTerm
- loanType
- loanStatus
- disbursalAmount
- totalDueAmount
- loanDueDate
- loanDueDateUTC
- dueDatePostGracePeriod
- dueDatePostGracePeriodUTC
- gracePeriodInDays
- charges
- chargesApplied
- customerApprovedCredit
- customerAvailableCredit
- remark
- metadata
- createdAt
- updatedAt
- currency
CalculateLoanScheduleV1Dto:
type: object
properties:
customerReferenceNo:
type: string
default: ''
example: c3eb1619-ff24-4773-97d8-b05264621e60
description: "Customer Reference number. Each customer has unique reference number. Enter reference number of the customer for whom loan should be created.\n - ``` /^S*$/ ```"
loanAmount:
type: number
description: "Loan Amount.\n \n - Support decimal values as well."
example: 50000
loanTerm:
type: number
example: 30
description: Duration of the loan. Based on loan terms selected at the cusomer level, The customer for whom loan is being created should be.
enum:
- 30
- 45
- 60
- 90
- 120
- 150
- 180
- 210
- 240
- 270
- 300
- 330
- 360
default: 30
loanType:
type: string
description: "\nType of loan.\n \n We support these two types,\n \n 1. ```BNPL``` - Buyer Financing\n \n 2. ```GMV``` - Seller Financing"
enum:
- BNPL
- GMV
- BNPL_Term
- GMV_Term
example: BNPL
required:
- customerReferenceNo
- loanAmount
- loanTerm
- loanType
LoanSummaryResponse:
type: object
properties:
loanId:
type: string
default: string
description: Id of the created loan
loanStatus:
type: string
description: "Status of loan\n \n We support these three statuses,\n \n 1. ```pending-for-approval``` - Loan is pending for approval\n \n 2. ```waiting-for-disbursal``` - Loan is pending for disbursal,\n \n 3. ```active``` - Loan is active,\n \n 4. ```rejected``` - Loan is rejected for some reason,\n \n 5. ```closed``` - Loan is paid & closed"
example: active
loanReferenceNo:
type: string
default: BNPL180820235070
description: Loan Reference number
loanType:
type: string
description: "Type of loan\n \n We support these 4 types,\n \n 1. ```BNPL``` - Buyer Financing\n \n 2. ```BNPL_Term``` - Buyer Financing Term Loan\n \n 3. ```GMV``` - Seller Financing\n \n 4. ```GMV_Term``` - Seller Financing Term Loan"
example: BNPL
customerReferenceNo:
type: string
default: ''
description: Customer Reference number, for which loan is created
loanTerm:
type: number
example: 30
description: Duration of the loan. Based on loan terms selected at the cusomer level, The customer for whom loan is being created should be
enum:
- 30
- 45
- 60
- 90
- 120
- 150
- 180
- 210
- 240
- 270
- 300
- 330
- 360
default: 30
loanAmount:
type: number
description: Loan Amount
example: 3500
totalServiceFee:
type: number
description: Total Service fee applied on loan
example: 99.17
totalServiceFeeDue:
type: number
description: Total Service fee Due for loan
example: 99.17
expectedRepaymentAmount:
type: number
description: Total Expected Repayment Amount
default: 3599.17
totalDueAmount:
type: number
description: Total Due amount that is remaining to repay
default: 3599.17
loanDueDate:
type: string
description: Loan Due Date eg. 18 September 2023
default: 18 September 2023
example: 18 September 2023
dueDatePostGracePeriod:
type: string
description: Due date with Grace Period, eg. Loan Due date is 18 September 2023, and grace period is 3 days. so dueDatePostGracePeriod will be 21 September 2023
default: 18 September 2023
example: 21 September 2023
gracePeriodInDays:
type: number
description: Grace Period(In Days), After which loan goes into overdue.
default: 3
example: 3
totalPenaltyDue:
type: number
description: Penalty outstanding that needs to repay
default: 0
example: 0
currency:
type: string
default: SGD
description: Currency Code
requestedDate:
type: string
description: Loan Due Date eg. 18 Aug 2023
default: 18 Aug 2023
example: 18 Aug 2023
repaymentSchedule:
description: Repayment schedule for loan
type: array
items:
$ref: '#/components/schemas/RepaymentScheduleV2Response'
payments:
description: All payments done by customer for the loan
type: array
items:
$ref: '#/components/schemas/LoanPayment'
required:
- loanId
- loanStatus
- loanReferenceNo
- loanType
- customerReferenceNo
- loanTerm
- loanAmount
- totalServiceFee
- totalServiceFeeDue
- expectedRepaymentAmount
- totalDueAmount
- loanDueDate
- dueDatePostGracePeriod
- gracePeriodInDays
- totalPenaltyDue
- currency
- requestedDate
- repaymentSchedule
- payments
DrawdownNotFoundResponse:
type: object
properties:
statusCode:
type: number
default: 404
description: The HTTP status code of the error
error:
type: string
default: string
description: Human-readable generic error message
errorCode:
type: string
default: E_D_NOT_FOUND
description: Computer-readable code for error handling
message:
type: string
default: string
description: Human-readable error message containing all available details about how the error occurred
success:
type: boolean
default: false
description: A boolean indicating whether this was a success response or an error response
required:
- statusCode
- error
- errorCode
- message
- success
BadRequestDrawdownResponse:
type: object
properties:
statusCode:
type: number
default: 400
error:
default: ''
oneOf:
- type: string
- type: array
items:
type: string
errorCode:
default: ''
oneOf:
- type: string
- type: array
items:
type: string
message:
default: Error
oneOf:
- type: string
- type: array
items:
type: string
success:
type: boolean
default: false
required:
- statusCode
- error
- errorCode
- message
- success
CalculateLoanResponse:
type: object
properties:
customerReferenceNo:
type: string
default: ''
description: Customer Reference number, for which loan is created
loanTerm:
type: number
example: 30
description: Duration of the loan. Based on loan terms selected at the cusomer level, The customer for whom loan is being created should be
enum:
- 30
- 45
- 60
- 90
- 120
- 150
- 180
- 210
- 240
- 270
- 300
- 330
- 360
default: 30
totalDueAmount:
type: number
description: Total Loan Due Amount
default: 2000
loanDueDate:
type: string
description: Total Loan Due Amount in UTC Format eg. 2023-03-30T11:46:42.195Z
default: '2025-01-08T05:12:17.406Z'
disbursalAmount:
type: number
description: Loan Amount
default: 2000
chargesApplied:
type: number
description: Total Amount of Charges Applied on Loan Amount
default: 50
totalRepaymentExpected:
type: number
description: Total Repayment Expected
default: 2000
currency:
type: string
description: Currency Code
default: SGD
required:
- customerReferenceNo
- loanTerm
- totalDueAmount
- loanDueDate
- disbursalAmount
- chargesApplied
- totalRepaymentExpected
- currency
ForbiddenResponse:
type: object
properties:
statusCode:
type: number
default: 403
description: The HTTP status code of the error
error:
type: string
default: string
description: Human-readable generic error message
errorCode:
type: string
default: E_FORBIDDEN
description: Computer-readable code for error handling
message:
type: string
default: string
description: Human-readable error message containing all available details about how the error occurred
success:
type: boolean
default: false
description: A boolean indicating whether this was a success response or an error response
required:
- statusCode
- error
- errorCode
- message
- success
InternalErrorResponse:
type: object
properties:
statusCode:
type: number
default: 500
description: The HTTP status code of the error
error:
type: string
default: string
description: Human-readable generic error message
errorCode:
type: string
default: E_INTERNAL_ERROR
description: Computer-readable code for error handling
message:
type: string
default: string
description: Human-readable error message containing all available details about how the error occurred
success:
type: boolean
default: false
description: A boolean indicating whether this was a success response or an error response
required:
- statusCode
- error
- errorCode
- message
- success
CreateDrawdownResponse:
type: object
properties:
statusCode:
type: number
default: 201
description: The HTTP status code of the error
data:
description: Response Data from the operation
allOf:
- $ref: '#/components/schemas/LoanResponse'
message:
type: string
default: Success
description: Human-readable message containing all available details about the operation
success:
type: boolean
default: true
description: A boolean indicating whether this was a success response or an error response
required:
- statusCode
- data
- message
- success
LoanPayment:
type: object
properties:
paymentId:
type: string
default: string
description: Id of the payment
paymentDate:
type: string
default: '2025-01-08T05:12:17.404Z'
description: Date of the payment in UTC Format eg. 2023-03-30T11:46:42.195Z
paymentAmount:
type: number
default: 1000
description: Payment Amount
paymentMethod:
type: string
default: 1000
description: Payment Amount
example: Bank Transfer/UEN Payment/QR Code Payment
paymentReferenceNo:
type: string
default: string
description: Payment reference number provided while making payment
accountNumber:
type: string
default: string
description: "Account Number varies based on payment types.\n \n\nSo for bank transfer payment( this field will contain ```bank account number``` & for UEN number payment this will contain ```UEN Number```"
accountName:
type: string
default: string
description: Account Name to which payment has been made.
bankName:
type: string
default: string
description: "Bank Name varies based on payment types.\n \n\nSo for bank transfer payment this field will be present, for rest of the types it will be empty"
bankSwiftCode:
type: string
default: string
description: "Bank Swift Code varies based on payment types.\n \n\nSo for bank transfer payment this field will be present, for rest of the types it will be empty"
paymentStatus:
type: number
default: 2
description: "We have 3 types of payment status codes. \n \n For payment rejected: ```0``` \n \n For payment done, but verification pending: ```1```\n \n For payment done & verified: ```2```"
loanId:
type: string
default: string
descr
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/credilinqai/refs/heads/main/openapi/credilinqai-loans-api-openapi.yml