Savings automation
- GET
/savings/plan/{reference}/ruleList the automatic saving set up on a plan - POST
/savings/plan/{reference}/ruleSet up automatic saving on a plan - DELETE
/savings/rule/{reference}Withdraw permission for an automatic saving rule - GET
/savings/rule/{reference}Read one automatic saving rule - PATCH
/savings/rule/{reference}Change an automatic saving rule - GET
/savings/rule/{reference}/occurrenceList what an automatic saving rule has done - POST
/savings/rule/{reference}/pausePause an automatic saving rule - POST
/savings/rule/{reference}/resumeResume an automatic saving rule
GET List the automatic saving set up on a plan
GET /savings/plan/{reference}/rule
Every rule on the plan, live or stopped, with when each one next fires
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseListFundingRuleResponse
curl -X GET "https://api.bridgemoni.com/savings/plan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/rule" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"trigger": "MANUAL",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"percentage": 0,
"roundUpMultiple": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"roundUpMultiplier": 0,
"frequency": "DAILY",
"dayOfMonth": 0,
"dayOfWeek": 0,
"perOccurrenceCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCapUsed": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumQualifyingAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumSaveAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"counterpartyFilter": {
"name": "string"
},
"sourceAccountNumber": "string",
"status": "ACTIVE",
"occurrenceCount": 0,
"maximumOccurrences": 0,
"consecutiveFailures": 0,
"accruedNow": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"nextSweepAt": "2026-09-25T10:00:00Z",
"nextRunAt": "2026-09-25T10:00:00Z",
"lastRunAt": "2026-09-25T10:00:00Z",
"endAt": "2026-09-25T10:00:00Z",
"consentChannel": "string",
"consentedAt": "2026-09-25T10:00:00Z",
"creationDateTime": "2026-09-25T10:00:00Z"
}
],
"description": "Rules retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Rules retrieved successfully |
POST Set up automatic saving on a plan
POST /savings/plan/{reference}/rule
Creates a standing instruction that moves money from your wallet into this plan on a schedule you choose, without you having to remember. You keep two protections whatever you set: a cap on any single run, and a cap for the calendar month. A run that finds your wallet short is skipped and tried again rather than failed, and after four failures in a row the rule stops itself rather than keep retrying. One rule of each kind per plan.
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: FundingRuleRequest · Response: GenericResponseFundingRuleResponse
curl -X POST "https://api.bridgemoni.com/savings/plan/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/rule" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"trigger": "MANUAL",
"amount": 2000.0,
"percentage": 10.0,
"roundUpMultiple": 100.0,
"roundUpMultiplier": 2,
"frequency": "DAILY",
"dayOfMonth": 1,
"dayOfWeek": 5,
"startAt": "2026-09-25T10:00:00Z",
"endAt": "2026-09-25T10:00:00Z",
"maximumOccurrences": 52,
"perOccurrenceCap": 500.0,
"monthlyCap": 20000.0,
"minimumQualifyingAmount": 50000.0,
"minimumSaveAmount": 100.0,
"counterpartyFilter": {
"name": "string"
},
"sourceAccountNumber": 1000000042,
"consentChannel": "MOBILE_APP"
}' {
"trigger": "MANUAL",
"amount": 2000.0,
"percentage": 10.0,
"roundUpMultiple": 100.0,
"roundUpMultiplier": 2,
"frequency": "DAILY",
"dayOfMonth": 1,
"dayOfWeek": 5,
"startAt": "2026-09-25T10:00:00Z",
"endAt": "2026-09-25T10:00:00Z",
"maximumOccurrences": 52,
"perOccurrenceCap": 500.0,
"monthlyCap": 20000.0,
"minimumQualifyingAmount": 50000.0,
"minimumSaveAmount": 100.0,
"counterpartyFilter": {
"name": "string"
},
"sourceAccountNumber": 1000000042,
"consentChannel": "MOBILE_APP"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"trigger": "MANUAL",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"percentage": 0,
"roundUpMultiple": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"roundUpMultiplier": 0,
"frequency": "DAILY",
"dayOfMonth": 0,
"dayOfWeek": 0,
"perOccurrenceCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCapUsed": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumQualifyingAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumSaveAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"counterpartyFilter": {
"name": "string"
},
"sourceAccountNumber": "string",
"status": "ACTIVE",
"occurrenceCount": 0,
"maximumOccurrences": 0,
"consecutiveFailures": 0,
"accruedNow": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"nextSweepAt": "2026-09-25T10:00:00Z",
"nextRunAt": "2026-09-25T10:00:00Z",
"lastRunAt": "2026-09-25T10:00:00Z",
"endAt": "2026-09-25T10:00:00Z",
"consentChannel": "string",
"consentedAt": "2026-09-25T10:00:00Z",
"creationDateTime": "2026-09-25T10:00:00Z"
},
"description": "Automatic saving set up successfully"
} Responses
| Status | When |
|---|---|
200 | Automatic saving set up successfully |
DELETE Withdraw permission for an automatic saving rule
DELETE /savings/rule/{reference}
Ends the standing permission you gave. The rule stops for good and will never move money again; the money it already saved stays in your plan and is untouched
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseFundingRuleResponse
curl -X DELETE "https://api.bridgemoni.com/savings/rule/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",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"trigger": "MANUAL",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"percentage": 0,
"roundUpMultiple": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"roundUpMultiplier": 0,
"frequency": "DAILY",
"dayOfMonth": 0,
"dayOfWeek": 0,
"perOccurrenceCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCapUsed": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumQualifyingAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumSaveAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"counterpartyFilter": {
"name": "string"
},
"sourceAccountNumber": "string",
"status": "ACTIVE",
"occurrenceCount": 0,
"maximumOccurrences": 0,
"consecutiveFailures": 0,
"accruedNow": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"nextSweepAt": "2026-09-25T10:00:00Z",
"nextRunAt": "2026-09-25T10:00:00Z",
"lastRunAt": "2026-09-25T10:00:00Z",
"endAt": "2026-09-25T10:00:00Z",
"consentChannel": "string",
"consentedAt": "2026-09-25T10:00:00Z",
"creationDateTime": "2026-09-25T10:00:00Z"
},
"description": "Permission withdrawn successfully"
} Responses
| Status | When |
|---|---|
200 | Permission withdrawn successfully |
GET Read one automatic saving rule
GET /savings/rule/{reference}
The rule as it stands, including what it has already moved this month
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseFundingRuleResponse
curl -X GET "https://api.bridgemoni.com/savings/rule/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",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"trigger": "MANUAL",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"percentage": 0,
"roundUpMultiple": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"roundUpMultiplier": 0,
"frequency": "DAILY",
"dayOfMonth": 0,
"dayOfWeek": 0,
"perOccurrenceCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCapUsed": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumQualifyingAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumSaveAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"counterpartyFilter": {
"name": "string"
},
"sourceAccountNumber": "string",
"status": "ACTIVE",
"occurrenceCount": 0,
"maximumOccurrences": 0,
"consecutiveFailures": 0,
"accruedNow": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"nextSweepAt": "2026-09-25T10:00:00Z",
"nextRunAt": "2026-09-25T10:00:00Z",
"lastRunAt": "2026-09-25T10:00:00Z",
"endAt": "2026-09-25T10:00:00Z",
"consentChannel": "string",
"consentedAt": "2026-09-25T10:00:00Z",
"creationDateTime": "2026-09-25T10:00:00Z"
},
"description": "Rule retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Rule retrieved successfully |
PATCH Change an automatic saving rule
PATCH /savings/rule/{reference}
Changes what the rule moves and how often. Changing the cadence reschedules it from today rather than from when it last fired, so a change never causes a run you did not expect. Runs already made are not affected.
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: UpdateFundingRuleRequest · Response: GenericResponseFundingRuleResponse
curl -X PATCH "https://api.bridgemoni.com/savings/rule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"amount": 0,
"percentage": 0,
"roundUpMultiple": 0,
"roundUpMultiplier": 0,
"frequency": "DAILY",
"dayOfMonth": 0,
"dayOfWeek": 0,
"endAt": "2026-09-25T10:00:00Z",
"maximumOccurrences": 0,
"perOccurrenceCap": 0,
"monthlyCap": 0,
"minimumQualifyingAmount": 0,
"minimumSaveAmount": 0
}' {
"amount": 0,
"percentage": 0,
"roundUpMultiple": 0,
"roundUpMultiplier": 0,
"frequency": "DAILY",
"dayOfMonth": 0,
"dayOfWeek": 0,
"endAt": "2026-09-25T10:00:00Z",
"maximumOccurrences": 0,
"perOccurrenceCap": 0,
"monthlyCap": 0,
"minimumQualifyingAmount": 0,
"minimumSaveAmount": 0
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"trigger": "MANUAL",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"percentage": 0,
"roundUpMultiple": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"roundUpMultiplier": 0,
"frequency": "DAILY",
"dayOfMonth": 0,
"dayOfWeek": 0,
"perOccurrenceCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCapUsed": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumQualifyingAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumSaveAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"counterpartyFilter": {
"name": "string"
},
"sourceAccountNumber": "string",
"status": "ACTIVE",
"occurrenceCount": 0,
"maximumOccurrences": 0,
"consecutiveFailures": 0,
"accruedNow": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"nextSweepAt": "2026-09-25T10:00:00Z",
"nextRunAt": "2026-09-25T10:00:00Z",
"lastRunAt": "2026-09-25T10:00:00Z",
"endAt": "2026-09-25T10:00:00Z",
"consentChannel": "string",
"consentedAt": "2026-09-25T10:00:00Z",
"creationDateTime": "2026-09-25T10:00:00Z"
},
"description": "Rule updated successfully"
} Responses
| Status | When |
|---|---|
200 | Rule updated successfully |
GET List what an automatic saving rule has done
GET /savings/rule/{reference}/occurrence
Every run this rule has made, in order, with what it moved and why any of them did not
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseListFundingOccurrenceResponse
curl -X GET "https://api.bridgemoni.com/savings/rule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/occurrence" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"ruleReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"occurrenceNumber": 0,
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"status": "PENDING",
"failureReason": "string",
"attemptedAt": "2026-09-25T10:00:00Z",
"postedAt": "2026-09-25T10:00:00Z",
"nextAttemptAt": "2026-09-25T10:00:00Z"
}
],
"description": "Runs retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Runs retrieved successfully |
POST Pause an automatic saving rule
POST /savings/rule/{reference}/pause
Stops it firing without losing what you set up. Nothing moves while it is paused, and resuming schedules it from today rather than catching up on the runs it missed
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseFundingRuleResponse
curl -X POST "https://api.bridgemoni.com/savings/rule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/pause" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"trigger": "MANUAL",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"percentage": 0,
"roundUpMultiple": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"roundUpMultiplier": 0,
"frequency": "DAILY",
"dayOfMonth": 0,
"dayOfWeek": 0,
"perOccurrenceCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCapUsed": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumQualifyingAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumSaveAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"counterpartyFilter": {
"name": "string"
},
"sourceAccountNumber": "string",
"status": "ACTIVE",
"occurrenceCount": 0,
"maximumOccurrences": 0,
"consecutiveFailures": 0,
"accruedNow": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"nextSweepAt": "2026-09-25T10:00:00Z",
"nextRunAt": "2026-09-25T10:00:00Z",
"lastRunAt": "2026-09-25T10:00:00Z",
"endAt": "2026-09-25T10:00:00Z",
"consentChannel": "string",
"consentedAt": "2026-09-25T10:00:00Z",
"creationDateTime": "2026-09-25T10:00:00Z"
},
"description": "Rule paused successfully"
} Responses
| Status | When |
|---|---|
200 | Rule paused successfully |
POST Resume an automatic saving rule
POST /savings/rule/{reference}/resume
Starts a paused rule again, or restarts one that stopped itself after repeated failures. It fires next on the schedule counted from today, and the failure count is cleared. A rule whose permission you withdrew cannot be resumed - set up a new one, so that consent is always something you gave rather than something restored
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseFundingRuleResponse
curl -X POST "https://api.bridgemoni.com/savings/rule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/resume" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"trigger": "MANUAL",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"percentage": 0,
"roundUpMultiple": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"roundUpMultiplier": 0,
"frequency": "DAILY",
"dayOfMonth": 0,
"dayOfWeek": 0,
"perOccurrenceCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCap": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"monthlyCapUsed": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumQualifyingAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"minimumSaveAmount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"counterpartyFilter": {
"name": "string"
},
"sourceAccountNumber": "string",
"status": "ACTIVE",
"occurrenceCount": 0,
"maximumOccurrences": 0,
"consecutiveFailures": 0,
"accruedNow": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"nextSweepAt": "2026-09-25T10:00:00Z",
"nextRunAt": "2026-09-25T10:00:00Z",
"lastRunAt": "2026-09-25T10:00:00Z",
"endAt": "2026-09-25T10:00:00Z",
"consentChannel": "string",
"consentedAt": "2026-09-25T10:00:00Z",
"creationDateTime": "2026-09-25T10:00:00Z"
},
"description": "Rule resumed successfully"
} Responses
| Status | When |
|---|---|
200 | Rule resumed successfully |
Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors