API reference · Communities & institutions
Credit union migration POST Stage a legacy book POST /credit-union/{reference}/migration/batch
Rows land in a staging set, never in live tables. Nothing is created until every row validates, the totals tie to the society's own assertion, and the board has signed the dry run's diff.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Example Request body: StageMigrationRequest · Response: GenericResponseMigrationBatchResponse
curl Request Response
Copy curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/migration/batch" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"sourceSystem": "string",
"assertedShareCapital": 0,
"assertedDeposits": 0,
"assertedLoanPortfolio": 0,
"accumulatorBasis": "SUPPLIED_BY_SOURCE",
"openingBalanceDate": "2026-09-25",
"note": "string",
"records": [
{
"recordType": "MEMBER",
"sourceIdentifier": "string",
"parentSourceIdentifier": "string",
"values": {}
}
]
}' Copy {
"sourceSystem": "string",
"assertedShareCapital": 0,
"assertedDeposits": 0,
"assertedLoanPortfolio": 0,
"accumulatorBasis": "SUPPLIED_BY_SOURCE",
"openingBalanceDate": "2026-09-25",
"note": "string",
"records": [
{
"recordType": "MEMBER",
"sourceIdentifier": "string",
"parentSourceIdentifier": "string",
"values": {}
}
]
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"sourceSystem": "string",
"status": "STAGED",
"recordCount": 0,
"validCount": 0,
"invalidCount": 0,
"warningCount": 0,
"assertedTotals": {},
"computedTotals": {},
"variance": {},
"tiesToTheAssertedBook": true,
"accumulatorBasis": "SUPPLIED_BY_SOURCE",
"partYearDisclosureRequired": true,
"openingBalanceDate": "2026-09-25",
"signedOffBy": "string",
"signedOffAt": "2026-09-25T10:00:00Z",
"appliedAt": "2026-09-25T10:00:00Z",
"openingJournalReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"abandonReason": "string",
"blockers": [
"string"
]
},
"description": "Migration batch staged successfully"
} Responses Status When 200Migration batch staged successfully
GET List this union's migration batches GET /credit-union/{reference}/migration/batches
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Example Response: GenericResponseListMigrationBatchResponse
curl Response
Copy curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/migration/batches" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"sourceSystem": "string",
"status": "STAGED",
"recordCount": 0,
"validCount": 0,
"invalidCount": 0,
"warningCount": 0,
"assertedTotals": {},
"computedTotals": {},
"variance": {},
"tiesToTheAssertedBook": true,
"accumulatorBasis": "SUPPLIED_BY_SOURCE",
"partYearDisclosureRequired": true,
"openingBalanceDate": "2026-09-25",
"signedOffBy": "string",
"signedOffAt": "2026-09-25T10:00:00Z",
"appliedAt": "2026-09-25T10:00:00Z",
"openingJournalReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"abandonReason": "string",
"blockers": [
"string"
]
}
],
"description": "Migration batches retrieved successfully"
} Responses Status When 200Migration batches retrieved successfully
POST Abandon a migration batch POST /credit-union/{reference}/migration/{batchReference}/abandonment
An attempt that will not be applied is closed rather than left open.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Name referencebatchReference
Query parameters Name Default reasonOptional
Example Response: GenericResponseMigrationBatchResponse
curl Response
Copy curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/migration/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/abandonment" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"sourceSystem": "string",
"status": "STAGED",
"recordCount": 0,
"validCount": 0,
"invalidCount": 0,
"warningCount": 0,
"assertedTotals": {},
"computedTotals": {},
"variance": {},
"tiesToTheAssertedBook": true,
"accumulatorBasis": "SUPPLIED_BY_SOURCE",
"partYearDisclosureRequired": true,
"openingBalanceDate": "2026-09-25",
"signedOffBy": "string",
"signedOffAt": "2026-09-25T10:00:00Z",
"appliedAt": "2026-09-25T10:00:00Z",
"openingJournalReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"abandonReason": "string",
"blockers": [
"string"
]
},
"description": "Migration batch abandoned successfully"
} Responses Status When 200Migration batch abandoned successfully
POST Apply a signed, reconciled migration POST /credit-union/{reference}/migration/{batchReference}/apply
Refused unless the reconciliation ties, the diff still matches what was signed, and every row validated. Historic schedules land as given and are marked as such.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Name referencebatchReference
Example Response: GenericResponseMigrationBatchResponse
curl Response
Copy curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/migration/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/apply" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"sourceSystem": "string",
"status": "STAGED",
"recordCount": 0,
"validCount": 0,
"invalidCount": 0,
"warningCount": 0,
"assertedTotals": {},
"computedTotals": {},
"variance": {},
"tiesToTheAssertedBook": true,
"accumulatorBasis": "SUPPLIED_BY_SOURCE",
"partYearDisclosureRequired": true,
"openingBalanceDate": "2026-09-25",
"signedOffBy": "string",
"signedOffAt": "2026-09-25T10:00:00Z",
"appliedAt": "2026-09-25T10:00:00Z",
"openingJournalReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"abandonReason": "string",
"blockers": [
"string"
]
},
"description": "Migration applied successfully"
} Responses Status When 200Migration applied successfully
POST Produce the diff the board signs POST /credit-union/{reference}/migration/{batchReference}/dry-run
What the live run would create, what it would open the books with, and what it would refuse. The hash is checked again at the live run.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Name referencebatchReference
Example Response: GenericResponseMigrationDiffResponse
curl Response
Copy curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/migration/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/dry-run" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"batchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"wouldCreate": {},
"openingBalances": {},
"recordsRefused": 0,
"refused": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"recordType": "MEMBER",
"sourceIdentifier": "string",
"parentSourceIdentifier": "string",
"values": {},
"outcome": "VALID",
"failures": [
"MEMBER_NOT_RESOLVABLE"
],
"narrative": "string",
"createdReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}
],
"diffHash": "string",
"mayApply": true,
"blockers": [
"string"
]
},
"description": "Migration dry run produced successfully"
} Responses Status When 200Migration dry run produced successfully
POST Reconcile the staged rows to the society's own totals POST /credit-union/{reference}/migration/{batchReference}/reconciliation
Line by line, and not overridable. A society whose book does not tie has a problem the migration did not create and must not inherit.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Name referencebatchReference
Example Response: GenericResponseMigrationBatchResponse
curl Response
Copy curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/migration/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/reconciliation" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"sourceSystem": "string",
"status": "STAGED",
"recordCount": 0,
"validCount": 0,
"invalidCount": 0,
"warningCount": 0,
"assertedTotals": {},
"computedTotals": {},
"variance": {},
"tiesToTheAssertedBook": true,
"accumulatorBasis": "SUPPLIED_BY_SOURCE",
"partYearDisclosureRequired": true,
"openingBalanceDate": "2026-09-25",
"signedOffBy": "string",
"signedOffAt": "2026-09-25T10:00:00Z",
"appliedAt": "2026-09-25T10:00:00Z",
"openingJournalReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"abandonReason": "string",
"blockers": [
"string"
]
},
"description": "Migration batch reconciled successfully"
} Responses Status When 200Migration batch reconciled successfully
GET List a batch's staged rows with their validation outcome GET /credit-union/{reference}/migration/{batchReference}/records
The source identifier is kept for the life of the record, so a discrepancy found years later is traceable to the row it came in on.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Name referencebatchReference
Example Response: GenericResponseListMigrationRecordResponse
curl Response
Copy curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/migration/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/records" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"recordType": "MEMBER",
"sourceIdentifier": "string",
"parentSourceIdentifier": "string",
"values": {},
"outcome": "VALID",
"failures": [
"MEMBER_NOT_RESOLVABLE"
],
"narrative": "string",
"createdReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}
],
"description": "Migration records retrieved successfully"
} Responses Status When 200Migration records retrieved successfully
POST Record the board's signature on a dry-run diff POST /credit-union/{reference}/migration/{batchReference}/sign-off
A migration is applied after a signed dry-run diff, not before.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Name referencebatchReference
Example Request body: SignOffMigrationRequest · Response: GenericResponseMigrationBatchResponse
curl Request Response
Copy curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/migration/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/sign-off" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"signedOffBy": "string",
"diffHash": "string",
"minuteDocumentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}' Copy {
"signedOffBy": "string",
"diffHash": "string",
"minuteDocumentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"sourceSystem": "string",
"status": "STAGED",
"recordCount": 0,
"validCount": 0,
"invalidCount": 0,
"warningCount": 0,
"assertedTotals": {},
"computedTotals": {},
"variance": {},
"tiesToTheAssertedBook": true,
"accumulatorBasis": "SUPPLIED_BY_SOURCE",
"partYearDisclosureRequired": true,
"openingBalanceDate": "2026-09-25",
"signedOffBy": "string",
"signedOffAt": "2026-09-25T10:00:00Z",
"appliedAt": "2026-09-25T10:00:00Z",
"openingJournalReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"abandonReason": "string",
"blockers": [
"string"
]
},
"description": "Migration dry run signed successfully"
} Responses Status When 200Migration dry run signed successfully
POST Validate every staged row POST /credit-union/{reference}/migration/{batchReference}/validate
Every member resolvable, every class and product in the catalogue, every schedule arithmetically consistent, every guarantor a member of this same society.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Name referencebatchReference
Example Response: GenericResponseMigrationBatchResponse
curl Response
Copy curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/migration/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/validate" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"sourceSystem": "string",
"status": "STAGED",
"recordCount": 0,
"validCount": 0,
"invalidCount": 0,
"warningCount": 0,
"assertedTotals": {},
"computedTotals": {},
"variance": {},
"tiesToTheAssertedBook": true,
"accumulatorBasis": "SUPPLIED_BY_SOURCE",
"partYearDisclosureRequired": true,
"openingBalanceDate": "2026-09-25",
"signedOffBy": "string",
"signedOffAt": "2026-09-25T10:00:00Z",
"appliedAt": "2026-09-25T10:00:00Z",
"openingJournalReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"abandonReason": "string",
"blockers": [
"string"
]
},
"description": "Migration batch validated successfully"
} Responses Status When 200Migration batch validated successfully