Manage customers (groups)

Tango API allows you to manage the customers (groups) on your platform. A group is a collection of accounts to hold funds and place orders. It's the second level under your company's platform. Each platform contains one or more groups. Only one group in your platform may have the same name as the platform. Groups cannot be deleted or disabled once created.

🚧

Coming soon

Customers are also known as Groups in Tango. We are planning to update our API endpoints in our V3.0 release to replace Customers with Groups.

Use cases

The following use cases show examples for enterprises and small companies:

  • Enterprises: In ABC enterprise, all departments or divisions have their own groups. The manager of each department or division has control over all accounts in their department. They can create multiple accounts for teams, projects, budgets, or anything that needs funds tracked separately. They can also create groups for accounts that require a controlled access; for example, team A has a separate group than team B since the two teams do not need access to each other's account.
  • Small Companies: In an small company, groups are set up by:
    • Accounts such as Internal programs, sales initiatives, and employee moral.
    • Customer programs such as loyalty accounts, or referral accounts.
    • Platform customer with sub customers. In platform customers, each customer has their own group; sub customers can have multiple projects or budgets with the platform customer depending on their budget needs.

Get a list of all customers

UseGET {URI}/customersendpoint to get a list of all customers on this platform. There is no parameters for this endpoint.

EndpointPurpose
GET {URI}/customersGet a list of all customers on this platform.

The following code shows the response example for when you use GET {URI}/customers\:


 [
  {
    "customerIdentifier": "string", (5-100 chars)
    "displayName": "string",(100 chars)
    "status": "string",
    "createdAt": "2024-03-11T19:30:55.706Z",
    "accounts": [
      {
        "accountIdentifier": "string", (5-100 chars)
        "accountNumber": "string",
        "displayName": "string", (100 chars)
        "createdAt": "2024-03-11T19:30:55.706Z",
        "status": "string",
        "currencyCode": "string"
      }
    ]
  }
] 

The response message for this endpoint is:

  • 200 OK
  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden

Create a new customer

Use POST {URI}/customers endpoint to create a new customer on this platform.

EndpointPurpose
POST {URI}/customersCreate a new customer on this platform.

The following query parameters are used when you usePOST {URI}/customersto create a new customer on this platform.

ParameterData typeDescription
customerIdentifierstringA unique identifier for this customer. It must be between 5-100 characters and accepts the following: -0-9a-zA-Z in any sequence.
displayNamestringA friendly name for this customer. The string may have up to 100 characters.

The following code shows the response example for when you use POST {URI}/customers:

{
  "customerIdentifier": "string", (5-100 chars)
  "displayName": "string", (100 chars)
}

The response message for this endpoint is:

  • 201 Created
  • 400 Bad request
  • 401 Unauthorized
  • 403 Forbidden
  • 409 Conflict, duplicate Exists

Get details for a specific customer

Use GET {URI}/customers/{customerIdentifier}endpoint to get details for a specific customer on your platform.

EndpointPurpose
GET {URI}/customers/{customerIdentifier}Get details for a specific customer on this platform.

The following parameter is used when using GET {URI}/customers/{customerIdentifier} to get details for a specific customer:

ParameterData typeDescription
customerIdentifierstringA unique identifier for the customer under which you are seeking details. The string must have 5-100 characters.

The following code shows the response example for when you useGET {URI}/customers/{customerIdentifier}:

{
  "customerIdentifier": "string",
  "displayName": "string",
  "status": "string",
  "createdAt": "2024-03-11T19:30:55.706Z",
  "accounts": [
    {
      "accountIdentifier": "string",
      "accountNumber": "string",
      "displayName": "string",
      "createdAt": "2024-03-11T19:30:55.706Z",
      "status": "string",
      "currencyCode": "string"
    }
  ]
}

The response message for this endpoint is:

  • 200 OK
  • 400 Bad request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found

Get a list of all accounts created for a specific customer

Use GET {URI}/customers/{customerIdentifier}/accounts endpoint to get a list of all accounts created for a specific customer on your platform.

EndpointPurpose
GET {URI}/customers/{customerIdentifier}/accountsGet a list of all accounts created for a specific customer on this platform.

The following path and query parameters are used when you use GET {URI}/customers/{customerIdentifier}/accounts to get a list of all accounts created for a specific customer on this platform.

