Creditline Contract

The core BNPL lending contract

Creditline Contract

The creditline contract is the core of the StepFi protocol. It handles loan creation, approval, and repayment.

Contract ID: CAQDHYG3TALPNXG466SZUMJEPOI7VYV732LPFF3GHE4ASPBCNMIQBS3X

View on Stellar Expert

Functions

create_loan()

Creates a new loan request in Pending status.

pub fn create_loan(
    env: Env,
    borrower: Address,
    vendor: Address,
    amount: i128,
    installments: u32,
    loan_type: LoanType,
) -> Loan
ParameterTypeDescription
borrowerAddressLearner's Stellar wallet address
vendorAddressVendor's Stellar wallet address
amounti128Loan amount in stroops
installmentsu32Number of monthly payments
loan_typeLoanTypeStandard or LearnerInstallment

approve_loan()

Transitions a loan from Pending to Active. Admin only.

pub fn approve_loan(env: Env, loan_id: u64) -> Loan

repay_installment()

Processes a single installment payment.

pub fn repay_installment(
    env: Env,
    loan_id: u64,
    installment_index: u32,
) -> Loan

get_loan()

Returns loan details by ID.

pub fn get_loan(env: Env, loan_id: u64) -> Option<Loan>

Data Types

Loan

pub struct Loan {
    pub id: u64,
    pub borrower: Address,
    pub vendor: Address,
    pub amount: i128,
    pub installments: u32,
    pub paid_installments: u32,
    pub status: LoanStatus,
    pub loan_type: LoanType,
    pub created_at: u64,
    pub repayments: Vec<RepaymentInstallment>,
}

LoanStatus

pub enum LoanStatus {
    Pending,
    Active,
    Repaid,
    Defaulted,
}

Events

EventTrigger
LOANCREATEDcreate_loan() succeeds
LOANAPPROVEDapprove_loan() succeeds
INSTALLMENTPAIDrepay_installment() succeeds