Credit union loans
- POST
/credit-union/{reference}/loanApply for a loan - POST
/credit-union/{reference}/loan-productDraft a loan product - GET
/credit-union/{reference}/loan-product/{productCode}/versionsList every version of a loan product - POST
/credit-union/{reference}/loan-product/{productReference}/activateActivate a loan product version - POST
/credit-union/{reference}/loan-product/{productReference}/retireRetire a loan product version - GET
/credit-union/{reference}/loan-productsRead the loan catalogue - POST
/credit-union/{reference}/loan/quoteQuote a loan before applying - GET
/credit-union/{reference}/loan/{loanReference}Read one loan - POST
/credit-union/{reference}/loan/{loanReference}/appraiseAppraise a loan - POST
/credit-union/{reference}/loan/{loanReference}/decisionRecord a committee decision - POST
/credit-union/{reference}/loan/{loanReference}/disburseDisburse an approved loan - POST
/credit-union/{reference}/loan/{loanReference}/repaymentRecord a repayment - GET
/credit-union/{reference}/loan/{loanReference}/repaymentsList a loan's repayments - GET
/credit-union/{reference}/loan/{loanReference}/scheduleRead a loan's amortisation schedule - POST
/credit-union/{reference}/loan/{loanReference}/submitSubmit an application for appraisal - GET
/credit-union/{reference}/loansRead the loan book
POST Apply for a loan
POST /credit-union/{reference}/loan
Nominated guarantors are asked, never conscripted: each becomes a REQUESTED guarantee and nothing is encumbered until they accept.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Path parameters
| Name |
|---|
reference |
Example
Request body: ApplyForLoanRequest · Response: GenericResponseLoanResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"borrowerPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"requestedAmount": 0,
"termMonths": 0,
"purpose": "string",
"onLendingPurpose": "AGRICULTURAL_INPUTS",
"originatingBranchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorPositionReferences": [
"string"
],
"selfGuaranteeAmount": 0,
"idempotencyKey": "string"
}' {
"borrowerPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"requestedAmount": 0,
"termMonths": 0,
"purpose": "string",
"onLendingPurpose": "AGRICULTURAL_INPUTS",
"originatingBranchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorPositionReferences": [
"string"
],
"selfGuaranteeAmount": 0,
"idempotencyKey": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"bookingUnionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"borrowerPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"borrowerMemberNumber": "string",
"loanKind": "MEMBER",
"originatingBranchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"onLendingPurpose": "AGRICULTURAL_INPUTS",
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productCode": "string",
"productVersion": 0,
"purpose": "string",
"requestedAmount": 0,
"approvedAmount": 0,
"disbursedAmount": 0,
"depositsDeployedAmount": 0,
"currencyCode": "string",
"termMonths": 0,
"interestModel": "FLAT",
"rateBasisPoints": 0,
"status": "DRAFT",
"outstandingPrincipal": 0,
"accruedInterest": 0,
"outstandingPenalties": 0,
"nextDueOn": "2026-09-25",
"daysInArrears": 0,
"delinquencyBucket": "CURRENT",
"provisionAmount": 0,
"disbursedAt": "2026-09-25T10:00:00Z",
"settledAt": "2026-09-25T10:00:00Z",
"supersedesLoanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"insiderLoan": true,
"frozenTermsHash": "string",
"guarantees": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorMemberNumber": "string",
"amountGuaranteed": 0,
"currencyCode": "string",
"status": "REQUESTED",
"requestedAt": "2026-09-25T10:00:00Z",
"respondedAt": "2026-09-25T10:00:00Z",
"releasedAt": "2026-09-25T10:00:00Z",
"calledAt": "2026-09-25T10:00:00Z",
"amountRecovered": 0,
"substitutedByGuaranteeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"selfGuarantee": true,
"declineReason": "string"
}
],
"approvals": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approverUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approverPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"decision": "APPROVE",
"decidedAt": "2026-09-25T10:00:00Z",
"rationale": "string",
"officeAtDecision": "CHAIRPERSON",
"boardResolutionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}
],
"quote": {
"currencyCode": "string",
"principal": 0,
"termMonths": 0,
"interestModel": "FLAT",
"nominalRateBasisPoints": 0,
"totalInterest": 0,
"upfrontFees": 0,
"scheduledFees": 0,
"totalCostOfCredit": 0,
"netDisbursement": 0,
"totalRepayable": 0,
"effectiveAnnualRateBasisPoints": 0,
"feeLines": [
{
"feeCode": "string",
"name": "string",
"chargeEvent": "MEMBERSHIP_ENTRANCE",
"timing": "DEDUCT_AT_EVENT",
"amount": 0,
"disclosureText": "string"
}
],
"schedule": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"instalmentNumber": 0,
"dueOn": "2026-09-25",
"principalDue": 0,
"interestDue": 0,
"feeDue": 0,
"principalPaid": 0,
"interestPaid": 0,
"feePaid": 0,
"openingBalance": 0,
"closingBalance": 0,
"status": "DUE"
}
],
"disclosureText": "string"
}
},
"description": "Loan application created successfully"
} Responses
| Status | When |
|---|---|
200 | Loan application created successfully |
POST Draft a loan product
POST /credit-union/{reference}/loan-product
The product references tariff items rather than carrying fee amounts, so repricing a charge happens in one place and a live loan keeps the amounts frozen onto it at origination.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Path parameters
| Name |
|---|
reference |
Example
Request body: CreateLoanProductRequest · Response: GenericResponseLoanProductResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan-product" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"productCode": "DEVELOPMENT",
"name": "string",
"description": "string",
"currencyCode": "string",
"eligibleClassCodes": [
"LIFE"
],
"minimumMembershipMonths": 0,
"minimumShareUnits": 0,
"minimumDepositAmount": 0,
"maximumConcurrentLoans": 0,
"requiresCleanArrears": true,
"minimumCreditScore": 0,
"multiplierOfDeposits": 0,
"absoluteMaximumAmount": 0,
"minimumAmount": 0,
"maximumTermMonths": 0,
"minimumTermMonths": 0,
"interestModel": "FLAT",
"annualRateBasisPoints": 0,
"dayCountConvention": "ACT_365",
"repaymentFrequency": "WEEKLY",
"gracePeriodDays": 0,
"moratoriumMonths": 0,
"repaymentAllocationOrder": "PENALTY_FEE_INTEREST_PRINCIPAL",
"appraisalFeeCode": "string",
"insuranceFeeCode": "string",
"insuranceBasis": "DISBURSED",
"penaltyFeeCode": "string",
"penaltyAppliesTo": "OVERDUE_INSTALMENT",
"penaltyBasisPoints": 0,
"guarantorsRequired": 0,
"selfGuaranteeAllowed": true,
"guarantorCoverageBasisPoints": 10000,
"collateralRequired": true,
"pledgeOwnDeposits": true,
"approvalsRequired": 0,
"boardApprovalThresholdAmount": 0,
"disclosureText": "string"
}' {
"productCode": "DEVELOPMENT",
"name": "string",
"description": "string",
"currencyCode": "string",
"eligibleClassCodes": [
"LIFE"
],
"minimumMembershipMonths": 0,
"minimumShareUnits": 0,
"minimumDepositAmount": 0,
"maximumConcurrentLoans": 0,
"requiresCleanArrears": true,
"minimumCreditScore": 0,
"multiplierOfDeposits": 0,
"absoluteMaximumAmount": 0,
"minimumAmount": 0,
"maximumTermMonths": 0,
"minimumTermMonths": 0,
"interestModel": "FLAT",
"annualRateBasisPoints": 0,
"dayCountConvention": "ACT_365",
"repaymentFrequency": "WEEKLY",
"gracePeriodDays": 0,
"moratoriumMonths": 0,
"repaymentAllocationOrder": "PENALTY_FEE_INTEREST_PRINCIPAL",
"appraisalFeeCode": "string",
"insuranceFeeCode": "string",
"insuranceBasis": "DISBURSED",
"penaltyFeeCode": "string",
"penaltyAppliesTo": "OVERDUE_INSTALMENT",
"penaltyBasisPoints": 0,
"guarantorsRequired": 0,
"selfGuaranteeAllowed": true,
"guarantorCoverageBasisPoints": 10000,
"collateralRequired": true,
"pledgeOwnDeposits": true,
"approvalsRequired": 0,
"boardApprovalThresholdAmount": 0,
"disclosureText": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productCode": "string",
"productVersion": 0,
"name": "string",
"description": "string",
"status": "DRAFT",
"effectiveFrom": "2026-09-25",
"effectiveTo": "2026-09-25",
"currencyCode": "string",
"eligibleClassCodes": [
"LIFE"
],
"minimumMembershipMonths": 0,
"minimumShareUnits": 0,
"minimumDepositAmount": 0,
"maximumConcurrentLoans": 0,
"requiresCleanArrears": true,
"minimumCreditScore": 0,
"multiplierOfDeposits": 0,
"absoluteMaximumAmount": 0,
"minimumAmount": 0,
"maximumTermMonths": 0,
"minimumTermMonths": 0,
"interestModel": "FLAT",
"annualRateBasisPoints": 0,
"dayCountConvention": "ACT_365",
"repaymentFrequency": "WEEKLY",
"gracePeriodDays": 0,
"moratoriumMonths": 0,
"repaymentAllocationOrder": "PENALTY_FEE_INTEREST_PRINCIPAL",
"appraisalFeeCode": "string",
"insuranceFeeCode": "string",
"insuranceBasis": "DISBURSED",
"penaltyFeeCode": "string",
"penaltyAppliesTo": "OVERDUE_INSTALMENT",
"penaltyBasisPoints": 0,
"guarantorsRequired": 0,
"selfGuaranteeAllowed": true,
"guarantorCoverageBasisPoints": 0,
"collateralRequired": true,
"pledgeOwnDeposits": true,
"approvalsRequired": 0,
"boardApprovalThresholdAmount": 0,
"disclosureText": "string",
"frozenTermsHash": "string",
"eligible": true,
"ineligibilityReason": "NONE",
"ineligibilityNarrative": "string",
"indicativeCeiling": 0
},
"description": "Loan product drafted successfully"
} Responses
| Status | When |
|---|---|
200 | Loan product drafted successfully |
GET List every version of a loan product
GET /credit-union/{reference}/loan-product/{productCode}/versions
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
productCode |
Example
Response: GenericResponseListLoanProductResponse
curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan-product/value/versions" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productCode": "string",
"productVersion": 0,
"name": "string",
"description": "string",
"status": "DRAFT",
"effectiveFrom": "2026-09-25",
"effectiveTo": "2026-09-25",
"currencyCode": "string",
"eligibleClassCodes": [
"LIFE"
],
"minimumMembershipMonths": 0,
"minimumShareUnits": 0,
"minimumDepositAmount": 0,
"maximumConcurrentLoans": 0,
"requiresCleanArrears": true,
"minimumCreditScore": 0,
"multiplierOfDeposits": 0,
"absoluteMaximumAmount": 0,
"minimumAmount": 0,
"maximumTermMonths": 0,
"minimumTermMonths": 0,
"interestModel": "FLAT",
"annualRateBasisPoints": 0,
"dayCountConvention": "ACT_365",
"repaymentFrequency": "WEEKLY",
"gracePeriodDays": 0,
"moratoriumMonths": 0,
"repaymentAllocationOrder": "PENALTY_FEE_INTEREST_PRINCIPAL",
"appraisalFeeCode": "string",
"insuranceFeeCode": "string",
"insuranceBasis": "DISBURSED",
"penaltyFeeCode": "string",
"penaltyAppliesTo": "OVERDUE_INSTALMENT",
"penaltyBasisPoints": 0,
"guarantorsRequired": 0,
"selfGuaranteeAllowed": true,
"guarantorCoverageBasisPoints": 0,
"collateralRequired": true,
"pledgeOwnDeposits": true,
"approvalsRequired": 0,
"boardApprovalThresholdAmount": 0,
"disclosureText": "string",
"frozenTermsHash": "string",
"eligible": true,
"ineligibilityReason": "NONE",
"ineligibilityNarrative": "string",
"indicativeCeiling": 0
}
],
"description": "Loan product versions retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Loan product versions retrieved successfully |
POST Activate a loan product version
POST /credit-union/{reference}/loan-product/{productReference}/activate
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
productReference |
Example
Response: GenericResponseLoanProductResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan-product/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/activate" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productCode": "string",
"productVersion": 0,
"name": "string",
"description": "string",
"status": "DRAFT",
"effectiveFrom": "2026-09-25",
"effectiveTo": "2026-09-25",
"currencyCode": "string",
"eligibleClassCodes": [
"LIFE"
],
"minimumMembershipMonths": 0,
"minimumShareUnits": 0,
"minimumDepositAmount": 0,
"maximumConcurrentLoans": 0,
"requiresCleanArrears": true,
"minimumCreditScore": 0,
"multiplierOfDeposits": 0,
"absoluteMaximumAmount": 0,
"minimumAmount": 0,
"maximumTermMonths": 0,
"minimumTermMonths": 0,
"interestModel": "FLAT",
"annualRateBasisPoints": 0,
"dayCountConvention": "ACT_365",
"repaymentFrequency": "WEEKLY",
"gracePeriodDays": 0,
"moratoriumMonths": 0,
"repaymentAllocationOrder": "PENALTY_FEE_INTEREST_PRINCIPAL",
"appraisalFeeCode": "string",
"insuranceFeeCode": "string",
"insuranceBasis": "DISBURSED",
"penaltyFeeCode": "string",
"penaltyAppliesTo": "OVERDUE_INSTALMENT",
"penaltyBasisPoints": 0,
"guarantorsRequired": 0,
"selfGuaranteeAllowed": true,
"guarantorCoverageBasisPoints": 0,
"collateralRequired": true,
"pledgeOwnDeposits": true,
"approvalsRequired": 0,
"boardApprovalThresholdAmount": 0,
"disclosureText": "string",
"frozenTermsHash": "string",
"eligible": true,
"ineligibilityReason": "NONE",
"ineligibilityNarrative": "string",
"indicativeCeiling": 0
},
"description": "Loan product activated successfully"
} Responses
| Status | When |
|---|---|
200 | Loan product activated successfully |
POST Retire a loan product version
POST /credit-union/{reference}/loan-product/{productReference}/retire
Stops new applications. Loans already granted are unaffected.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
productReference |
Example
Response: GenericResponseLoanProductResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan-product/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/retire" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productCode": "string",
"productVersion": 0,
"name": "string",
"description": "string",
"status": "DRAFT",
"effectiveFrom": "2026-09-25",
"effectiveTo": "2026-09-25",
"currencyCode": "string",
"eligibleClassCodes": [
"LIFE"
],
"minimumMembershipMonths": 0,
"minimumShareUnits": 0,
"minimumDepositAmount": 0,
"maximumConcurrentLoans": 0,
"requiresCleanArrears": true,
"minimumCreditScore": 0,
"multiplierOfDeposits": 0,
"absoluteMaximumAmount": 0,
"minimumAmount": 0,
"maximumTermMonths": 0,
"minimumTermMonths": 0,
"interestModel": "FLAT",
"annualRateBasisPoints": 0,
"dayCountConvention": "ACT_365",
"repaymentFrequency": "WEEKLY",
"gracePeriodDays": 0,
"moratoriumMonths": 0,
"repaymentAllocationOrder": "PENALTY_FEE_INTEREST_PRINCIPAL",
"appraisalFeeCode": "string",
"insuranceFeeCode": "string",
"insuranceBasis": "DISBURSED",
"penaltyFeeCode": "string",
"penaltyAppliesTo": "OVERDUE_INSTALMENT",
"penaltyBasisPoints": 0,
"guarantorsRequired": 0,
"selfGuaranteeAllowed": true,
"guarantorCoverageBasisPoints": 0,
"collateralRequired": true,
"pledgeOwnDeposits": true,
"approvalsRequired": 0,
"boardApprovalThresholdAmount": 0,
"disclosureText": "string",
"frozenTermsHash": "string",
"eligible": true,
"ineligibilityReason": "NONE",
"ineligibilityNarrative": "string",
"indicativeCeiling": 0
},
"description": "Loan product retired successfully"
} Responses
| Status | When |
|---|---|
200 | Loan product retired successfully |
GET Read the loan catalogue
GET /credit-union/{reference}/loan-products
Read for a named member it says what they could actually take: a nominal member holds no deposits and so has no multiplier base, and their ceiling comes from the product's absolute maximum instead.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Query parameters
| Name | Default |
|---|---|
position | Optional |
eligible |
Example
Response: GenericResponseListLoanProductResponse
curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan-products?eligible=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productCode": "string",
"productVersion": 0,
"name": "string",
"description": "string",
"status": "DRAFT",
"effectiveFrom": "2026-09-25",
"effectiveTo": "2026-09-25",
"currencyCode": "string",
"eligibleClassCodes": [
"LIFE"
],
"minimumMembershipMonths": 0,
"minimumShareUnits": 0,
"minimumDepositAmount": 0,
"maximumConcurrentLoans": 0,
"requiresCleanArrears": true,
"minimumCreditScore": 0,
"multiplierOfDeposits": 0,
"absoluteMaximumAmount": 0,
"minimumAmount": 0,
"maximumTermMonths": 0,
"minimumTermMonths": 0,
"interestModel": "FLAT",
"annualRateBasisPoints": 0,
"dayCountConvention": "ACT_365",
"repaymentFrequency": "WEEKLY",
"gracePeriodDays": 0,
"moratoriumMonths": 0,
"repaymentAllocationOrder": "PENALTY_FEE_INTEREST_PRINCIPAL",
"appraisalFeeCode": "string",
"insuranceFeeCode": "string",
"insuranceBasis": "DISBURSED",
"penaltyFeeCode": "string",
"penaltyAppliesTo": "OVERDUE_INSTALMENT",
"penaltyBasisPoints": 0,
"guarantorsRequired": 0,
"selfGuaranteeAllowed": true,
"guarantorCoverageBasisPoints": 0,
"collateralRequired": true,
"pledgeOwnDeposits": true,
"approvalsRequired": 0,
"boardApprovalThresholdAmount": 0,
"disclosureText": "string",
"frozenTermsHash": "string",
"eligible": true,
"ineligibilityReason": "NONE",
"ineligibilityNarrative": "string",
"indicativeCeiling": 0
}
],
"description": "Loan products retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Loan products retrieved successfully |
POST Quote a loan before applying
POST /credit-union/{reference}/loan/quote
Returns the total cost of credit as one number and the effective annual rate beside the nominal one. On a flat loan the gap between the two is the point of showing it. Penalties are excluded and disclosed separately, because a contingent charge would overstate the cost of a loan repaid on time.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Path parameters
| Name |
|---|
reference |
Example
Request body: LoanQuoteRequest · Response: GenericResponseLoanQuoteResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan/quote" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amount": 0,
"termMonths": 0,
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}' {
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amount": 0,
"termMonths": 0,
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
} {
"data": {
"currencyCode": "string",
"principal": 0,
"termMonths": 0,
"interestModel": "FLAT",
"nominalRateBasisPoints": 0,
"totalInterest": 0,
"upfrontFees": 0,
"scheduledFees": 0,
"totalCostOfCredit": 0,
"netDisbursement": 0,
"totalRepayable": 0,
"effectiveAnnualRateBasisPoints": 0,
"feeLines": [
{
"feeCode": "string",
"name": "string",
"chargeEvent": "MEMBERSHIP_ENTRANCE",
"timing": "DEDUCT_AT_EVENT",
"amount": 0,
"disclosureText": "string"
}
],
"schedule": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"instalmentNumber": 0,
"dueOn": "2026-09-25",
"principalDue": 0,
"interestDue": 0,
"feeDue": 0,
"principalPaid": 0,
"interestPaid": 0,
"feePaid": 0,
"openingBalance": 0,
"closingBalance": 0,
"status": "DUE"
}
],
"disclosureText": "string"
},
"description": "Loan quote retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Loan quote retrieved successfully |
GET Read one loan
GET /credit-union/{reference}/loan/{loanReference}
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
loanReference |
Example
Response: GenericResponseLoanResponse
curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"bookingUnionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"borrowerPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"borrowerMemberNumber": "string",
"loanKind": "MEMBER",
"originatingBranchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"onLendingPurpose": "AGRICULTURAL_INPUTS",
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productCode": "string",
"productVersion": 0,
"purpose": "string",
"requestedAmount": 0,
"approvedAmount": 0,
"disbursedAmount": 0,
"depositsDeployedAmount": 0,
"currencyCode": "string",
"termMonths": 0,
"interestModel": "FLAT",
"rateBasisPoints": 0,
"status": "DRAFT",
"outstandingPrincipal": 0,
"accruedInterest": 0,
"outstandingPenalties": 0,
"nextDueOn": "2026-09-25",
"daysInArrears": 0,
"delinquencyBucket": "CURRENT",
"provisionAmount": 0,
"disbursedAt": "2026-09-25T10:00:00Z",
"settledAt": "2026-09-25T10:00:00Z",
"supersedesLoanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"insiderLoan": true,
"frozenTermsHash": "string",
"guarantees": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorMemberNumber": "string",
"amountGuaranteed": 0,
"currencyCode": "string",
"status": "REQUESTED",
"requestedAt": "2026-09-25T10:00:00Z",
"respondedAt": "2026-09-25T10:00:00Z",
"releasedAt": "2026-09-25T10:00:00Z",
"calledAt": "2026-09-25T10:00:00Z",
"amountRecovered": 0,
"substitutedByGuaranteeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"selfGuarantee": true,
"declineReason": "string"
}
],
"approvals": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approverUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approverPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"decision": "APPROVE",
"decidedAt": "2026-09-25T10:00:00Z",
"rationale": "string",
"officeAtDecision": "CHAIRPERSON",
"boardResolutionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}
],
"quote": {
"currencyCode": "string",
"principal": 0,
"termMonths": 0,
"interestModel": "FLAT",
"nominalRateBasisPoints": 0,
"totalInterest": 0,
"upfrontFees": 0,
"scheduledFees": 0,
"totalCostOfCredit": 0,
"netDisbursement": 0,
"totalRepayable": 0,
"effectiveAnnualRateBasisPoints": 0,
"feeLines": [
{
"feeCode": "string",
"name": "string",
"chargeEvent": "MEMBERSHIP_ENTRANCE",
"timing": "DEDUCT_AT_EVENT",
"amount": 0,
"disclosureText": "string"
}
],
"schedule": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"instalmentNumber": 0,
"dueOn": "2026-09-25",
"principalDue": 0,
"interestDue": 0,
"feeDue": 0,
"principalPaid": 0,
"interestPaid": 0,
"feePaid": 0,
"openingBalance": 0,
"closingBalance": 0,
"status": "DUE"
}
],
"disclosureText": "string"
}
},
"description": "Loan retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Loan retrieved successfully |
POST Appraise a loan
POST /credit-union/{reference}/loan/{loanReference}/appraise
Returns every check that ran with its own outcome and narrative, whether it passed or not, so a refusal names the rule that applied and can be argued with. A WARN does not fail an appraisal.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
loanReference |
Example
Response: GenericResponseAppraisalResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/appraise" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"status": "DRAFT",
"passed": true,
"currencyCode": "string",
"ceiling": 0,
"requestedAmount": 0,
"securityRequired": 0,
"securityAccepted": 0,
"connectedExposure": 0,
"connectedPositionCount": 0,
"insiderLoan": true,
"checks": [
{
"code": "STANDING",
"outcome": "PASS",
"narrative": "string",
"observed": 0,
"permitted": 0
}
],
"failures": [
"string"
],
"warnings": [
"string"
]
},
"description": "Loan appraised successfully"
} Responses
| Status | When |
|---|---|
200 | Loan appraised successfully |
POST Record a committee decision
POST /credit-union/{reference}/loan/{loanReference}/decision
The borrower may not decide on their own loan and no officer may sign twice. An amount over the product's board threshold needs a recorded resolution.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Path parameters
| Name |
|---|
reference |
loanReference |
Example
Request body: LoanDecisionRequest · Response: GenericResponseLoanResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/decision" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"decision": "APPROVE",
"approvedAmount": 0,
"rationale": "string",
"boardResolutionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}' {
"decision": "APPROVE",
"approvedAmount": 0,
"rationale": "string",
"boardResolutionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"bookingUnionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"borrowerPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"borrowerMemberNumber": "string",
"loanKind": "MEMBER",
"originatingBranchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"onLendingPurpose": "AGRICULTURAL_INPUTS",
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productCode": "string",
"productVersion": 0,
"purpose": "string",
"requestedAmount": 0,
"approvedAmount": 0,
"disbursedAmount": 0,
"depositsDeployedAmount": 0,
"currencyCode": "string",
"termMonths": 0,
"interestModel": "FLAT",
"rateBasisPoints": 0,
"status": "DRAFT",
"outstandingPrincipal": 0,
"accruedInterest": 0,
"outstandingPenalties": 0,
"nextDueOn": "2026-09-25",
"daysInArrears": 0,
"delinquencyBucket": "CURRENT",
"provisionAmount": 0,
"disbursedAt": "2026-09-25T10:00:00Z",
"settledAt": "2026-09-25T10:00:00Z",
"supersedesLoanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"insiderLoan": true,
"frozenTermsHash": "string",
"guarantees": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorMemberNumber": "string",
"amountGuaranteed": 0,
"currencyCode": "string",
"status": "REQUESTED",
"requestedAt": "2026-09-25T10:00:00Z",
"respondedAt": "2026-09-25T10:00:00Z",
"releasedAt": "2026-09-25T10:00:00Z",
"calledAt": "2026-09-25T10:00:00Z",
"amountRecovered": 0,
"substitutedByGuaranteeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"selfGuarantee": true,
"declineReason": "string"
}
],
"approvals": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approverUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approverPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"decision": "APPROVE",
"decidedAt": "2026-09-25T10:00:00Z",
"rationale": "string",
"officeAtDecision": "CHAIRPERSON",
"boardResolutionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}
],
"quote": {
"currencyCode": "string",
"principal": 0,
"termMonths": 0,
"interestModel": "FLAT",
"nominalRateBasisPoints": 0,
"totalInterest": 0,
"upfrontFees": 0,
"scheduledFees": 0,
"totalCostOfCredit": 0,
"netDisbursement": 0,
"totalRepayable": 0,
"effectiveAnnualRateBasisPoints": 0,
"feeLines": [
{
"feeCode": "string",
"name": "string",
"chargeEvent": "MEMBERSHIP_ENTRANCE",
"timing": "DEDUCT_AT_EVENT",
"amount": 0,
"disclosureText": "string"
}
],
"schedule": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"instalmentNumber": 0,
"dueOn": "2026-09-25",
"principalDue": 0,
"interestDue": 0,
"feeDue": 0,
"principalPaid": 0,
"interestPaid": 0,
"feePaid": 0,
"openingBalance": 0,
"closingBalance": 0,
"status": "DUE"
}
],
"disclosureText": "string"
}
},
"description": "Decision recorded successfully"
} Responses
| Status | When |
|---|---|
200 | Decision recorded successfully |
POST Disburse an approved loan
POST /credit-union/{reference}/loan/{loanReference}/disburse
Taken under a lock on the union. Liquidity is checked again here rather than trusted from the approval, because the two are separated in time and the operating balance moves in between. The officer who approved a loan may not disburse it.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Path parameters
| Name |
|---|
reference |
loanReference |
Example
Request body: DisburseLoanRequest · Response: GenericResponseLoanResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/disburse" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"valueDate": "2026-09-25",
"idempotencyKey": "string"
}' {
"valueDate": "2026-09-25",
"idempotencyKey": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"bookingUnionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"borrowerPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"borrowerMemberNumber": "string",
"loanKind": "MEMBER",
"originatingBranchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"onLendingPurpose": "AGRICULTURAL_INPUTS",
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productCode": "string",
"productVersion": 0,
"purpose": "string",
"requestedAmount": 0,
"approvedAmount": 0,
"disbursedAmount": 0,
"depositsDeployedAmount": 0,
"currencyCode": "string",
"termMonths": 0,
"interestModel": "FLAT",
"rateBasisPoints": 0,
"status": "DRAFT",
"outstandingPrincipal": 0,
"accruedInterest": 0,
"outstandingPenalties": 0,
"nextDueOn": "2026-09-25",
"daysInArrears": 0,
"delinquencyBucket": "CURRENT",
"provisionAmount": 0,
"disbursedAt": "2026-09-25T10:00:00Z",
"settledAt": "2026-09-25T10:00:00Z",
"supersedesLoanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"insiderLoan": true,
"frozenTermsHash": "string",
"guarantees": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorMemberNumber": "string",
"amountGuaranteed": 0,
"currencyCode": "string",
"status": "REQUESTED",
"requestedAt": "2026-09-25T10:00:00Z",
"respondedAt": "2026-09-25T10:00:00Z",
"releasedAt": "2026-09-25T10:00:00Z",
"calledAt": "2026-09-25T10:00:00Z",
"amountRecovered": 0,
"substitutedByGuaranteeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"selfGuarantee": true,
"declineReason": "string"
}
],
"approvals": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approverUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approverPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"decision": "APPROVE",
"decidedAt": "2026-09-25T10:00:00Z",
"rationale": "string",
"officeAtDecision": "CHAIRPERSON",
"boardResolutionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}
],
"quote": {
"currencyCode": "string",
"principal": 0,
"termMonths": 0,
"interestModel": "FLAT",
"nominalRateBasisPoints": 0,
"totalInterest": 0,
"upfrontFees": 0,
"scheduledFees": 0,
"totalCostOfCredit": 0,
"netDisbursement": 0,
"totalRepayable": 0,
"effectiveAnnualRateBasisPoints": 0,
"feeLines": [
{
"feeCode": "string",
"name": "string",
"chargeEvent": "MEMBERSHIP_ENTRANCE",
"timing": "DEDUCT_AT_EVENT",
"amount": 0,
"disclosureText": "string"
}
],
"schedule": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"instalmentNumber": 0,
"dueOn": "2026-09-25",
"principalDue": 0,
"interestDue": 0,
"feeDue": 0,
"principalPaid": 0,
"interestPaid": 0,
"feePaid": 0,
"openingBalance": 0,
"closingBalance": 0,
"status": "DUE"
}
],
"disclosureText": "string"
}
},
"description": "Loan disbursed successfully"
} Responses
| Status | When |
|---|---|
200 | Loan disbursed successfully |
POST Record a repayment
POST /credit-union/{reference}/loan/{loanReference}/repayment
Allocated in the product's order and, within a bucket, against the oldest instalment first. Anything beyond what is owed is reported as unapplied rather than over-applied.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Path parameters
| Name |
|---|
reference |
loanReference |
Example
Request body: RecordRepaymentRequest · Response: GenericResponseLoanRepaymentResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/repayment" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"amount": 0,
"source": "MEMBER",
"narrative": "string",
"idempotencyKey": "string"
}' {
"amount": 0,
"source": "MEMBER",
"narrative": "string",
"idempotencyKey": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amount": 0,
"currencyCode": "string",
"penaltyPaid": 0,
"feePaid": 0,
"interestPaid": 0,
"principalPaid": 0,
"unappliedAmount": 0,
"outstandingPrincipalAfter": 0,
"source": "MEMBER",
"transactionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"valueDate": "2026-09-25",
"postedAt": "2026-09-25T10:00:00Z",
"settledTheLoan": true
},
"description": "Repayment recorded successfully"
} Responses
| Status | When |
|---|---|
200 | Repayment recorded successfully |
GET List a loan's repayments
GET /credit-union/{reference}/loan/{loanReference}/repayments
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
loanReference |
Example
Response: GenericResponseListLoanRepaymentResponse
curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/repayments" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amount": 0,
"currencyCode": "string",
"penaltyPaid": 0,
"feePaid": 0,
"interestPaid": 0,
"principalPaid": 0,
"unappliedAmount": 0,
"outstandingPrincipalAfter": 0,
"source": "MEMBER",
"transactionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"valueDate": "2026-09-25",
"postedAt": "2026-09-25T10:00:00Z",
"settledTheLoan": true
}
],
"description": "Repayments retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Repayments retrieved successfully |
GET Read a loan's amortisation schedule
GET /credit-union/{reference}/loan/{loanReference}/schedule
A reschedule writes a new version; the superseded lines are kept.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
loanReference |
Example
Response: GenericResponseLoanScheduleResponse
curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/schedule" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"currencyCode": "string",
"scheduleVersion": 0,
"totalPrincipal": 0,
"totalInterest": 0,
"totalFees": 0,
"lines": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"instalmentNumber": 0,
"dueOn": "2026-09-25",
"principalDue": 0,
"interestDue": 0,
"feeDue": 0,
"principalPaid": 0,
"interestPaid": 0,
"feePaid": 0,
"openingBalance": 0,
"closingBalance": 0,
"status": "DUE"
}
]
},
"description": "Schedule retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Schedule retrieved successfully |
POST Submit an application for appraisal
POST /credit-union/{reference}/loan/{loanReference}/submit
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
loanReference |
Example
Response: GenericResponseLoanResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/submit" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"bookingUnionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"borrowerPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"borrowerMemberNumber": "string",
"loanKind": "MEMBER",
"originatingBranchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"onLendingPurpose": "AGRICULTURAL_INPUTS",
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productCode": "string",
"productVersion": 0,
"purpose": "string",
"requestedAmount": 0,
"approvedAmount": 0,
"disbursedAmount": 0,
"depositsDeployedAmount": 0,
"currencyCode": "string",
"termMonths": 0,
"interestModel": "FLAT",
"rateBasisPoints": 0,
"status": "DRAFT",
"outstandingPrincipal": 0,
"accruedInterest": 0,
"outstandingPenalties": 0,
"nextDueOn": "2026-09-25",
"daysInArrears": 0,
"delinquencyBucket": "CURRENT",
"provisionAmount": 0,
"disbursedAt": "2026-09-25T10:00:00Z",
"settledAt": "2026-09-25T10:00:00Z",
"supersedesLoanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"insiderLoan": true,
"frozenTermsHash": "string",
"guarantees": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorMemberNumber": "string",
"amountGuaranteed": 0,
"currencyCode": "string",
"status": "REQUESTED",
"requestedAt": "2026-09-25T10:00:00Z",
"respondedAt": "2026-09-25T10:00:00Z",
"releasedAt": "2026-09-25T10:00:00Z",
"calledAt": "2026-09-25T10:00:00Z",
"amountRecovered": 0,
"substitutedByGuaranteeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"selfGuarantee": true,
"declineReason": "string"
}
],
"approvals": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approverUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approverPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"decision": "APPROVE",
"decidedAt": "2026-09-25T10:00:00Z",
"rationale": "string",
"officeAtDecision": "CHAIRPERSON",
"boardResolutionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}
],
"quote": {
"currencyCode": "string",
"principal": 0,
"termMonths": 0,
"interestModel": "FLAT",
"nominalRateBasisPoints": 0,
"totalInterest": 0,
"upfrontFees": 0,
"scheduledFees": 0,
"totalCostOfCredit": 0,
"netDisbursement": 0,
"totalRepayable": 0,
"effectiveAnnualRateBasisPoints": 0,
"feeLines": [
{
"feeCode": "string",
"name": "string",
"chargeEvent": "MEMBERSHIP_ENTRANCE",
"timing": "DEDUCT_AT_EVENT",
"amount": 0,
"disclosureText": "string"
}
],
"schedule": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"instalmentNumber": 0,
"dueOn": "2026-09-25",
"principalDue": 0,
"interestDue": 0,
"feeDue": 0,
"principalPaid": 0,
"interestPaid": 0,
"feePaid": 0,
"openingBalance": 0,
"closingBalance": 0,
"status": "DUE"
}
],
"disclosureText": "string"
}
},
"description": "Loan submitted successfully"
} Responses
| Status | When |
|---|---|
200 | Loan submitted successfully |
GET Read the loan book
GET /credit-union/{reference}/loans
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Query parameters
| Name | Default |
|---|---|
status | Optional |
bucket | Optional |
position | Optional |
page | 0 |
size | 25 |
Example
Response: GenericResponseLoanPageResponse
curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loans?page=value&size=25" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"content": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"bookingUnionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"borrowerPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"borrowerMemberNumber": "string",
"loanKind": "MEMBER",
"originatingBranchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"onLendingPurpose": "AGRICULTURAL_INPUTS",
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productCode": "string",
"productVersion": 0,
"purpose": "string",
"requestedAmount": 0,
"approvedAmount": 0,
"disbursedAmount": 0,
"depositsDeployedAmount": 0,
"currencyCode": "string",
"termMonths": 0,
"interestModel": "FLAT",
"rateBasisPoints": 0,
"status": "DRAFT",
"outstandingPrincipal": 0,
"accruedInterest": 0,
"outstandingPenalties": 0,
"nextDueOn": "2026-09-25",
"daysInArrears": 0,
"delinquencyBucket": "CURRENT",
"provisionAmount": 0,
"disbursedAt": "2026-09-25T10:00:00Z",
"settledAt": "2026-09-25T10:00:00Z",
"supersedesLoanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"insiderLoan": true,
"frozenTermsHash": "string",
"guarantees": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorMemberNumber": "string",
"amountGuaranteed": 0,
"currencyCode": "string",
"status": "REQUESTED",
"requestedAt": "2026-09-25T10:00:00Z",
"respondedAt": "2026-09-25T10:00:00Z",
"releasedAt": "2026-09-25T10:00:00Z",
"calledAt": "2026-09-25T10:00:00Z",
"amountRecovered": 0,
"substitutedByGuaranteeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"selfGuarantee": true,
"declineReason": "string"
}
],
"approvals": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approverUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approverPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"decision": "APPROVE",
"decidedAt": "2026-09-25T10:00:00Z",
"rationale": "string",
"officeAtDecision": "CHAIRPERSON",
"boardResolutionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}
],
"quote": {
"currencyCode": "string",
"principal": 0,
"termMonths": 0,
"interestModel": "FLAT",
"nominalRateBasisPoints": 0,
"totalInterest": 0,
"upfrontFees": 0,
"scheduledFees": 0,
"totalCostOfCredit": 0,
"netDisbursement": 0,
"totalRepayable": 0,
"effectiveAnnualRateBasisPoints": 0,
"feeLines": [
{
"feeCode": "string",
"name": "string",
"chargeEvent": "MEMBERSHIP_ENTRANCE",
"timing": "DEDUCT_AT_EVENT",
"amount": 0,
"disclosureText": "string"
}
],
"schedule": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"instalmentNumber": 0,
"dueOn": "2026-09-25",
"principalDue": 0,
"interestDue": 0,
"feeDue": 0,
"principalPaid": 0,
"interestPaid": 0,
"feePaid": 0,
"openingBalance": 0,
"closingBalance": 0,
"status": "DUE"
}
],
"disclosureText": "string"
}
}
],
"page": 0,
"size": 0,
"totalElements": 0,
"totalPages": 0
},
"description": "Loans retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Loans retrieved successfully |
Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors