Savings agents
- GET
/savings/agent/depositList the collections made into your plans - POST
/savings/agent/depositRecord cash you collected for a saver - GET
/savings/agent/deposit/{reference}Read one agent collection - POST
/savings/agent/deposit/{reference}/confirmConfirm an agent handed your money over - POST
/savings/agent/deposit/{reference}/disputeDispute an agent collection - POST
/savings/agent/deposit/{reference}/otpSend me a new confirmation code
GET List the collections made into your plans
GET /savings/agent/deposit
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Example
Response: GenericResponseListAgentDepositResponse
curl -X GET "https://api.bridgemoni.com/savings/agent/deposit" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"agentUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"saverUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"collectionMethod": "string",
"confirmationMethod": "string",
"status": "COLLECTED",
"contributionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"collectedAt": "2026-09-25T10:00:00Z",
"confirmedAt": "2026-09-25T10:00:00Z",
"autoConfirmsAt": "2026-09-25T10:00:00Z"
}
],
"description": "Deposits retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Deposits retrieved successfully |
POST Record cash you collected for a saver
POST /savings/agent/deposit
The alajo, susu or thrift collector's round. The money moves out of your own wallet into the saver's plan the moment you record it - you have already taken their cash, and they must not be left carrying your credit while a confirmation is pending. The saver then confirms. You may pay into a plan they already have; you can never open one for them. Your daily total and how often you may collect from one person are both capped.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Example
Request body: AgentDepositRequest · Response: GenericResponseAgentDepositResponse
curl -X POST "https://api.bridgemoni.com/savings/agent/deposit" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amount": 5000.0,
"collectionMethod": "CASH",
"confirmationMethod": "OTP",
"deviceId": "string",
"geohash": "string"
}' {
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amount": 5000.0,
"collectionMethod": "CASH",
"confirmationMethod": "OTP",
"deviceId": "string",
"geohash": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"agentUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"saverUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"collectionMethod": "string",
"confirmationMethod": "string",
"status": "COLLECTED",
"contributionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"collectedAt": "2026-09-25T10:00:00Z",
"confirmedAt": "2026-09-25T10:00:00Z",
"autoConfirmsAt": "2026-09-25T10:00:00Z"
},
"description": "Deposit collected successfully"
} Responses
| Status | When |
|---|---|
200 | Deposit collected successfully |
GET Read one agent collection
GET /savings/agent/deposit/{reference}
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseAgentDepositResponse
curl -X GET "https://api.bridgemoni.com/savings/agent/deposit/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",
"agentUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"saverUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"collectionMethod": "string",
"confirmationMethod": "string",
"status": "COLLECTED",
"contributionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"collectedAt": "2026-09-25T10:00:00Z",
"confirmedAt": "2026-09-25T10:00:00Z",
"autoConfirmsAt": "2026-09-25T10:00:00Z"
},
"description": "Deposit retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Deposit retrieved successfully |
POST Confirm an agent handed your money over
POST /savings/agent/deposit/{reference}/confirm
Only the saver can confirm. A deposit nobody confirms inside the window confirms itself and is flagged for review - the money already moved, so this is a trust signal rather than a hold on your savings
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: AgentDepositConfirmRequest · Response: GenericResponseAgentDepositResponse
curl -X POST "https://api.bridgemoni.com/savings/agent/deposit/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/confirm" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"otp": "482913"
}' {
"otp": "482913"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"agentUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"saverUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"collectionMethod": "string",
"confirmationMethod": "string",
"status": "COLLECTED",
"contributionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"collectedAt": "2026-09-25T10:00:00Z",
"confirmedAt": "2026-09-25T10:00:00Z",
"autoConfirmsAt": "2026-09-25T10:00:00Z"
},
"description": "Deposit confirmed successfully"
} Responses
| Status | When |
|---|---|
200 | Deposit confirmed successfully |
POST Dispute an agent collection
POST /savings/agent/deposit/{reference}/dispute
Say that the deposit is wrong - you did not hand that money over, or not that much. Raising a dispute records your account of it; only an operator can reverse the money, and the agent never can
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: AgentDepositDisputeRequest · Response: GenericResponseAgentDepositResponse
curl -X POST "https://api.bridgemoni.com/savings/agent/deposit/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/dispute" \
-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",
"agentUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"saverUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"collectionMethod": "string",
"confirmationMethod": "string",
"status": "COLLECTED",
"contributionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"collectedAt": "2026-09-25T10:00:00Z",
"confirmedAt": "2026-09-25T10:00:00Z",
"autoConfirmsAt": "2026-09-25T10:00:00Z"
},
"description": "Dispute raised successfully"
} Responses
| Status | When |
|---|---|
200 | Dispute raised successfully |
POST Send me a new confirmation code
POST /savings/agent/deposit/{reference}/otp
Codes are short-lived, and the window to confirm a collection is not. If yours has expired, or never arrived, this issues a fresh one and cancels the old. Only the saver can ask, only for a deposit still awaiting confirmation, and only a limited number of times
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseAgentDepositResponse
curl -X POST "https://api.bridgemoni.com/savings/agent/deposit/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/otp" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"agentUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"saverUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"planReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"amount": {
"amount": "10000.00",
"currencyCode": "NGN"
},
"collectionMethod": "string",
"confirmationMethod": "string",
"status": "COLLECTED",
"contributionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"collectedAt": "2026-09-25T10:00:00Z",
"confirmedAt": "2026-09-25T10:00:00Z",
"autoConfirmsAt": "2026-09-25T10:00:00Z"
},
"description": "Confirmation code sent successfully"
} Responses
| Status | When |
|---|---|
200 | Confirmation code sent successfully |
Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors