Mandates
Mandates and scheduled pulls. Moves money once a processor is connected. About direct debit Partner required
- POST
/collector/{reference}/mandateCreate a standing authority to collect from a payer - GET
/collector/{reference}/mandatesList the mandates a collector holds - POST
/mandate/pull/{reference}/cancelCancel a scheduled collection - GET
/mandate/{reference}Read a mandate, including the consent the payer gave - POST
/mandate/{reference}/cancelCancel a mandate - POST
/mandate/{reference}/pullSchedule a collection under a mandate - GET
/mandate/{reference}/pullsList the collections taken, and due, under a mandate
POST Create a standing authority to collect from a payer
POST /collector/{reference}/mandate
The consent text is required and is stored exactly as the payer saw it - not a link to a terms page, because a terms page changes and the question asked eight weeks later is what this payer agreed to on the day. A mandate cannot become active without retrievable evidence, and the pull path refuses without it too. The payer agrees to three things and all three are enforced on every collection: how much at a time, how often in a period, and between which dates.
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: CreateMandateRequest · Response: GenericResponseMandateResponse
curl -X POST "https://api.bridgemoni.com/collector/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/mandate" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"mandateFamily": "string",
"payerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"payerDisplayName": "string",
"instrumentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"currencyCode": "string",
"maxAmountPerPull": "string",
"maxPullsPerPeriod": 0,
"period": "string",
"validFrom": "string",
"validTo": "string",
"preNotificationDays": 0,
"consentText": "string",
"consentVersion": "string",
"consentCapturedAt": "string",
"consentEvidenceReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}' {
"mandateFamily": "string",
"payerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"payerDisplayName": "string",
"instrumentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"currencyCode": "string",
"maxAmountPerPull": "string",
"maxPullsPerPeriod": 0,
"period": "string",
"validFrom": "string",
"validTo": "string",
"preNotificationDays": 0,
"consentText": "string",
"consentVersion": "string",
"consentCapturedAt": "string",
"consentEvidenceReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"collectorReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"railCode": "string",
"mandateFamily": "string",
"status": "string",
"payerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"payerDisplayName": "string",
"externalMandateReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"currencyCode": "string",
"maxAmountPerPull": "string",
"maxPullsPerPeriod": 0,
"period": "string",
"validFrom": "string",
"validTo": "string",
"preNotificationDays": 0,
"consentText": "string",
"consentVersion": "string",
"consentCapturedAt": "string",
"consentEvidenceReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"consecutiveFailures": 0,
"authenticationRedirectUrl": "string",
"cancelledAt": "string",
"cancelledBy": "string"
},
"description": "Mandate created successfully"
} Responses
| Status | When |
|---|---|
200 | Mandate created successfully |
GET List the mandates a collector holds
GET /collector/{reference}/mandates
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseListMandateResponse
curl -X GET "https://api.bridgemoni.com/collector/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/mandates" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"collectorReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"railCode": "string",
"mandateFamily": "string",
"status": "string",
"payerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"payerDisplayName": "string",
"externalMandateReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"currencyCode": "string",
"maxAmountPerPull": "string",
"maxPullsPerPeriod": 0,
"period": "string",
"validFrom": "string",
"validTo": "string",
"preNotificationDays": 0,
"consentText": "string",
"consentVersion": "string",
"consentCapturedAt": "string",
"consentEvidenceReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"consecutiveFailures": 0,
"authenticationRedirectUrl": "string",
"cancelledAt": "string",
"cancelledBy": "string"
}
],
"description": "Mandates retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Mandates retrieved successfully |
POST Cancel a scheduled collection
POST /mandate/pull/{reference}/cancel
Only while it is still ours to cancel. Once it has gone to the scheme it can only be returned, which is a different thing and leaves a different record.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseMandatePullResponse
curl -X POST "https://api.bridgemoni.com/mandate/pull/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/cancel" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"mandateReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"status": "string",
"amount": "string",
"currencyCode": "string",
"narration": "string",
"collectionDate": "string",
"preNotifiedAt": "string",
"preNotificationText": "string",
"submittedAt": "string",
"collectedAt": "string",
"receiptReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"attemptNumber": 0,
"returnCode": "string",
"failureReason": "string",
"returnedAt": "string"
},
"description": "Collection cancelled successfully"
} Responses
| Status | When |
|---|---|
200 | Collection cancelled successfully |
GET Read a mandate, including the consent the payer gave
GET /mandate/{reference}
The consent text comes back with it. A mandate whose evidence cannot be produced on demand is not defensible when the debit is challenged, and on several schemes the payer has eight weeks to challenge it without giving a reason.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseMandateResponse
curl -X GET "https://api.bridgemoni.com/mandate/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",
"collectorReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"railCode": "string",
"mandateFamily": "string",
"status": "string",
"payerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"payerDisplayName": "string",
"externalMandateReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"currencyCode": "string",
"maxAmountPerPull": "string",
"maxPullsPerPeriod": 0,
"period": "string",
"validFrom": "string",
"validTo": "string",
"preNotificationDays": 0,
"consentText": "string",
"consentVersion": "string",
"consentCapturedAt": "string",
"consentEvidenceReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"consecutiveFailures": 0,
"authenticationRedirectUrl": "string",
"cancelledAt": "string",
"cancelledBy": "string"
},
"description": "Mandate retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Mandate retrieved successfully |
POST Cancel a mandate
POST /mandate/{reference}/cancel
Immediate and unilateral. Every collection scheduled under it that has not yet gone to the scheme dies with it; one already submitted cannot be recalled and is left alone rather than marked cancelled, because saying it was cancelled when the money is on its way is a lie the payer would act on. The cancellation stands here even if the provider is unreachable - a payer's revocation must not wait on an outage.
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: CancelMandateRequest · Response: GenericResponseMandateResponse
curl -X POST "https://api.bridgemoni.com/mandate/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/cancel" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"cancelledBy": "string",
"reason": "string"
}' {
"cancelledBy": "string",
"reason": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"collectorReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"railCode": "string",
"mandateFamily": "string",
"status": "string",
"payerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"payerDisplayName": "string",
"externalMandateReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"currencyCode": "string",
"maxAmountPerPull": "string",
"maxPullsPerPeriod": 0,
"period": "string",
"validFrom": "string",
"validTo": "string",
"preNotificationDays": 0,
"consentText": "string",
"consentVersion": "string",
"consentCapturedAt": "string",
"consentEvidenceReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"consecutiveFailures": 0,
"authenticationRedirectUrl": "string",
"cancelledAt": "string",
"cancelledBy": "string"
},
"description": "Mandate cancelled successfully"
} Responses
| Status | When |
|---|---|
200 | Mandate cancelled successfully |
POST Schedule a collection under a mandate
POST /mandate/{reference}/pull
Checked against what the payer agreed to at the moment it is scheduled and again at the moment it is submitted, because a payer may cancel in between and a cancellation that arrives after scheduling still has to stop the debit.
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: SchedulePullRequest · Response: GenericResponseMandatePullResponse
curl -X POST "https://api.bridgemoni.com/mandate/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/pull" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"amount": "string",
"collectionDate": "string",
"narration": "string",
"requestReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}' {
"amount": "string",
"collectionDate": "string",
"narration": "string",
"requestReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"mandateReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"status": "string",
"amount": "string",
"currencyCode": "string",
"narration": "string",
"collectionDate": "string",
"preNotifiedAt": "string",
"preNotificationText": "string",
"submittedAt": "string",
"collectedAt": "string",
"receiptReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"attemptNumber": 0,
"returnCode": "string",
"failureReason": "string",
"returnedAt": "string"
},
"description": "Collection scheduled successfully"
} Responses
| Status | When |
|---|---|
200 | Collection scheduled successfully |
GET List the collections taken, and due, under a mandate
GET /mandate/{reference}/pulls
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseListMandatePullResponse
curl -X GET "https://api.bridgemoni.com/mandate/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/pulls" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"mandateReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"status": "string",
"amount": "string",
"currencyCode": "string",
"narration": "string",
"collectionDate": "string",
"preNotifiedAt": "string",
"preNotificationText": "string",
"submittedAt": "string",
"collectedAt": "string",
"receiptReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"attemptNumber": 0,
"returnCode": "string",
"failureReason": "string",
"returnedAt": "string"
}
],
"description": "Collections retrieved successfully"
} Responses
| Status | When |
|---|---|
200 | Collections retrieved successfully |
Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors