Reseller Provisioning

If you offer a distribution program (tier 2 model), your distributors will sell your services using their sales channels. There will be resellers purchasing your services from your distributor and reselling them to the end customer who will use your service. This page describes how you can handle the resellers of your distributors.

Whether you allow automatic registration of a reseller via API or not, there are different implementation approaches.

Automatic Registration of Resellers is Supported by your System

Follow the instructions in this paragraph only if you have an API for registering resellers below your distributors in your internal systems.

Both the resellers and the end customer are treated as Accounts in our platform. This means that the same endpoints are used to synchronize the reseller and the end-customer with your system. Our platform can distinguish when an account record is a reseller or an end customer and send different information to your endpoints. This way, we can create the reseller in your system, create the customer, and establish the relationship between the two. Check the flow diagram Basket Checkout (Reseller Provisioning is Supported) for more details.

Below we explain the implementation steps in detail.

Step #1 – Enable the “Reseller Support” Option

This option is part of the endpoints options, and by enabling it, you inform our system that you support the automatic registration of your resellers.

When this option is enabled, our system will provision both the reseller and the end customer. This means that when the reseller places his first order for one of your services, our system will call twice the Account Synchronize endpoint: one time for the reseller and one time for the end customer. When this option is disabled, our system will only provision the end customer and ignore the reseller.

Step #2 – Resellers Provisioning Implementation

The first time a reseller places an order for one of your services, our platform will call the Account Synchronize endpoint for provisioning the reseller in your system. You will understand that the call is for either a reseller, a reseller’s end customer, or a direct customer depending on the following three cases:

  • For a reseller, the ResellerID field is either empty or has the same value as that of the ID field, while the Role field has the value “Reseller”.
  • For an end customer of a reseller, the ResellerID field has a different value from that of the ID field, while the Role field has the value “User”.
  • For a direct customer, the ResellerID field is either empty or has the same value as that of the ID field, while the Role field has the value “User”.
"ID": "1082733",
"Role": "Reseller",
"ExternalID": "",
"ResellerID": "1082733",
"ResellerExternalID": "",

Step #3 – Relate the End Customers with their Resellers

When the Account Synchronize endpoint is called for provisioning the end customer in your system, you will understand which is his reseller from the following information found in the request body:

  • ID: The ID of the end customer account in the platform. It will be different from the ResellerID field.
  • Role: The extra identifier used for differentiating direct customers (User), resellers (Reseller), and end customers of resellers (User), in conjunction with the values of the “ID” and the “ResellerID” fields.
  • ResellerID: The ID of the reseller’s account record in the platform.
  • ResellerExternalID: The ID returned by your system when the reseller was provisioned (step 2). You should use this ID for understanding under which reseller you should place the customer.

Automatic Registration of Resellers is NOT Supported by your System

Suppose the registration of your distributor resellers cannot be automated, but you need to keep the relation between the end customers and their resellers in your system. In that case, you will need to ask the resellers to enter their Partner ID when they place an order on behalf of their customers. As the service vendor, partner ID is an identifier you have assigned to your resellers to uniquely identify them (an example is Microsoft MPN ID, which is assigned to each Microsoft Partner).

For accomplishing this, you need to define an account synchronization option for the partner’s ID. Below is an example of such a field:

      "ID": "MPNID",
      "Definition": {
        "ID": "MPNID",
        "SortOrder": 0,
        "Name": "Reseller (MPN ID)",
        "Description": null,
        "Kind": "SimpleValue",
        "DataType": "Text",
        "IsRequired": true,
        "PredefinedValues": [],
        "IsReadOnly": false,
        "AvailableToStorefront": true

The reseller will be asked to fill in his partner ID every time he places an order for a new customer:

Reseller’s partner ID will be saved in the synchronization options of the end customer, and our system will include it as input when the Account Synchronize endpoint is called for provisioning the end customer:

"SyncOptions": {
   "DomainPrefix": "companyX",
   "MPNID": 3456890

You can then use this information to relate the end customer with your partner in your system.