Path parameterData typeDescription
customerIdentifierstringA unique identifier for the customer under which you are seeking details. The string must have 5-100 characters.
Query parameterData typeDescription
paginatebooleanWhether to paginate the results or not. Defaults to false.
prevCursorstringThe cursor to use for the previous page of results. This will be ignored if paginate is false.
nextCursorstringThe cursor to use for the next page of results. This will be ignored if paginate is false.
maxResultsint32The maximum number of results to return. The default is 10, and the maximum is 200. This will be ignored if paginate is false.
accountNumberstringSpecify the account number to be queried.
displayNamestringSpecify the account display name to be queried.
statusstringSpecify the status to be queried.
contactEmailstringSpecify the contact email address to be queried.
currencyCodearray of stringsSpecify the currency code(s) to be queried.
minBalancenumberSpecify the minimum currentBalance to be queried.
maxBalancenumberSpecify the maximum currentBalance to be queried.
minDateCreatedAtdate-timeSpecify the earliest createdAt date to be queried.
maxDateCreatedAtdate-timeSpecify the latest createdAt date to be queried.
fundingNotificationEmailarray of stringsSpecify the funding notification email(s) to be queried.

The following example shows the response for when you use GET {URI}/customers/{customerIdentifier}/accounts:

[
  {
    "currentBalance": 0,
    "contactEmail": "string",
    "fundingNotification": [
      {
        "emailAddress": "string"
      }
    ],
    "accountIdentifier": "string",
    "accountNumber": "string",
    "displayName": "string",
    "createdAt": "2024-03-14T16:18:41.061Z",
    "status": "string",
    "currencyCode": "string"
  }
]

The response message for this endpoint is:

  • 200 OK
  • 400 Bad request
  • 401 Unauthorized
  • 403 Forbidden

Create an account under a specific customer

Use the POST {URI}/customers/{customerIdentifier}/accounts endpoint to create an account under a specific customer on this platform.

EndpointPurpose
POST {URI}/customers/{customerIdentifier}/accountsCreate an account under a specific customer on this platform.

Here are the list of parameters for when you use POST {URI}/customers/{customerIdentifier}/accounts to create an account under specific customer on your platform:

Path parameterData typeDescription
customerIdentifierstringA unique identifier for the customer under which you are creating a new account. The string must have 5-100 characters.
Body parameterData typeDescription
accountIdentifierstringA unique identifier for this account. It must be between 5-100 characters and accepts the following: -0-9a-zA-Z in any sequence.
displayNamestringA friendly name for this account. The string may have up to 100 characters.
contactEmailstringAn email address for a designated representative for this account. The string may have up to 100 characters.
currencyCodestringThe currency accepted by this account for deposits/withdraws. Only one currency can be specified. Currency can never be changed. The currency defaults to USD if it's not specified.
fundingNotificationarrays of objectsend funding notification emails to the following addresses.

The following example shows the response for when you use POST {URI}/customers/{customerIdentifier}/accounts to create an account under specific customer on your platform. The account identifier must be lowercase:

{
  "accountIdentifier": "string", (5-100 chars)
  "displayName": "string", (100 chars)
  "contactEmail": "string", (100 chars)
  "currencyCode": "USD", (3 chars)
  "fundingNotification": [
    {
      "emailAddress": "string"
    }
  ]
}

The response message for this endpoint is:

  • 201 Created
  • 400 Bad request
  • 401 Unauthorized
  • 403 Forbidden
  • 409 Conflict, Duplicate Exist

Update an account under a specific customer

Use the PATCH {URI}/customers/{customerIdentifier}/accounts/{accountIdentifier} endpoint to update an account under a specific customer on this platform.

EndpointPurpose
PATCH {URI}/customers/{customerIdentifier}/accounts/{accountIdentifier}Update an account under a specific customer on this platform.

Here are the list of parameters for when you use PATCH {URI}/customers/{customerIdentifier}/accounts/{accountIdentifier}to update an account under a specific customer on this platform.

Path parameterData typeDescription
customerIdentifierstring(Required) A unique identifier for the customer under which you are creating a new account. The string must have 5-100 characters.
accountIdentifierstringThe accountIdentifier for the account you are updating.
Body parameterData typeDescription
displayNamestring(Optional) A friendly name for this account.
contactEmailstring(Optional) An email address for a designated representative for this account. The string may have up to 100 characters.
fundingNotificationarray of objects(Optional) Send funding notification emails to the following addresses. A provided list replaces the existing list, an empty list clears all existing emails, and a null/omitted value leaves the list unchanged.

The following example shows the response for when you use PATCH {URI}/customers/{customerIdentifier}/accounts/{accountIdentifier} to update an account under a specific customer on this platform:

{
  "currentBalance": 0,
  "contactEmail": "string",
  "fundingNotification": [
    {
      "emailAddress": "string"
    }
  ],
  "accountIdentifier": "string",
  "accountNumber": "string",
  "displayName": "string",
  "createdAt": "2024-03-14T16:18:41.061Z",
  "status": "string",
  "currencyCode": "string"
}

The response message for this endpoint is:

  • 200 OK
  • 400 Bad request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found