Skip to content

Create a proposal

Creating a new proposal is the most common task you will likely perform using our API

Hint

The example objects below show the information you need to create the proposal - the objects in the response will include more information

Different workflows

There are 2 main ways you can achieve this, depending on your workflow

  1. Adding each object to the proposal

It is possible to create the proposal with only 1 piece of information - the 'officeId'. This will create the proposal in SieSmart and return you a unique proposalId. You can then make subsequent requests to add the customer, asset(s), calculation etc.

This may fit your workflow, but will require more effort to integrate in this manner. For every modifying request you would need a valid if-Match header

  1. Creating the proposal in one request

The more common route would be to build the complete proposal object and submit it in one request

Proposal creation

There is a minimum amount of information that is required

Hint

A successful response will include the unique proposal ID in the body. Use this proposal ID for all subsequent requests about this proposal

{
  "officeId": 0,
  "salesContactId": 0,
  "label": "string",
  "specialConditionText": "string",
  "scheduleAssetsDescription": "string",
  "customer": {
    ...
  },
  "assets": [
    ...
  ],
  "calculation": {
    ...
  }
}

The request object requires data about the introducer, customer, assets and calculation

Name Type Required Description
officeId integer true Assigns the proposal to the correct office
salesContactId integer true* Assigns the correct sales person to the proposal (see Sales contacts)
label string false Adds a custom label to the proposal
specialConditionText string false TODO
scheduleAssetsDescription string false TODO
customer object true see Customer
assets object true see Assets
calcultion object true see Calculation

* Not mandatory in GB

Customer

Adding a customer to the proposal differs if they are limited or non-limited

{
  "customer": {
    "registrationNumber": "string",
    "companyType": "LIMITED",
    "sourceCountryCode": "string"
  }
}
Name Type Required Description
registrationNumber string true The official registration number of the limited company
companyType string true 'LIMITED' or 'NONLIMITED'
sourceCountryCode string false Only necessary if the customers country is different from the introducer country (eg. doing business with a customer from Belgium as a French introducer)

Limited customers

If you already know the customers official company registration number, then you only need to add this as the 'registrationNumber', and keep the 'companyType' as 'LIMITED'

Non-limited customers

TODO

If you do not know the customer registration number, you are able to perform a search first using information such as the customers name, postcode etc. The response from this request will include a registration number that you can use in the customer object above.

Assets

Most financial products require at least 1 asset to be added to the proposal. If the product is a loan then this is not necessary.

Assets are added using their unique code on our system.

The assets you are allowed to use are governed by the trading agreement, and may also differ between different offices. To get the assets that are available to you:

{
  "assets": [
    {
      "quantity": 9999,
      "description": "string",
      "valuePerAsset": 10000000,
      "assetIacCode": "string",
      "serviceAgreement": {
        ...
      },
      "location": "string",
      "condition": "NEW",
      "ageInMonth": 1
    }
  ]
}

Assets are represented by an array, meaning you can add multiple assets to the proposal. The sum of the asset values must equal the total amount financed that you specify in the calculation object.

Name Type Required Description
quantity integer true The quantity of this type of asset
description string true Unique description of the asset, eg. 'Photocopier Model XYZ'
valuePerAsset number true Cost of each asset
assetIacCode string true Unique identifer for the asset (see assets)
serviceAgreement object false Optional object if there is to be a service agreement for the asset
location string false Physical location of the asset
condition string true Condition of the asset: NEW, REFURBISHED, USED, REMANUFACTORED, RETAINED
ageInMonth integer false* The age of the asset (*is required if condition is not NEW)

Service agreement

It is possible to add a service agreement to an individual asset

{
  "serviceAgreement": {
    "serviceType": "LIMITED",
    "pricePerUnitValues": [
      {
        "pricePerUnit": {
          "id": 0,
          "name": "string"
        },
        "value": 0,
        "valueIncluded": 0
      }
    ]
  }
}
Name Type Required Description
serviceType string true Type of service agreement: LIMITED, FULL
pricePerUnitValues object array true TODO

Calculation

The calculation object is used for adding details about the amount financed, term, payment method etc.

{
"calculation": {
    "operation": "CALC_RENTAL",
    "sheet": {
      "marketProductId": 0,
      "introducerPricelistId": 0,
      "paymentPeriod": "MONTHLY",
      "paymentMethod": {
        "id": 0,
        "name": "string"
      },
      "paymentMode": "IN_ADVANCE",
      "customerPto": 0,
      "residualValue": {
        "amount": 0,
        "percentage": 0,
        "usePercentage": true,
        "manualSet": true
      },
      "term": 0,
      "commissions": [
        ...
      ],
      "fees": [
        ...
      ],
      "specialPayments": [
        ...
      ],
      "optionFee": 0
    }
Name Type Required Description
operation string false Calculation to perform. Eg. if amount financed and term are provided, calculate the rental
commissions object array false TODO: description
fees object array false TODO: description
specialPayments object array false TODO: description

Commissions

A list of commission types is available from the calculation config endpoint (see calculation config). If this array is empty, there are no commission types available to you.

{
  "commissions": [
    {
      "type": {
        "id": 0,
        "name": "string",
        "readonly": true
      },
      "amount": 0,
      "percentage": 0,
      "usePercentage": true,
      "manualSet": true
    }
  ]
}

Fees

A list of fee types is available from the calculation config endpoint (see calculation config). If this array is empty, there are no fee types available to you.

{
  "fees": [
    {
      "feeType": {
        "id": 0,
        "name": "string",
        "readonly": true,
        "code": "string"
      },
      "name": "string",
      "amount": 0,
      "manualSet": true,
      "feeIncluded": true
    }
  ]
}

Special Payments

A list of special payment types is available from the calculation config endpoint (see calculation config). If this array is empty, there are no special payment types available to you.

{
  "specialPayments": [
    {
      "type": {
        "id": 0,
        "name": "string",
        "readonly": true,
        "downPaymentType": true,
        "code": "string"
      },
      "amount": 0,
      "equipmentDetails": "string",
      "serialNumber": "string"
    }
  ]
}

Example payload

Here is an example of a minimum payload required to create a proposal:

{
  "officeId": 1234,
  "salesContactId": 1234,
  "customer": {
    "registrationNumber": "string",
    "companyType": "LIMITED"
  },
  "assets": [
    {
      "quantity": 1,
      "description": "ACME Photocopier",
      "valuePerAsset": 5000,
      "assetIacCode": "1234",
      "condition": "NEW"
    }
  ],
  "calculation": {
    "operation": "CALC_RENTAL",
    "sheet": {
      "marketProductId": 0,
      "introducerPricelistId": 0,
      "paymentPeriod": "MONTHLY",
      "paymentMethod": {
        "id": 0,
        "name": "string"
      },
      "paymentMode": "IN_ADVANCE",
      "term": 12
    }
  }
}

Community

Connect and Collaborate with Industrial Professionals and Join the Community!

Click to load comments