The chat responses are generated using Generative AI technology for intuitive search and may not be entirely accurate. They are not intended as professional advice. For full details, including our use rights, privacy practices and potential export control restrictions, please refer to our Generative AI Service Terms of Use and Generative AI Service Privacy Information. As this is a test version, please let us know if something irritating comes up. Like you get recommended a chocolate fudge ice cream instead of an energy managing application. If that occurs, please use the feedback button in our contact form!
Skip to content
SieSmart

SieSmart API provides a secure, seamless link between your own CRM system and SFS online application management tool, SieSmart.

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
specialConditionTextstringfalseNotes field
scheduleAssetsDescriptionstringfalseNotes field
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'
sourceCountryCodestringtrueThe 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.

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 arraytruePrice 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
    }
NameTypeRequiredDescription
operationstringfalseCalculation to perform. Eg. if amount financed and term are provided, calculate the rental
commissionsobject arrayfalseDetails any commissions paid
feesobject arrayfalseDetails any fees paid
specialPaymentsobject arrayfalseDetails 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
    }
  }
}