Skip to content

Organizations and Members Management

The Grapes Organization and Members Management API endpoints allow Grapes Businesses to easily manage information such as user profile, bank account information, blockchain wallets associated with the organization and its member(s). In Grapes, member accounts are business entities or individuals linked to a parent organization (for example the clients of your organization). To conduct transactions on Grapes on behalf of members, an organization will need to use the specific Organization and Members Orders API Endpoints which is found separately in the documentation and under the Organizations section in the swagger documentation.

It is important to note if you use this functionality, the Organization routes replace the Users, Orders, Wallets and Contacts endpoints.

Member KYC/KYB

It is important to note, prior to an organizations ability to conduct transactions on behalf of each member, the organization must share the required KYC and AML documentation for each member with Grapes. If you conduct your own or use a third-party service for KYC/KYB (Know Your Customer/Know Your Business) assessments, you will need to provide us with the necessary data and comply with our requirements. We can work with you to ensure your data can be ingested through our APIs or shared manually.

As mentioned in the KYC section, Grapes also offers integrated KYC/KYB solutions and services. These solutions can be used either as standalone services for onboarding requirements or integrated into your application along with our other APIs. Please feel free to reach out to us for pricing details.

By implementing these identity verification options, we ensure that your transactions are secure and compliant with regulatory guidelines. In the meantime, you can always start testing the integration via the developer’s sandbox with your organization’s Grapes sandbox credentials.

Adding new Members to your Organization

After the required KYC/KYB documentation for the member is provided to Grapes, the new member belonging to your organization will be added by Grapes to your organization. You can now use the GET /organizations/member endpoint to fetch relevant details that belong to the member associated with your organization using their Member ID. This includes their profile details, associated digital wallet(s) required for crypto transfers, associated bank account(s) required for fiat onramp and offramp via CAD/USD if this data exists.

GET /organizations/member
PUT /organizations/member
DELETE /organzations/member
GET /organizations/member/all
POST /organizations/member/createBank
POST /organizations/member/createBlockchain

The endpoints are described in more detail in the following. This documentation is a high-level summary and is meant to be read in conjunction with the swagger documentation.

GET /organizations/member

To fetch the member information by Member ID you will need to provide the following parameters (organization ID, member ID). The sample request body is an example of an organization fetching the details of an associated member via Grapes API. The response body will provide the details associated with the member for the member’s signatory (authorized user).

In addition, it's worth noting that the organization itself can also be considered a member within Grapes. As an organization, you have the flexibilty to act as a member and conduct transactions on your own behalf. In this case, the organization's member ID would be the same as its organization ID. This allows the organization to seamlessly perform transactions, manage its own activities, and leverage the features provided by the Grapes API.

Request Body Example:

{ 
    "orgId": "c3b3e649-e625-40e8-96a2-7c35bc0b0f08",  
    "memberId": "c3b3e649-e625-40e8-96a2-7c35bc0b0f08" 
} 

It will return a response with memberDetails, blockchainDetails, and bankDetails. Below is a sample response body and related fields:

Response Body Example:

{
  "memberDetails": {
    "id": "ab88812c-2d5b-4143-94e0-a3c9b2228912",
    "businessname": "Company xyz",
    "firstName": "Test",
    "lastName": "User",
    "address": "477 Richmond Street West",
    "city": "Toronto",
    "stateProvince": "ON",
    "countryCode": "CAN",
    "postalCode": "M9X 1E6",
    "accountType": "INDIVIDUAL",
    "accountId": 19081569,
    "createdAt": "2023-05-15T18:22:08.464Z",
    "updatedAt": "2023-05-15T18:22:08.464Z"
  },
  "blockchainDetails": [
    {
      "id": 1,
      "name": "Test Contact",
      "address": "DNJN7TYYTV3CKD6U22ADLA2ZADTDUNTS7QARS4TOTR74IOH4HULCMZEBPQ",
      "chain": "ALGORAND",
      "riskScore": "NONE",
      "createdAt": "2023-05-15T18:22:08.464Z",
      "updatedAt": "2023-05-15T18:22:08.464Z"
    }
  ],
  "bankDetails": [
    {
      "id": 1,
      "country": "CAN",
      "name": "Bank of Canada",
      "accHolderName": "Test User",
      "routingNum": "123-45678",
      "accountNum": "1234567",
      "achCode": "",
      "swiftBicCode": "",
      "isPrimary": true,
      "createdAt": "2023-05-15T18:22:08.464Z",
      "updatedAt": "2023-05-15T18:22:08.464Z"
    }
  ]
}

PUT /organizations/member

Using the Update Member by Member ID endpoint, an organization can update existing profile information for a member associated with the organization. This endpoint allows the organization to update information including banking information and blockchain addresses for the associated member. Up to date banking and digital wallet information is required prior to the organization initiating orders on behalf of the member. All associated information must be accurate and confirmed with the member prior to adding new or updated member details to Grapes.

DELETE /organizations/member

This endpoint is used to delete associated memberDetails, bankDetails, blockchainDetails using the member ID and organization ID parameters. This action permanently deletes the selected data, for example, banking information or blockchain wallet details from a member profile linked to the organization.

Important Please note once an order is in progress for a member account, the associated profile information cannot be changed unless the pending order is fulfilled or cancelled.

POST /organizations/member/createBank

Prior to conducting any transactions on behalf of a member, the organization will need to provide bank account information and blockchain wallet details for the specific member account. Use this endpoint when adding new bank details for your members. Organizations can add banking details (i.e., Canadian bank account or U.S. Bank account) directly to the member’s profile. You are allowed to add multiple bank details but they MUST be in the name of the member (no third-party transactions).

Request Body Example:

{
  "orgId": "69jhpfh06f25m2ob9glmlep5f9",
  "memberId": "18a49f24-4e8b-441f-baaf-60e2e7a8c983",
  "bankDetails": [
    {
      "country": "CAN",
      "name": "Bank of Canada",
      "accHolderName": "Grapes Finance",
      "routingNum": "123-45678",
      "accountNum": "123456789",
      "achCode": "",
      "swiftBicCode": ""
    }
  ]
}

The associated information will be used to facilitate transactions such as digital asset to fiat conversions and settlement of eligible fiat directly to the member’s bank account.

Please note you can modify the banking information associated to a member using the PUT /organizations/member endpoint.

For more information on adding bank accounts and associated fields please see the section on Users and bank accounts.

POST /organizations/member/createBlockchain

In conjunction with the /member/createBank endpoint, the organization will also need to add the member’s blockchain wallet public address, and network information. With this endpoint, organizations can add blockchain details (i.e., member’s Ethereum Metamask Public address) directly to the member’s profile. Once added, the associated information will be used to facilitate transactions such as digital asset to fiat conversions and deposits of supported digital assets (QCAD and USDC) from a member’s external blockchain wallet. To add the required information, provide the organization ID and Member ID for the associated member.

Further updates to the blockchain information can be made using the PUT /organizations/member endpoint.