API reference · Moving money
Beneficiaries Saved recipients with bulk import and validation. About beneficiaries Live
GET List the caller's beneficiaries GET /beneficiary
Every filter is optional. Identifiers are masked here - the full destination is returned only on the save that created a beneficiary and on a single read of it.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Query parameters Name Default kindOptional statusOptional groupReferenceOptional modeOptional searchOptional page0 size20 organizationReferenceOptional
Example Response: BeneficiaryPageResponse
curl Response
Copy curl -X GET "https://api.bridgemoni.com/beneficiary?kind=value&status=value&groupReference=value&mode=value&search=value&page=0&size=20&organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"page": 1,
"size": 1,
"totalElements": 1,
"totalPages": 1,
"content": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"kind": "BRIDGE_USER",
"ownerType": "USER",
"ownerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"alias": "Ada Obi",
"resolvedName": "Ada Obi",
"resolvedNameAt": "2027-03-14T14:30:01",
"identifier": "text",
"maskedIdentifier": "text",
"identifierType": "ACCOUNT_NUMBER",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"availableCurrencies": [
"NGN"
],
"productCode": "Ada Obi",
"providerCode": "text",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"status": "VALUE",
"trustLevel": "NEW",
"favourite": true,
"coolingOffEndsAt": "2027-03-14T14:30:01",
"groups": [
{
"...": "nested"
}
],
"firstPaidAt": "2027-03-14T14:30:01",
"lastPaidAt": "2027-03-14T14:30:01",
"createdAt": "2027-03-14T14:30:01",
"restrictedBy": "HOLDER",
"restrictionReason": "March payroll",
"cardScheme": "text",
"cardLast4": "text",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoNetwork": "text",
"statusReason": "text"
}
]
},
"description": "List the caller's beneficiaries"
} Responses Status When 200Beneficiaries retrieved
POST Save a beneficiary POST /beneficiary
Saves a counterparty so it can be paid again without re-typing it. The counterparty's name is never supplied by the caller - it is resolved and returned, which is the point of saving one. Saving a counterparty you have already saved returns the existing beneficiary and a 200, not a conflict: a double tap on a phone is a network artefact rather than a mistake. A newly saved beneficiary starts inside a cooling-off window and the holder is notified that it was added.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Example Request body: SaveBeneficiaryRequest · Response: BeneficiaryResponse
curl Request Response
Copy curl -X POST "https://api.bridgemoni.com/beneficiary" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"kind": "BRIDGE_USER",
"alias": "Ada Obi",
"favourite": true,
"groupReferences": [
"b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
],
"organizationReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"identifierType": "ACCOUNT_NUMBER",
"identifier": "March payroll",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"accountNumber": "March payroll",
"msisdn": "March payroll",
"providerCode": "provider code",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"productCode": "Ada Obi",
"customerIdentifier": "March payroll",
"cardToken": "March payroll",
"cardScheme": "Ada Obi",
"cardLast4": "Ada Obi",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoAddress": "March payroll",
"cryptoNetwork": "Ada Obi"
}' Copy {
"kind": "BRIDGE_USER",
"alias": "Ada Obi",
"favourite": true,
"groupReferences": [
"b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
],
"organizationReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"identifierType": "ACCOUNT_NUMBER",
"identifier": "March payroll",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"accountNumber": "March payroll",
"msisdn": "March payroll",
"providerCode": "provider code",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"productCode": "Ada Obi",
"customerIdentifier": "March payroll",
"cardToken": "March payroll",
"cardScheme": "Ada Obi",
"cardLast4": "Ada Obi",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoAddress": "March payroll",
"cryptoNetwork": "Ada Obi"
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"kind": "BRIDGE_USER",
"ownerType": "USER",
"ownerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"alias": "Ada Obi",
"resolvedName": "Ada Obi",
"resolvedNameAt": "2027-03-14T14:30:01",
"identifier": "text",
"maskedIdentifier": "text",
"identifierType": "ACCOUNT_NUMBER",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"availableCurrencies": [
"NGN"
],
"productCode": "Ada Obi",
"providerCode": "text",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"status": "VALUE",
"trustLevel": "NEW",
"favourite": true,
"coolingOffEndsAt": "2027-03-14T14:30:01",
"groups": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Ada Obi"
}
],
"firstPaidAt": "2027-03-14T14:30:01",
"lastPaidAt": "2027-03-14T14:30:01",
"createdAt": "2027-03-14T14:30:01",
"restrictedBy": "HOLDER",
"restrictionReason": "March payroll",
"cardScheme": "text",
"cardLast4": "text",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoNetwork": "text",
"statusReason": "text"
},
"description": "Save a beneficiary"
} Responses Status When 200Beneficiary saved
GET List the caller's beneficiary groups GET /beneficiary/group
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Query parameters Name Default organizationReferenceOptional
Example Response: List<BeneficiaryGroupResponse>
curl Response
Copy curl -X GET "https://api.bridgemoni.com/beneficiary/group?organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Ada Obi",
"description": "March payroll",
"beneficiaryCount": 1,
"createdAt": "2027-03-14T14:30:01"
}
],
"description": "List the caller's beneficiary groups"
} Responses Status When 200Beneficiary groups retrieved
POST Create a beneficiary group POST /beneficiary/group
Names are unique per holder, ignoring case - otherwise a picker shows "Family" twice and neither entry is obviously the right one.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Query parameters Name Default organizationReferenceOptional
Example Request body: BeneficiaryGroupRequest · Response: BeneficiaryGroupResponse
curl Request Response
Copy curl -X POST "https://api.bridgemoni.com/beneficiary/group?organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"name": "Ada Obi",
"description": "March payroll"
}' Copy {
"name": "Ada Obi",
"description": "March payroll"
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Ada Obi",
"description": "March payroll",
"beneficiaryCount": 1,
"createdAt": "2027-03-14T14:30:01"
},
"description": "Create a beneficiary group"
} Responses Status When 200Beneficiary group created
DELETE Delete a beneficiary group DELETE /beneficiary/group/{reference}
Deletes the folder, never its contents. A beneficiary that was only in this group becomes ungrouped and is otherwise untouched - tidying a picker must never be a way to lose a payee.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Name Default organizationReferenceOptional
Example Response: Void
curl Response
Copy curl -X DELETE "https://api.bridgemoni.com/beneficiary/group/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"description": "Delete a beneficiary group"
} Responses Status When 200Beneficiary group deleted
PUT Rename or re-describe a beneficiary group PUT /beneficiary/group/{reference}
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Query parameters Name Default organizationReferenceOptional
Example Request body: BeneficiaryGroupRequest · Response: BeneficiaryGroupResponse
curl Request Response
Copy curl -X PUT "https://api.bridgemoni.com/beneficiary/group/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"name": "Ada Obi",
"description": "March payroll"
}' Copy {
"name": "Ada Obi",
"description": "March payroll"
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Ada Obi",
"description": "March payroll",
"beneficiaryCount": 1,
"createdAt": "2027-03-14T14:30:01"
},
"description": "Rename or re-describe a beneficiary group"
} Responses Status When 200Beneficiary group updated
POST Import several beneficiaries POST /beneficiary/import
Saves up to fifty counterparties in one request. Each row is exactly a single save - the same resolution, deduplication, cooling-off window and limits - so an import can never produce a payee a single save would have refused. One bad row does not fail the batch: the response reports every row's outcome in the order they were sent, and a 200 means the request was well formed rather than that every row succeeded. The row cap is a security bound, not a performance one: every row is a name enquiry with the institution that holds the account.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Example Request body: ImportBeneficiariesRequest · Response: ImportBeneficiariesResponse
curl Request Response
Copy curl -X POST "https://api.bridgemoni.com/beneficiary/import" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"beneficiaries": [
{
"kind": "BRIDGE_USER",
"alias": "Ada Obi",
"favourite": true,
"groupReferences": [
"b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
],
"organizationReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"identifierType": "ACCOUNT_NUMBER",
"identifier": "March payroll",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"accountNumber": "March payroll",
"msisdn": "March payroll",
"providerCode": "provider code",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"productCode": "Ada Obi",
"customerIdentifier": "March payroll",
"cardToken": "March payroll",
"cardScheme": "Ada Obi",
"cardLast4": "Ada Obi",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoAddress": "March payroll",
"cryptoNetwork": "Ada Obi"
}
],
"organizationReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}' Copy {
"beneficiaries": [
{
"kind": "BRIDGE_USER",
"alias": "Ada Obi",
"favourite": true,
"groupReferences": [
"b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
],
"organizationReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"identifierType": "ACCOUNT_NUMBER",
"identifier": "March payroll",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"accountNumber": "March payroll",
"msisdn": "March payroll",
"providerCode": "provider code",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"productCode": "Ada Obi",
"customerIdentifier": "March payroll",
"cardToken": "March payroll",
"cardScheme": "Ada Obi",
"cardLast4": "Ada Obi",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoAddress": "March payroll",
"cryptoNetwork": "Ada Obi"
}
],
"organizationReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
} Copy {
"data": {
"saved": 1,
"alreadySaved": 1,
"refused": 1,
"rows": [
{
"index": 1,
"outcome": "SAVED",
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"reason": "March payroll"
}
],
"index": 1,
"outcome": "SAVED",
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"reason": "March payroll"
},
"description": "Import several beneficiaries"
} Responses Status When 200Import processed
POST Save a beneficiary from a payment receipt POST /beneficiary/payment
Saves the payee of a payment already made, using the saveBeneficiaryToken that payment's response carried. For the holder who did not decide at the time - the same operation as the saveBeneficiary flag, reached from the receipt instead. Where the money went is not a parameter: it comes out of the signed token, so what gets saved is provably what the payment reached rather than something the caller described. The token lasts fifteen minutes and is usable only by the holder who made the payment. Redeeming the same token twice returns the same beneficiary rather than a second one.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Example Request body: SaveBeneficiaryFromPaymentRequest · Response: BeneficiaryResponse
curl Request Response
Copy curl -X POST "https://api.bridgemoni.com/beneficiary/payment" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"saveBeneficiaryToken": "text",
"alias": "Ada Obi",
"favourite": true
}' Copy {
"saveBeneficiaryToken": "text",
"alias": "Ada Obi",
"favourite": true
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"kind": "BRIDGE_USER",
"ownerType": "USER",
"ownerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"alias": "Ada Obi",
"resolvedName": "Ada Obi",
"resolvedNameAt": "2027-03-14T14:30:01",
"identifier": "text",
"maskedIdentifier": "text",
"identifierType": "ACCOUNT_NUMBER",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"availableCurrencies": [
"NGN"
],
"productCode": "Ada Obi",
"providerCode": "text",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"status": "VALUE",
"trustLevel": "NEW",
"favourite": true,
"coolingOffEndsAt": "2027-03-14T14:30:01",
"groups": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Ada Obi"
}
],
"firstPaidAt": "2027-03-14T14:30:01",
"lastPaidAt": "2027-03-14T14:30:01",
"createdAt": "2027-03-14T14:30:01",
"restrictedBy": "HOLDER",
"restrictionReason": "March payroll",
"cardScheme": "text",
"cardLast4": "text",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoNetwork": "text",
"statusReason": "text"
},
"description": "Save a beneficiary from a payment receipt"
} Responses Status When 200Beneficiary saved
GET Recent beneficiaries GET /beneficiary/recent
A bounded, unpaged picker feed. basis=ADDED answers 'who have I just added?' and is the confirmation feed after a save; basis=PAID answers 'who do I keep paying?' and is the top of a payment screen. A limit above the tenant's maximum is refused rather than clamped - a client asking for five hundred has a bug, and clamping hides it.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Query parameters Name Default basisOptional kindOptional limitOptional organizationReferenceOptional
Example Response: RecentBeneficiariesResponse
curl Response
Copy curl -X GET "https://api.bridgemoni.com/beneficiary/recent?basis=value&kind=value&limit=value&organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"basis": "ADDED",
"windowDays": 1,
"beneficiaries": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"kind": "BRIDGE_USER",
"ownerType": "USER",
"ownerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"alias": "Ada Obi",
"resolvedName": "Ada Obi",
"resolvedNameAt": "2027-03-14T14:30:01",
"identifier": "text",
"maskedIdentifier": "text",
"identifierType": "ACCOUNT_NUMBER",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"availableCurrencies": [
"NGN"
],
"productCode": "Ada Obi",
"providerCode": "text",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"status": "VALUE",
"trustLevel": "NEW",
"favourite": true,
"coolingOffEndsAt": "2027-03-14T14:30:01",
"groups": [
{
"...": "nested"
}
],
"firstPaidAt": "2027-03-14T14:30:01",
"lastPaidAt": "2027-03-14T14:30:01",
"createdAt": "2027-03-14T14:30:01",
"restrictedBy": "HOLDER",
"restrictionReason": "March payroll",
"cardScheme": "text",
"cardLast4": "text",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoNetwork": "text",
"statusReason": "text"
}
]
},
"description": "Recent beneficiaries"
} Responses Status When 200Recent beneficiaries retrieved
DELETE Delete a beneficiary DELETE /beneficiary/{reference}
Archives rather than removes - payment history still refers to it, and a receipt from six months ago still has to resolve a name. Saving the same counterparty again afterwards creates a genuinely new beneficiary with a fresh cooling-off window, rather than reviving this one.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Name Default organizationReferenceOptional
Example Response: BeneficiaryResponse
curl Response
Copy curl -X DELETE "https://api.bridgemoni.com/beneficiary/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"kind": "BRIDGE_USER",
"ownerType": "USER",
"ownerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"alias": "Ada Obi",
"resolvedName": "Ada Obi",
"resolvedNameAt": "2027-03-14T14:30:01",
"identifier": "text",
"maskedIdentifier": "text",
"identifierType": "ACCOUNT_NUMBER",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"availableCurrencies": [
"NGN"
],
"productCode": "Ada Obi",
"providerCode": "text",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"status": "VALUE",
"trustLevel": "NEW",
"favourite": true,
"coolingOffEndsAt": "2027-03-14T14:30:01",
"groups": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Ada Obi"
}
],
"firstPaidAt": "2027-03-14T14:30:01",
"lastPaidAt": "2027-03-14T14:30:01",
"createdAt": "2027-03-14T14:30:01",
"restrictedBy": "HOLDER",
"restrictionReason": "March payroll",
"cardScheme": "text",
"cardLast4": "text",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoNetwork": "text",
"statusReason": "text"
},
"description": "Delete a beneficiary"
} Responses Status When 200Beneficiary deleted
GET Read one beneficiary GET /beneficiary/{reference}
One of only two responses that carry the destination in full, because a holder confirming they are about to pay the right account needs to see it.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Name Default organizationReferenceOptional
Example Response: BeneficiaryResponse
curl Response
Copy curl -X GET "https://api.bridgemoni.com/beneficiary/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"kind": "BRIDGE_USER",
"ownerType": "USER",
"ownerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"alias": "Ada Obi",
"resolvedName": "Ada Obi",
"resolvedNameAt": "2027-03-14T14:30:01",
"identifier": "text",
"maskedIdentifier": "text",
"identifierType": "ACCOUNT_NUMBER",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"availableCurrencies": [
"NGN"
],
"productCode": "Ada Obi",
"providerCode": "text",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"status": "VALUE",
"trustLevel": "NEW",
"favourite": true,
"coolingOffEndsAt": "2027-03-14T14:30:01",
"groups": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Ada Obi"
}
],
"firstPaidAt": "2027-03-14T14:30:01",
"lastPaidAt": "2027-03-14T14:30:01",
"createdAt": "2027-03-14T14:30:01",
"restrictedBy": "HOLDER",
"restrictionReason": "March payroll",
"cardScheme": "text",
"cardLast4": "text",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoNetwork": "text",
"statusReason": "text"
},
"description": "Read one beneficiary"
} Responses Status When 200Beneficiary retrieved
PATCH Amend a beneficiary PATCH /beneficiary/{reference}
Alias, favourite and groups only. Where money goes can never be edited: changing a destination would carry the cooling-off window, the trust level and the whole payment history onto a payee the holder has never paid. To change a destination, delete this beneficiary and save the new one.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Query parameters Name Default organizationReferenceOptional
Example Request body: UpdateBeneficiaryRequest · Response: BeneficiaryResponse
curl Request Response
Copy curl -X PATCH "https://api.bridgemoni.com/beneficiary/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"alias": "Ada Obi",
"favourite": true,
"groupReferences": [
"b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
]
}' Copy {
"alias": "Ada Obi",
"favourite": true,
"groupReferences": [
"b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
]
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"kind": "BRIDGE_USER",
"ownerType": "USER",
"ownerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"alias": "Ada Obi",
"resolvedName": "Ada Obi",
"resolvedNameAt": "2027-03-14T14:30:01",
"identifier": "text",
"maskedIdentifier": "text",
"identifierType": "ACCOUNT_NUMBER",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"availableCurrencies": [
"NGN"
],
"productCode": "Ada Obi",
"providerCode": "text",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"status": "VALUE",
"trustLevel": "NEW",
"favourite": true,
"coolingOffEndsAt": "2027-03-14T14:30:01",
"groups": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Ada Obi"
}
],
"firstPaidAt": "2027-03-14T14:30:01",
"lastPaidAt": "2027-03-14T14:30:01",
"createdAt": "2027-03-14T14:30:01",
"restrictedBy": "HOLDER",
"restrictionReason": "March payroll",
"cardScheme": "text",
"cardLast4": "text",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoNetwork": "text",
"statusReason": "text"
},
"description": "Amend a beneficiary"
} Responses Status When 200Beneficiary updated
POST Accept a changed counterparty name POST /beneficiary/{reference}/confirm-name
Clears STALE on a beneficiary whose counterparty name changed underneath it, returning it to ACTIVE and payable. The new name must be echoed back exactly as returned: a flag could be sent by a client that never showed the holder what changed, and what changed here is who the money reaches. Its own endpoint rather than a PATCH field, because PATCH never touches verification state and this is not a cosmetic edit. Needs a validated PIN.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Query parameters Name Default organizationReferenceOptional
Example Request body: ConfirmBeneficiaryNameRequest · Response: BeneficiaryResponse
curl Request Response
Copy curl -X POST "https://api.bridgemoni.com/beneficiary/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/confirm-name?organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"acceptResolvedName": "Ada Obi"
}' Copy {
"acceptResolvedName": "Ada Obi"
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"kind": "BRIDGE_USER",
"ownerType": "USER",
"ownerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"alias": "Ada Obi",
"resolvedName": "Ada Obi",
"resolvedNameAt": "2027-03-14T14:30:01",
"identifier": "text",
"maskedIdentifier": "text",
"identifierType": "ACCOUNT_NUMBER",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"availableCurrencies": [
"NGN"
],
"productCode": "Ada Obi",
"providerCode": "text",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"status": "VALUE",
"trustLevel": "NEW",
"favourite": true,
"coolingOffEndsAt": "2027-03-14T14:30:01",
"groups": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Ada Obi"
}
],
"firstPaidAt": "2027-03-14T14:30:01",
"lastPaidAt": "2027-03-14T14:30:01",
"createdAt": "2027-03-14T14:30:01",
"restrictedBy": "HOLDER",
"restrictionReason": "March payroll",
"cardScheme": "text",
"cardLast4": "text",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoNetwork": "text",
"statusReason": "text"
},
"description": "Accept a changed counterparty name"
} Responses Status When 200Name confirmed
POST Freeze a beneficiary POST /beneficiary/{reference}/restrict
Stops this payee being paid until it is unfrozen. Deliberately needs no PIN: freezing only ever removes capability, and somebody who has just seen a payment they do not recognise should not have to find their PIN before they can stop the next one. Unfreezing does need one. Reachable from any live beneficiary, including a brand new one - a payee added an hour ago is the one most likely to want stopping.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Query parameters Name Default organizationReferenceOptional
Example Response: BeneficiaryResponse
curl Response
Copy curl -X POST "https://api.bridgemoni.com/beneficiary/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/restrict?organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"kind": "BRIDGE_USER",
"ownerType": "USER",
"ownerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"alias": "Ada Obi",
"resolvedName": "Ada Obi",
"resolvedNameAt": "2027-03-14T14:30:01",
"identifier": "text",
"maskedIdentifier": "text",
"identifierType": "ACCOUNT_NUMBER",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"availableCurrencies": [
"NGN"
],
"productCode": "Ada Obi",
"providerCode": "text",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"status": "VALUE",
"trustLevel": "NEW",
"favourite": true,
"coolingOffEndsAt": "2027-03-14T14:30:01",
"groups": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Ada Obi"
}
],
"firstPaidAt": "2027-03-14T14:30:01",
"lastPaidAt": "2027-03-14T14:30:01",
"createdAt": "2027-03-14T14:30:01",
"restrictedBy": "HOLDER",
"restrictionReason": "March payroll",
"cardScheme": "text",
"cardLast4": "text",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoNetwork": "text",
"statusReason": "text"
},
"description": "Freeze a beneficiary"
} Responses Status When 200Beneficiary frozen
POST Mark a beneficiary trusted POST /beneficiary/{reference}/trust
Reduces the friction of paying a counterparty you have an established relationship with. Reachable only from an ESTABLISHED beneficiary - one whose cooling-off window has passed and which you have successfully paid at least once. Trust is what a relationship earns; a payee that could be trusted on the day it was added would hand anyone holding your session the whole ladder in one request. Needs a validated PIN and an explicit confirmation echo.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Query parameters Name Default organizationReferenceOptional
Example Request body: TrustBeneficiaryRequest · Response: BeneficiaryResponse
curl Request Response
Copy curl -X POST "https://api.bridgemoni.com/beneficiary/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/trust?organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"confirmation": "text"
}' Copy {
"confirmation": "text"
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"kind": "BRIDGE_USER",
"ownerType": "USER",
"ownerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"alias": "Ada Obi",
"resolvedName": "Ada Obi",
"resolvedNameAt": "2027-03-14T14:30:01",
"identifier": "text",
"maskedIdentifier": "text",
"identifierType": "ACCOUNT_NUMBER",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"availableCurrencies": [
"NGN"
],
"productCode": "Ada Obi",
"providerCode": "text",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"status": "VALUE",
"trustLevel": "NEW",
"favourite": true,
"coolingOffEndsAt": "2027-03-14T14:30:01",
"groups": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Ada Obi"
}
],
"firstPaidAt": "2027-03-14T14:30:01",
"lastPaidAt": "2027-03-14T14:30:01",
"createdAt": "2027-03-14T14:30:01",
"restrictedBy": "HOLDER",
"restrictionReason": "March payroll",
"cardScheme": "text",
"cardLast4": "text",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoNetwork": "text",
"statusReason": "text"
},
"description": "Mark a beneficiary trusted"
} Responses Status When 200Beneficiary trusted
POST Unfreeze a beneficiary POST /beneficiary/{reference}/unrestrict
Lifts a freeze you placed. A freeze placed by a compliance review is refused here and says so plainly - a holder who could lift one would make it decorative. Needs a validated PIN, because this is the direction that restores capability. The beneficiary returns to NEW and the cooling-off sweep re-establishes it on the same rules as the first time, rather than being handed back a trust level it held before you were worried about it.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Name Default organizationReferenceOptional
Example Response: BeneficiaryResponse
curl Response
Copy curl -X POST "https://api.bridgemoni.com/beneficiary/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/unrestrict?organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"kind": "BRIDGE_USER",
"ownerType": "USER",
"ownerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"alias": "Ada Obi",
"resolvedName": "Ada Obi",
"resolvedNameAt": "2027-03-14T14:30:01",
"identifier": "text",
"maskedIdentifier": "text",
"identifierType": "ACCOUNT_NUMBER",
"communityReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"availableCurrencies": [
"NGN"
],
"productCode": "Ada Obi",
"providerCode": "text",
"providerName": "Ada Obi",
"countryCode": "NG",
"currencyCode": "NGN",
"status": "VALUE",
"trustLevel": "NEW",
"favourite": true,
"coolingOffEndsAt": "2027-03-14T14:30:01",
"groups": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Ada Obi"
}
],
"firstPaidAt": "2027-03-14T14:30:01",
"lastPaidAt": "2027-03-14T14:30:01",
"createdAt": "2027-03-14T14:30:01",
"restrictedBy": "HOLDER",
"restrictionReason": "March payroll",
"cardScheme": "text",
"cardLast4": "text",
"cardExpiryMonth": 1,
"cardExpiryYear": 1,
"cryptoNetwork": "text",
"statusReason": "text"
},
"description": "Unfreeze a beneficiary"
} Responses Status When 200Beneficiary unfrozen
POST Re-verify a beneficiary POST /beneficiary/{reference}/verify
Asks again whether the destination still resolves, and to the same name. This is the recovery path for a beneficiary saved while its rail was unreachable, and the detection path for a counterparty whose name has changed underneath it.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Name Default organizationReferenceOptional
Example Response: VerifyBeneficiaryResponse
curl Response
Copy curl -X POST "https://api.bridgemoni.com/beneficiary/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/verify?organizationReference=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"outcome": "UNCHANGED",
"resolvedName": "Ada Obi",
"previousResolvedName": "Ada Obi",
"resolvedNameAt": "2027-03-14T14:30:01",
"status": "VALUE"
},
"description": "Re-verify a beneficiary"
} Responses Status When 200Beneficiary re-verified