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.

NameTypeRequiredDescription
officeIdintegertrueAssigns the proposal to the correct office
salesContactIdintegertrue*Assigns the correct sales person to the proposal (see Sales contacts)
labelstringfalseAdds a custom label to the proposal
specialConditionTextstringfalseTODO
scheduleAssetsDescriptionstringfalseTODO
customerobjecttruesee Customer
assetsobjecttruesee Assets
calcultionobjecttruesee 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"
  }
}
NameTypeRequiredDescription
registrationNumberstringtrueThe official registration number of the limited company
companyTypestringtrue'LIMITED' or 'NONLIMITED'
sourceCountryCodestringfalseOnly 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 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.

NameTypeRequiredDescription
quantityintegertrueThe quantity of this type of asset
descriptionstringtrueUnique description of the asset, eg. 'Photocopier Model XYZ'
valuePerAssetnumbertrueCost of each asset
assetIacCodestringtrueUnique identifer for the asset (see assets)
serviceAgreementobjectfalseOptional object if there is to be a service agreement for the asset
locationstringfalsePhysical location of the asset
conditionstringtrueCondition of the asset: NEW, REFURBISHED, USED, REMANUFACTORED, RETAINED
ageInMonthintegerfalse*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
      }
    ]
  }
}
NameTypeRequiredDescription
serviceTypestringtrueType of service agreement: LIMITED, FULL
pricePerUnitValuesobject arraytrueTODO

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
    }
NameTypeRequiredDescription
operationstringfalseCalculation to perform. Eg. if amount financed and term are provided, calculate the rental
commissionsobject arrayfalseTODO: description
feesobject arrayfalseTODO: description
specialPaymentsobject arrayfalseTODO: 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