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 two 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 one 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 Notes field
scheduleAssetsDescription string false Notes field
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 true The country code of the customer, eg. GB

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

For non-limited customers, you must first use the customer search endpoint (../introducers/customer-search) to find the customers' unique reference number (this differs from their official customer registration number), then you can use this in the customer object as above, but setting the 'companyType' as 'NONLIMITED'.

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 one 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 Price information of each unit

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 Details any commissions paid
fees object array false Details any fees paid
specialPayments object array false Details any special payments

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",
    "sourceCountryCode": "string"
  },
  "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
    }
  }
}