Skip to main content

Manage pooled account members

This guide will show you how to add and remove members of a pooled safeguarding or pooled client money account. You’ll need to add members when you first set up the account. You’ll also need to confirm that the membership is up-to-date at least once every 24 hours while the account is open.

note

Only users with the compliance role can manage pooled account members.

Prerequisites

  • You must have a safeguarding account or client money account which has 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 in 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 member you want to add must be represented by a legal person.

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.

note

Why do we have to do this? These 24 hourly updates are part of Griffin’s regulatory requirements. 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.

Add the include parameter to also return the legal person details, latest verification (if one exists), and latest risk rating (available only for customers onboarded via Verify).

A successful minimal 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"
}
]
}

This is a successful response with all include parameters:

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