Manage pooled account members
Pooled safeguarding or client money accounts are used to hold money on behalf of multiple customers, also known as members of the pool. You are responsible for making sure membership of the pooled account is accurate and up-to-date.
This guide will show you how to:
- add and remove members of a pooled safeguarding or pooled client money account.
- confirm the membership is up-to-date at least once every 24 hours
A pooled account with no members cannot receive payments.
Prerequisites
Only users with the compliance
role can manage pooled account members.
A pooled account is a safeguarding or client money account with pooled-funds
set to true
.
You will need the:
- `pooled-account-membership-updates-url` to update the pooled account membership.
- `pooled-account-memberships-url` to list the members of a pooled account.
These URLs are returned in the response when a pooled account is first created. They can also be retrieved by getting the account.
Each pool member must be represented as a legal person in our system.
Add and remove members
Make a request to the pooled-account-membership-updates-url
:
POST /bank/accounts/<bank-account-id>/membership-updates
In the request body, send two lists of legal person URLs:
additions
: Legal person URLs of members to be added.deletions
: Legal persons URLs of members to be removed.
{
"additions": [
"/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA"
],
"deletions": [
"/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA"
]
}
A successful response body looks like this:
{
"pooled-account-memberships-url": "/bank/accounts/<bank-account-id>/membership"
}
Confirm that membership is up-to-date
Even when there are no additions or deletions, you must confirm the pooled account membership is up-to-date once every 24 hours.
To update the membership without making any changes, send two empty lists in the request body:
{
"additions": [],
"deletions": []
}
This confirms that the current pooled account membership is correct and has not changed in the last 24 hours.
Why do we have to do this?
These 24 hourly updates are part of Griffin’s regulatory requirements and our financial crime prevention standards. As a bank, we are required to have a clear snapshot of whose money is in the account at any given point of time.
List the pooled account members
Make the following request to the pooled-account-memberships-url
:
GET /bank/accounts/<bank-account-id>/membership
This returns a paginated list of legal person URLs, with the date and time they were added to the pooled account.
A successful response looks like this:
{
"pool-members": [
{
"created-at": "2019-08-24T14:15:22Z",
"legal-person-url": "/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA"
},
{
"created-at": "2019-08-24T14:15:22Z",
"legal-person-url": "/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA"
}
]
}
Add the include parameter to also return the legal person details, latest verification (if one exists), and latest risk rating (only for customers onboarded via Verify).
A successful response with all include
parameters looks like this:
{
"pool-members": [
{
"created-at": "2019-08-24T14:15:22Z",
"legal-person-url": "/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA"
}
],
"links": {
"prev": null,
"next": null
},
"included": {
"verifications": [
{
"verification-url": "/v0/verifications/vn.IHZlcmlmaWNhdGlvbi1pZA",
"updated-at": "2019-08-24T14:15:22Z",
"legal-person-url": "/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA",
"workflow-url": "/v0/workflows/wf.ICAgICB3b3JrZmxvdy1pZA",
"created-at": "2019-08-24T14:15:22Z",
"verification-checks-url": "/v0/verifications/vn.IHZlcmlmaWNhdGlvbi1pZA/checks",
"risk-rating": "high-risk",
"verification-status": "in-progress",
"verification-risk-assessments-url": "/v0/verifications/vn.IHZlcmlmaWNhdGlvbi1pZA/risk-assessments"
}
],
"risk-rating-entries": [
{
"risk-rating-url": "/v0/risk-ratings/rr.ICByaXNrLXJhdGluZy1pZA",
"risk-rating": "high-risk",
"legal-person-url": "/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA",
"notes": "string",
"manually-created-by": {
"manually-created-by-type": "ops-user"
},
"verification-url": "/v0/verifications/vn.IHZlcmlmaWNhdGlvbi1pZA",
"previous-risk-rating": "high-risk"
}
],
"legal-persons": [
{
"latest-decision": {
"verification-url": "/v0/verifications/vn.IHZlcmlmaWNhdGlvbi1pZA",
"decision-outcome": "accepted",
"decision-maker": "system",
"decision-notes": "string",
"created-at": "2019-08-24T14:15:22Z",
"decision-user-url": "/v0/users/ur.ICAgICAgICAgdXNlci1pZA",
"decision-user-username": "user@example.com",
"decision-ops-user": "griffin-ops-user"
},
"legal-person-type": "individual",
"latest-risk-rating-url": "/v0/risk-ratings/rr.ICByaXNrLXJhdGluZy1pZA",
"display-name": "string",
"application-status": "referred",
"legal-person-url": "/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA",
"legal-person-decisions-url": "/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA/decisions",
"status-changed-at": "2019-08-24T14:15:22Z",
"created-at": "2019-08-24T14:15:22Z",
"legal-person-claims-url": "/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA/claims",
"legal-person-bank-payees-url": "/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA/bank/payees",
"legal-person-verifications-url": "/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA/verifications",
"legal-person-documents-url": "/v0/legal-persons/lp.IGxlZ2FsLXBlcnNvbi1pZA/documents"
}
]
}
}