Skip to main content

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
caution

A pooled account with no members cannot receive payments.

Prerequisites

note

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.

info

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"
}
]
}
}