Credit union servicing
- POST
/credit-union/{reference}/check-offUpload an employer's check-off file - GET
/credit-union/{reference}/check-off/{batchReference}Read a check-off batch and its lines - POST
/credit-union/{reference}/check-off/{batchReference}/releaseRelease a check-off batch - POST
/credit-union/{reference}/deposit-account/{accountReference}/escheatEscheat a long-dormant balance - POST
/credit-union/{reference}/deposit-account/{accountReference}/reactivateReactivate a dormant deposit account - GET
/credit-union/{reference}/dormancy-registerRead the dormant-balance register - GET
/credit-union/{reference}/guarantee-call/{callReference}Read a guarantee call - POST
/credit-union/{reference}/guarantee-call/{callReference}/approveApprove a guarantee recovery - POST
/credit-union/{reference}/guarantee-call/{callReference}/recoverRecover from the guarantors - POST
/credit-union/{reference}/loan/{loanReference}/call-guaranteesCall a loan's guarantees - POST
/credit-union/{reference}/loan/{loanReference}/restructureRestructure a loan - POST
/credit-union/{reference}/loan/{loanReference}/write-offWrite a loan off
POST Upload an employer's check-off file
POST /credit-union/{reference}/check-off
The ingestion is generic; the parser is not. Lines are matched on the member number alone - a name is never matched against money - and anything the file cannot resolve to one member and one loan stays unmatched for an operator. Nothing posts on upload.
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: UploadCheckOffBatchRequest · Response: GenericResponseCheckOffBatchResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/check-off" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"employerName": "string",
"employerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"periodLabel": "string",
"deductedOn": "2026-09-25",
"lines": [
{
"memberNumber": "string",
"employeeNumber": "string",
"memberName": "string",
"amount": 0
}
],
"idempotencyKey": "string"
}' {
"employerName": "string",
"employerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"periodLabel": "string",
"deductedOn": "2026-09-25",
"lines": [
{
"memberNumber": "string",
"employeeNumber": "string",
"memberName": "string",
"amount": 0
}
],
"idempotencyKey": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"employerName": "string",
"employerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"periodLabel": "string",
"deductedOn": "2026-09-25",
"currencyCode": "string",
"status": "UPLOADED",
"lineCount": 0,
"matchedCount": 0,
"unmatchedCount": 0,
"postedCount": 0,
"declaredTotal": 0,
"matchedTotal": 0,
"postedTotal": 0,
"lines": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"lineNumber": 0,
"memberNumber": "string",
"employeeNumber": "string",
"memberName": "string",
"amount": 0,
"status": "MATCHED",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"repaymentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"narrative": "string"
}
],
"uploadedAt": "2026-09-25T10:00:00Z",
"releasedAt": "2026-09-25T10:00:00Z",
"releasedByUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
},
"description": "Check-off batch uploaded successfully"
} Responses
| Status | When |
|---|---|
200 | Check-off batch uploaded successfully |
GET Read a check-off batch and its lines
GET /credit-union/{reference}/check-off/{batchReference}
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
batchReference |
Example
Response: GenericResponseCheckOffBatchResponse
curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/check-off/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",
"employerName": "string",
"employerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"periodLabel": "string",
"deductedOn": "2026-09-25",
"currencyCode": "string",
"status": "UPLOADED",
"lineCount": 0,
"matchedCount": 0,
"unmatchedCount": 0,
"postedCount": 0,
"declaredTotal": 0,
"matchedTotal": 0,
"postedTotal": 0,
"lines": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"lineNumber": 0,
"memberNumber": "string",
"employeeNumber": "string",
"memberName": "string",
"amount": 0,
"status": "MATCHED",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"repaymentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"narrative": "string"
}
],
"uploadedAt": "2026-09-25T10:00:00Z",
"releasedAt": "2026-09-25T10:00:00Z",
"releasedByUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
},
"description": "Check-off batch retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Check-off batch retrieved successfully |
POST Release a check-off batch
POST /credit-union/{reference}/check-off/{batchReference}/release
Posts every matched line as a repayment. Release is a person's decision, taken after they have looked at the unmatched lines.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
batchReference |
Example
Response: GenericResponseCheckOffBatchResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/check-off/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/release" \
-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",
"employerName": "string",
"employerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"periodLabel": "string",
"deductedOn": "2026-09-25",
"currencyCode": "string",
"status": "UPLOADED",
"lineCount": 0,
"matchedCount": 0,
"unmatchedCount": 0,
"postedCount": 0,
"declaredTotal": 0,
"matchedTotal": 0,
"postedTotal": 0,
"lines": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"lineNumber": 0,
"memberNumber": "string",
"employeeNumber": "string",
"memberName": "string",
"amount": 0,
"status": "MATCHED",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"repaymentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"narrative": "string"
}
],
"uploadedAt": "2026-09-25T10:00:00Z",
"releasedAt": "2026-09-25T10:00:00Z",
"releasedByUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
},
"description": "Check-off batch released successfully"
} Responses
| Status | When |
|---|---|
200 | Check-off batch released successfully |
POST Escheat a long-dormant balance
POST /credit-union/{reference}/deposit-account/{accountReference}/escheat
Behind an operator gate and refused without a statutory basis and a destination. Where the money goes is jurisdictional - the state in most frameworks, the apex in a few - and the module is told rather than guessing. An escheatment nobody can trace is indistinguishable from a loss.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Path parameters
| Name |
|---|
reference |
accountReference |
Example
Request body: EscheatDepositAccountRequest · Response: GenericResponseDormancyRecordResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/deposit-account/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/escheat" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"statutoryBasis": "string",
"escheatToReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"idempotencyKey": "string"
}' {
"statutoryBasis": "string",
"escheatToReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"idempotencyKey": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"depositAccountReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"productCode": "string",
"currencyCode": "string",
"balanceAtDormancy": 0,
"currentBalance": 0,
"lastMovementOn": "2026-09-25",
"dormantSince": "2026-09-25",
"status": "DORMANT",
"notifiedOn": "2026-09-25",
"reactivatedOn": "2026-09-25",
"escheatedOn": "2026-09-25",
"escheatmentBasis": "string",
"escheatedToReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
},
"description": "Balance escheated successfully"
} Responses
| Status | When |
|---|---|
200 | Balance escheated successfully |
POST Reactivate a dormant deposit account
POST /credit-union/{reference}/deposit-account/{accountReference}/reactivate
Dormancy forfeits nothing: interest and rebates keep accruing while an account sleeps and the balance stays the member's. Waking it up is a member act.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Path parameters
| Name |
|---|
reference |
accountReference |
Example
Request body: ReactivateDepositAccountRequest · Response: GenericResponseDepositAccountResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/deposit-account/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/reactivate" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"reason": "string"
}' {
"reason": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productCode": "string",
"productVersion": 0,
"depositType": "SHARE_CAPITAL",
"accountNumberSuffix": "string",
"currencyCode": "string",
"balance": 0,
"encumberedAmount": 0,
"accruedInterest": 0,
"amountDays": 0,
"openedOn": "2026-09-25",
"maturesOn": "2026-09-25",
"noticeGivenOn": "2026-09-25",
"noticeMaturesOn": "2026-09-25",
"status": "ACTIVE",
"lastMovementOn": "2026-09-25",
"dormantSince": "2026-09-25",
"closedOn": "2026-09-25",
"nomineeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"countsTowardLoanMultiplier": true,
"pledgeable": true,
"noticePeriodDays": 0,
"termDays": 0,
"earlyWithdrawalPenaltyBasisPoints": 0,
"minimumBalance": 0,
"frozenTermsHash": "string"
},
"description": "Deposit account reactivated successfully"
} Responses
| Status | When |
|---|---|
200 | Deposit account reactivated successfully |
GET Read the dormant-balance register
GET /credit-union/{reference}/dormancy-register
The separate accounting record of dormant balances the union is required to keep.
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 |
Example
Response: GenericResponseListDormancyRecordResponse
curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/dormancy-register" \
-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",
"depositAccountReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"productCode": "string",
"currencyCode": "string",
"balanceAtDormancy": 0,
"currentBalance": 0,
"lastMovementOn": "2026-09-25",
"dormantSince": "2026-09-25",
"status": "DORMANT",
"notifiedOn": "2026-09-25",
"reactivatedOn": "2026-09-25",
"escheatedOn": "2026-09-25",
"escheatmentBasis": "string",
"escheatedToReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}
],
"description": "Dormancy register retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Dormancy register retrieved successfully |
GET Read a guarantee call
GET /credit-union/{reference}/guarantee-call/{callReference}
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
callReference |
Example
Response: GenericResponseGuaranteeCallResponse
curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/guarantee-call/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",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amountSought": 0,
"amountRecovered": 0,
"currencyCode": "string",
"status": "INITIATED",
"noticeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"noticeServedOn": "2026-09-25",
"recoverableFrom": "2026-09-25",
"initiatedByUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"initiatedAt": "2026-09-25T10:00:00Z",
"approvalsRequired": 0,
"approvalsRecorded": 0,
"recoveredAt": "2026-09-25T10:00:00Z",
"rationale": "string",
"recoveries": [
{
"guaranteeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorMemberNumber": "string",
"amountGuaranteed": 0,
"shareBasisPoints": 0,
"amountRecovered": 0,
"shortfall": 0
}
]
},
"description": "Guarantee call retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Guarantee call retrieved successfully |
POST Approve a guarantee recovery
POST /credit-union/{reference}/guarantee-call/{callReference}/approve
Whoever started the recovery may not approve it, and no officer may sign twice.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Path parameters
| Name |
|---|
reference |
callReference |
Example
Request body: CallGuaranteesRequest · Response: GenericResponseGuaranteeCallResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/guarantee-call/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/approve" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"amountSought": 0,
"rationale": "string"
}' {
"amountSought": 0,
"rationale": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amountSought": 0,
"amountRecovered": 0,
"currencyCode": "string",
"status": "INITIATED",
"noticeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"noticeServedOn": "2026-09-25",
"recoverableFrom": "2026-09-25",
"initiatedByUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"initiatedAt": "2026-09-25T10:00:00Z",
"approvalsRequired": 0,
"approvalsRecorded": 0,
"recoveredAt": "2026-09-25T10:00:00Z",
"rationale": "string",
"recoveries": [
{
"guaranteeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorMemberNumber": "string",
"amountGuaranteed": 0,
"shareBasisPoints": 0,
"amountRecovered": 0,
"shortfall": 0
}
]
},
"description": "Recovery approved successfully"
} Responses
| Status | When |
|---|---|
200 | Recovery approved successfully |
POST Recover from the guarantors
POST /credit-union/{reference}/guarantee-call/{callReference}/recover
Recovers pro rata across every accepted guarantee, never sequentially from whoever is easiest to reach, and only once the notice period has elapsed.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
callReference |
Example
Response: GenericResponseGuaranteeCallResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/guarantee-call/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/recover" \
-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",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amountSought": 0,
"amountRecovered": 0,
"currencyCode": "string",
"status": "INITIATED",
"noticeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"noticeServedOn": "2026-09-25",
"recoverableFrom": "2026-09-25",
"initiatedByUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"initiatedAt": "2026-09-25T10:00:00Z",
"approvalsRequired": 0,
"approvalsRecorded": 0,
"recoveredAt": "2026-09-25T10:00:00Z",
"rationale": "string",
"recoveries": [
{
"guaranteeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorMemberNumber": "string",
"amountGuaranteed": 0,
"shareBasisPoints": 0,
"amountRecovered": 0,
"shortfall": 0
}
]
},
"description": "Recovery completed successfully"
} Responses
| Status | When |
|---|---|
200 | Recovery completed successfully |
POST Call a loan's guarantees
POST /credit-union/{reference}/loan/{loanReference}/call-guarantees
The module's most consequential operation. It needs the loan in the worst delinquency bucket, a notice served on every guarantor whose clear days must elapse, and approvals with the initiator excluded. This step serves the notice and starts the clock; nothing is taken yet.
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: CallGuaranteesRequest · Response: GenericResponseGuaranteeCallResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/call-guarantees" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"amountSought": 0,
"rationale": "string"
}' {
"amountSought": 0,
"rationale": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"loanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amountSought": 0,
"amountRecovered": 0,
"currencyCode": "string",
"status": "INITIATED",
"noticeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"noticeServedOn": "2026-09-25",
"recoverableFrom": "2026-09-25",
"initiatedByUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"initiatedAt": "2026-09-25T10:00:00Z",
"approvalsRequired": 0,
"approvalsRecorded": 0,
"recoveredAt": "2026-09-25T10:00:00Z",
"rationale": "string",
"recoveries": [
{
"guaranteeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"guarantorMemberNumber": "string",
"amountGuaranteed": 0,
"shareBasisPoints": 0,
"amountRecovered": 0,
"shortfall": 0
}
]
},
"description": "Guarantee call opened successfully"
} Responses
| Status | When |
|---|---|
200 | Guarantee call opened successfully |
POST Restructure a loan
POST /credit-union/{reference}/loan/{loanReference}/restructure
Writes a new schedule version and keeps the superseded lines. The arrears are not forgiven by rescheduling - they are re-spread over the new schedule - and the borrower may not authorise their own restructure.
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: RestructureLoanRequest · Response: GenericResponseLoanResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/restructure" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"reason": "HARDSHIP",
"termMonths": 0,
"firstInstalmentOn": "2026-09-25",
"rationale": "string",
"boardResolutionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}' {
"reason": "HARDSHIP",
"termMonths": 0,
"firstInstalmentOn": "2026-09-25",
"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": "Loan restructured successfully"
} Responses
| Status | When |
|---|---|
200 | Loan restructured successfully |
POST Write a loan off
POST /credit-union/{reference}/loan/{loanReference}/write-off
Moves no money, which is exactly why it carries the strongest authorisation in the module and an immutable board resolution. The debt survives the write-off: a later recovery still clears 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: WriteOffLoanRequest · Response: GenericResponseLoanResponse
curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/loan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/write-off" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"reason": "IRRECOVERABLE_AFTER_RECOVERY",
"boardResolutionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"rationale": "string"
}' {
"reason": "IRRECOVERABLE_AFTER_RECOVERY",
"boardResolutionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"rationale": "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 written off successfully"
} Responses
| Status | When |
|---|---|
200 | Loan written off successfully |
Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors