API reference · Communities & institutions

Credit union loans

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

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/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"
}'

Responses

StatusWhen
200Loan 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

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/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"
}'

Responses

StatusWhen
200Loan product drafted successfully

GET List every version of a loan product

GET /credit-union/{reference}/loan-product/{productCode}/versions

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest 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"

Responses

StatusWhen
200Loan product versions retrieved successfully

POST Activate a loan product version

POST /credit-union/{reference}/loan-product/{productReference}/activate

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest 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"

Responses

StatusWhen
200Loan 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

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest 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"

Responses

StatusWhen
200Loan 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

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
positionOptional
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"

Responses

StatusWhen
200Loan 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

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/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"
}'

Responses

StatusWhen
200Loan quote retrieved successfully

GET Read one loan

GET /credit-union/{reference}/loan/{loanReference}

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest 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"

Responses

StatusWhen
200Loan 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

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest 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"

Responses

StatusWhen
200Loan 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

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/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"
}'

Responses

StatusWhen
200Decision 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

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/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"
}'

Responses

StatusWhen
200Loan 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

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/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"
}'

Responses

StatusWhen
200Repayment recorded successfully

GET List a loan's repayments

GET /credit-union/{reference}/loan/{loanReference}/repayments

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest 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"

Responses

StatusWhen
200Repayments 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

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest 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"

Responses

StatusWhen
200Schedule retrieved successfully

POST Submit an application for appraisal

POST /credit-union/{reference}/loan/{loanReference}/submit

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest 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"

Responses

StatusWhen
200Loan submitted successfully

GET Read the loan book

GET /credit-union/{reference}/loans

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
statusOptional
bucketOptional
positionOptional
page0
size25

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"

Responses

StatusWhen
200Loans retrieved successfully

Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors