The Moving Portal API documentationThe Moving Portal API documentation
Key concepts
API concepts
Services
Key concepts
API concepts
Services
  • Key concepts
  • API concepts
  • GDPR
  • Development
  • Releases
  • Services
  • Authentication
  • Instruction
  • Instruction search
  • Notes
  • Data
  • Referral
  • Quote
  • Quotes search
  • Supplier operations
  • Notifications
  • Testing
  • Email integration
  • Objects
  • Examples
    • Introducer
      • Authentication
      • Data
      • Quote
      • Quotes search
      • Referral
      • Instruction
      • Instructions search
      • Instruction notification
      • Notes
    • Supplier
      • Authentication
      • Data
      • Instruction
      • Instructions search
      • Instruction notification
      • Notes
      • Supplier operations
  • OTHER

Quote service

Introducer

IN DEVELOPMENT

This service is in development and not complete.

You are able to create a quote and retrieve it. The following operations can be performed:

  • Refer
  • Email the quote to the customer
  • Delete
  • Update the property details (you can also specify the property when creating a quote)
  • Change your fee (you would specify your initial fee when creating a quote or allow the default from the price list to be used)

The following functionality is not yet in place:

  • Change owner of quote to another person at your firm
  • Able to specify your references
  • Able to specify a referrer (i.e. your introducer) for the quote
  • Get quote
  • Create quote
    • Quote validation
  • Refer quote
  • Update property details
  • Email quote
  • Change fee
  • Remove quote
  • Example quote object

This service contains the following methods:

GET /quote/{tmpReference}
POST /quote
PUT /quote/{tmpReference}/refer
PATCH /quote/{tmpReference}/property
PUT /quote/{tmpReference}/email
PATCH /quote/{tmpReference}/fees
DELETE /quote/{tmpReference}

Modifying customers

It is not possible to modify the customers listed on the quote. If you do need to change a customer or add/remove a customer you should create a new quote.

Get quote

GET /quote/{tmpReference}

This method will use the TMP reference to retrieve a quote.

Object: Quote

A Quote is made up of the following properties

PropertyDescription
TMPReferenceOur reference for the quote.
DescriptionA description of the quote.
CreatedTimestampWhen the quote was created.
ResultsA list of results for the quote.
IsVisibleToCustomersWhether the quote is visible to the customer(s).
PrimaryCustomerWho the primary customer is. See Key concepts.
CustomersWho the customers are.
PropertyDetails of the property.
OtherInformationFurther information about the case.
AllowedOperationsA list of operations that are allowed to happen by the current user on the Quote.
ConfigurationConfiguration to take account of when using this Instruction. See Key concepts.
Other information

The following information may be available

NameDescription
INTRODUCERCUSTOMERREFERENCEThe code presented to the customer by the introducer. See Key concepts
INTRODUCERINTEGRATIONREFERENCEThe code used for integration by the introducer. See Key concepts

Allowed operations

The following codes may be returned.

  • EDITPROPERTY - Allows the property to be changed.
  • REMOVEALLRESULTS - Marks all the results as removed.

Object: Quote result

When a quote is generated it will return a set of results.

PropertyDescription
SequenceIndex starting for 1 of the results.
QuoteResultStatusCodeStatus of the quote - set to REQUESTED, SAVED, REFERRED, REMOVED, EXPIRED.
ProductCodeThe product for this result.
IsPriceOnApplicationWhen a quote cannot be generated (e.g. a specialist report) you can request a quote.
FeeA dictionary containing fee information with entries for TOTALFEEINCLVAT and YOURFEEINCLVAT.
AllowedOperationsA list of operations that are allowed to happen by the current user on this result.
ExpiryTimestampWhen the quote will expire.

INFO

At the time of writing only one result will be returned.

We plan to return multiple results. The first result should be the primary result for what is requested. Other results could be for the same product but with other conditions. Alternatively, we may return results for other products, e.g. if you ask for a Level 2 Survey, we might return the result for Level 2 Survey & Valuation as well.

You should work out how you might want to show the results - or whether just to show the primary result. If you subsequently email the results to the customer they will be able to see all the results, unless you remove the other results.

When this functionality is implemented this object is likely to be extended.

Allowed operations

The following codes may be returned to allow an operation on this result:

  • REQUEST - if the quote comes back as Price on Application.
  • REFER - this will send the quote as a referral to us. Once done you cannot modify the details (e.g. fees or property).
  • REMOVERESULT - the result will be removed. It can still be searched for.
  • ADJUSTFEE - you can modify your fee, which will change the total fee.
  • EMAIL - this will email the quote to the customer with the selected result, however, all results will be available to the customer. If you only wish to email this result you need to remove the other results first.

INFO

The ability to EMAIL will be dependant on configuration, i.e. whether the customers are able to logon to the TMP portals and view quotes and instructions.

When using the interactive portal, we can configure your account to disallow the ability to modify your fee (ADJUSTFEE operation). However, using these web services it is possible to modify the fee (and specify the fee when creating the quote). It is up to the integrator to create their own controls on this.

Object: Customer

These are the customers for the Instruction. Please review details about the Primary customer when the customers listed in this object are the clients of the primary customer. This is typically when the Primary customer is a lender who has instructed a survey for their customers.

PropertyDescription
EmailAddressThe email address of the customer. This will not always be populated.
TitleThe title of the customer, e.g. Mr, Mrs, Miss etc
FirstNameThe first name of the customer
LastNameThe last name of the customer
TelephoneNumberThe telephone number of the customer
ReceiveSMSWhether the customer may receive SMS notifications.
Note that even if this is set, the customer may not receive SMS messages

INFO

At least one customer should have an email address.

Object: QuoteProperty

The QuoteProperty object returned here contains both the codes used when creating a quote/referral (by Introducers) and their descriptions. It also contains the elements of addresses and access details as well their descriptions. This allows them to be displayed without you needing to write code.

PropertyDescription
PropertyValueOrPurchasePriceThe property value or purchase price.
PropertyValueTierCodeThe code used for the property value tier, e.g. 650KTO700K
PropertyValueTierDescriptionA description of the property value tier, e.g. to £700,000
PropertyTypeCodeThe code used for the type of property, e.g. FLAT
PropertyTypeDescriptionThe description for the type of property, e.g. Flat
PropertyAgeCodeA code used for the age of the property, e.g. TENTOFIFTYYEARS
PropertyAgeDescriptionThe description for the type of property, e.g. 10 to 50 years
PropertyAddressDescriptionA description of the property address
PropertyAddressThe property address in it's elements
CorrespondenceAddressDescriptionA description of the correspondence address
CorrespondenceAddressThe correspondence address in it's elements
AccessDetailsDescriptionA description of the Access Details
AccessDetailsThe access details in it's elements

Create quote

POST /quote

There are a few ways of getting a referral to us. It is possible to create a direct referral using the Referral service. This requires generating your own fees - which should match the official price structure.

The alternative is to generate a quote. The quote will be priced using the official price lists and the quote will contain one or more results. The quote could also contain results for other products. The aim is to be more customer friendly.

A typical payload for a new quote is

{
  "cases": [
    {
      "productCode": "RICSL2SURVEY",
      "yourFeeInclVAT": 0
    }
  ],
  "propertyValueOrPurchasePrice": 280000,
  "propertyValueTierCode": "250KTO300K",
  "propertyTypeCode": "TERRACED",
  "propertyAgeCode": "LESSTHANTENYEARS",
  "yearBuilt": null,
  "propertyAddress": {
    "addressFormatCode": "DEFAULT",
    "addressLine1": "82 Fir Tree Avenue",
    "addressLine2": "",
    "addressLine3": "Wallingford",
    "addressLine4": "",
    "postcode": "OX10 0PL",
    "countryCode": "GB"
  },
  "correspondenceAddress": {
    "addressFormatCode": "DEFAULT",
    "addressLine1": "86 Fir Tree Avenue",
    "addressLine2": "",
    "addressLine3": "Wallingford",
    "addressLine4": "",
    "postcode": "OX10 0PL",
    "countryCode": "GB"
  },
  "accessDetails": {
    "accessTypeCode": "VENDOR",
    "firmName": "",
    "emailAddress": "vendor@vendor.co.uk",
    "contactName": "John Vendor",
    "telephoneNumber": "01234 121212"
  },
  "customers": [
    {
      "emailAddress": "joekennilworth@themovingportal.dev",
      "title": "",
      "firstName": "Joe",
      "lastName": "Kennilworth",
      "telephoneNumber": "01245 399999",
      "receiveSMS": false
    }
  ]
}

A successful response from the service will return the Quote object (as per the Get quote method).

The payload for a new quote is very similar to that for a new referral. The only differences are in the cases object for the quote:

  • You do not specify the totalFeeInclVAT. You can optionally specify yourFeeInclVAT which will be applied, otherwise it will use the value specified in the official price list.
  • There is no support in quotes for your own references - these are only used for instructions/referrals. (Support will be added at a later date)

INFO

We have configuration to disable an Introducer changing the fees. This configuration is only applied when creating a quote interactively in our portals. If you use integration you can specify your own fees.

The properties of this payload are:

PropertyDescription
CasesDetails of each case to quote.
PropertyValueOrPurchasePriceOptional. The value of the property or purchase price.
PropertyValueTierCodeThe tier code of the property value.
See Key concepts. If PropertyValueOrPurchasePrice is provided then this is not required.
PropertyTypeCodeThe type of property, e.g. Detached, Terraced etc. If not known must be set to UNKNOWN.
See Key concepts.
PropertyAgeCodeShould not be provided if YearBuilt is set. The age of the property (in bands).
See Key concepts.
YearBuiltOptional. Should not be provded if PropertyAgeCode is set. The year the property is built.
PropertyAddressRequired. The address of the property. See Addresses
CorrespondenceAddressOptional. See Addresses
AccessDetailsOptional. How to gain access to the property.
CustomersRequired. At least one customer must be provided with contact details.
ReferrerOptional. Details of your referrer.

Cases

The payload for this object is:

"cases": [
  {
    "productCode": "RICSL2SURVEY",
    "totalFeeInclVAT": 750.00
  }
]

INFO

Only one case can be supplied at this time.

The properties of this object are:

PropertyDescription
ProductCodeRequired. A product code.
IntroducerFeeInclVATOptional. The total fee. If not provided is calculated using the official price scales.
Product

The ProductCode is a code for the product. You can get a list of your products from the Data service.

Validation
  • The code provided must be valid and an active product for your firm.
Fees

There is only a single property for the fee:

  • YourFeeInclVAT: This is the referral fee to be paid to the Introducer. It is optional. If it is not provided (i.e. set to null) then the fee will be set to the value on the official price list.
Validation

If YourFeeInclVAT is provided:

  • this value must be greater than or equal to zero.

Property attributes

These are attributes describing the property

"propertyValueOrPurchasePrice": 325000.00,
"propertyValueTierCode": "300KTO350K",
"propertyTypeCode": "DETACHED",
"propertyAgeCode": "TENTOFIFTYYEARS",
"yearBuilt": null

When creating a direct referral there is some information that is required.

To calculate the fees, we need to be able to know PropertyValueOrPurchasePrice or PropertyValueTierCode.

We do not need to know at this point the other property attributes (PropertyTypeCode, PropertyAgeCode or YearBuilt). We can determine these when we contact the customer. However, the more information we have at this point the easier it is to convert the referral into an order.

Validation
  • PropertyValueOrPurchasePrice or PropertyValueTierCode is required.
  • PropertyValueTierCode must be valid. See Key concepts.
  • If PropertyTypeCode is provided it must be valid. If not known must be set to UNKNOWN. See Key concepts.
  • If PropertyAgeCode is provided it must be valid. If not known must be set to UNKNOWN. See Key concepts.
  • If PropertyAgeCode is UNKNOWN and YearBuilt is set then it will be used to determine the property age band.

Property address

The address of the property is required in order to refer a case to us.

"propertyAddress": {
  "addressFormatCode": "DEFAULT",
  "addressLine1": "12 Spring Terrace",
  "addressLine2": "",
  "addressLine3": "Springfield",
  "addressLine4": "Springshire",
  "postcode": "SP5 1NG",
  "countryCode": "GB"
}
Validation

The minimum requirements for an address is the AddressLine1 and Postcode.

See Key concepts for full validation for addresses.

Correspondence address

The correspondence address is not mandatory. We can determine this when we contact the customer. However, the more information we have at this point the easier it is to convert the referral into an order.

"correspondenceAddress": {
  "addressFormatCode": "DEFAULT",
  "addressLine1": "15 Summer Lane",
  "addressLine2": "",
  "addressLine3": "Summertown",
  "addressLine4": "Summerland",
  "postcode": "SU8 8ER",
  "countryCode": "GB"
}
Validation

If you do not have the address you can either set correspondenceAddress to null or set addressFormatCode to NONE.

If provided, the minimum requirements for an address is to provide AddressLine1 and Postcode.

See Key concepts for full validation for addresses.

Access details

The access details is not a mandatory requirements. We can determine these when we contact the customer. However, the more information we have at this point the easier it is to convert the referral into an order.

The payload for this object is:

"accessDetails": {
  "accessTypeCode": "VENDOR",
  "firmName": "Spring and Summer properties",
  "emailAddress": "joe@springandsummer.co.uk",
  "contactName": "Joe Autumn",
  "telephoneNumber": "01234 121212"
}
Validation

If access details are provided:

  • AccessTypeCode can be set to VENDOR or AGENT.
  • FirmName is required when access type is VENDOR and has a maximum length of 150 characters.
  • EmailAddress has a maximum length of 100 characters and must be a valid email address.
  • ContactName is required and has a maximum length of 150 characters.
  • TelephoneNumber is required and has a maximum length of 150 characters.

Customers

At least one customer is required. This customer must have

  • Person name (first name and last name).
  • Email address.
  • Telephone number.
{
  "emailAddress": "fredjones@themovingportal.dev",
  "title": "",
  "firstName": "Fred",
  "lastName": "Jones",
  "telephoneNumber": "01234 882299",
  "receiveSMS": true
}

It is then possible to provide named customers, which only require their name. This allows for the surveyor to add that customer name to the final report, but without needing their full details.

Validation
  • Up to four customers can be specified.
  • The first customer must have all their details:
    • EmailAddress is required and has a maximum length of 100 characters and must be a valid email address.
    • TelephoneNumber is required, has a maximum length of 20 characters and must be a valid telephone number - using regular expression ^((\+|00)(\d){1,3})?((\s|\d|\(|\))?){8,15}$.
    • Title has a maximum length of 20 characters.
    • FirstName is required and has a maximum length of 50 characters.
    • LastName is required and has a maximum length of 50 characters.
  • Subsequent customers can be specified with just FirstName and LastName.

Referrer

This is your referrer. It is where the introducer will refer cases on behalf of another party. We use this as a point of contact for TMP if there is a problem with the referral (e.g. wrong product). Providing the referrer is optional.

If you provide it, then it will be displayed to the customer in our portal when they look at the Quote. and your firms details will not be displayed on the Instruction. (Your details will be displayed if the customer edit's their details).

You should review GDPR for more details about the impact of this.

Validation

NOT AVAILABLE

The referrer object will be validated, but is not yet used for quotes.

See Referral Service for details of validation.

Quote validation

INFO

The rules for creation of a quote and referring that quote via the API is different from creating a quote interactively via the Portal and referring it.

When a quote is created via the portal we only require the product, property value (tier) and a single customer. When that quote is subsequently referred via the portal we then collect all the information about the property (correpondence address and access details, plus property age and type).

However, if you use the Referral service to create a direct referral then it will allow you to submit a referral with the minimum amount of detail (product, property value, single customer and property address).

The rules for creating a quote via the API will follow the same rules as creating a referral. This will allow you to create and refer a quote without all the information.

The minimum information required to create and refer a quote is:

  • productCode is required.
  • One of propertyValueOrPurchasePrice or propertyValueTierCode is required.
  • propertyTypeCode and propertyAgeCode set to UNKNOWN if not known.
  • propertyAddress is required.
  • correspondenceAddress, accessDetails are not required and can be set to null.
  • customers should have at least one customer.

The more information we have for a referral will assist in converting the referral into an order.

{
  "cases": [
    {
      "productCode": "RICSL2SURVEY",
      "yourFeeInclVAT": null
    }
  ],
  "propertyValueOrPurchasePrice": 280000,
  "propertyTypeCode": "UNKNOWN",
  "propertyAgeCode": "UNKNOWN",
  "propertyAddress": {
    "addressFormatCode": "DEFAULT",
    "addressLine1": "82 Fir Tree Avenue",
    "addressLine2": "",
    "addressLine3": "Wallingford",
    "addressLine4": "",
    "postcode": "OX10 0PL",
    "countryCode": "GB"
  },
  "customers": [
    {
      "emailAddress": "joekennilworth@themovingportal.dev",
      "title": "",
      "firstName": "Joe",
      "lastName": "Kennilworth",
      "telephoneNumber": "01245 399999",
      "receiveSMS": false
    }
  ]
}

Refer quote

PUT /quote/{tmpReference}/refer

Once you have created a quote you can use some of the other methods in this service to update the property details or your fee. However, once you call this method you can no longer do this.

When you are ready to refer the quote to TMP you will use this method. It has a very simple payload - just requiring the resultSequence to refer:

{
  "ResultSequence": 1
}

The result sequence must be provided and is valid. The quote cannot be referred if it is awaiting a price (REQUESTED), already referred/instructed (INSTRUCTED), Expired (EXPIRED) or Removed (REMOVED).

Update property details

PATCH /quote/{tmpReference}/property

Before the quote is referred you are able to update the property details or your fee. The payload to this method to update the property details is

{
  "propertyTypeCode": "TERRACED",
  "propertyAgeCode": "LESSTHANTENYEARS",
  "yearBuilt": null,
  "propertyAddress": {
    "addressFormatCode": "DEFAULT",
    "addressLine1": "82 Fir Tree Avenue",
    "addressLine2": "",
    "addressLine3": "Wallingford",
    "addressLine4": "",
    "postcode": "OX10 0PL",
    "countryCode": "GB"
  },
  "correspondenceAddress": {
    "addressFormatCode": "DEFAULT",
    "addressLine1": "86 Fir Tree Avenue",
    "addressLine2": "",
    "addressLine3": "Wallingford",
    "addressLine4": "",
    "postcode": "OX10 0PL",
    "countryCode": "GB"
  },
  "accessDetails": {
    "accessTypeCode": "VENDOR",
    "firmName": "",
    "emailAddress": "vendor@vendor.co.uk",
    "contactName": "John Vendor",
    "telephoneNumber": "01234 121212"
  }
}

You cannot update the property details if the quote has been referred/instructed (INSTRUCTED), Expired (EXPIRED) or Removed (REMOVED).

Validation is as per creating a quote.

Email quote

PUT /quote/{tmpReference}/email

When a quote is created it will not be visible to the customer. This allows the introducer to review it first and possibly amend the fees. This method will send and email to the customer(s) with the quote.

The payload for this method is

{
  "ResultSequences": [1]
}

The result sequences must be provided with at least once valid sequence number. The quote cannot be emailed if it is awaiting a price (REQUESTED), already referred/instructed (INSTRUCTED), Expired (EXPIRED) or Removed (REMOVED).

Change fee

PATCH /quote/{tmpReference}/fees

Before the quote is referred you are able to update the porperty details and fee.

The payload to this method is

{
  "resultSequence": 1,
  "yourFeeInclVAT": 0
}

You cannot update the fee if the quote has been referred/instructed (INSTRUCTED), Expired (EXPIRED) or Removed (REMOVED).

The resultSequence must exist and yourFeeInclVAT is not optional and must be greater than or equal to 0.

The return from this method is the quote so that you can retrieve the updated totals.

Remove quote

DELETE /quote/{tmpReference}

When this method the result sequences specified in the payload will be removed.

The payload for this method is

{
  "ResultSequences": [1]
}

The result sequences must be provided with at least once valid sequence number. The quote cannot be removed if it is already referred/instructed (INSTRUCTED) or Removed (REMOVED).

Example quote object

An example of a returned quote is below:

{
  "tmpReference": "TMP103243",
  "description": "RICS Home Survey - Level 3 (Building Survey) for Connie Booth",
  "createdTimestamp": "2024-06-21T13:03:34.0106172Z",
  "results": [
    {
      "sequence": 1,
      "quoteResultStatusCode": "SAVED",
      "productCode": "L3BUILDINGSURVEY",
      "fee": {
        "TOTALFEEINCLVAT": 735.00,
        "YOURFEEINCLVAT": 90.00
      },
      "allowedOperations": [
        "REFER",
        "REMOVERESULT",
        "ADJUSTFEE",
        "EMAIL"
      ],
      "expiryTimestamp": "2024-07-11T00:00:00Z"
    }
  ],
  "isVisibleToCustomers": false,
  "customers": [
    {
      "emailAddress": "conniebooth@themovingportal.dev",
      "title": "",
      "firstName": "Connie",
      "lastName": "Booth",
      "telephoneNumber": "07710 229 546",
      "receiveSMS": false
    }
  ],
  "property": {
    "propertyValueOrPurchasePrice": null,
    "propertyValueTierCode": "200KTO250K",
    "propertyValueTierDescription": "to £250,000",
    "propertyTypeCode": "TERRACED",
    "propertyTypeDescription": "Terraced",
    "propertyAgeCode": "FIFTYTOONEHUNDREDYEARS",
    "propertyAgeDescription": "50 to 100 years",
    "propertyAddressDescription": "No address",
    "propertyAddress": {
      "addressFormatCode": "NONE",
      "addressLine1": null,
      "addressLine2": null,
      "addressLine3": null,
      "addressLine4": null,
      "postcode": null,
      "countryCode": null
    },
    "correspondenceAddressDescription": "No address",
    "correspondenceAddress": {
      "addressFormatCode": "NONE",
      "addressLine1": null,
      "addressLine2": null,
      "addressLine3": null,
      "addressLine4": null,
      "postcode": null,
      "countryCode": null
    },
    "accessDetailsDescription": "No information",
    "accessDetails": {
      "accessTypeCode": "",
      "firmName": "",
      "emailAddress": "",
      "contactName": "",
      "telephoneNumber": ""
    }
  },
  "otherInformation": {},
  "allowedOperations": [
    "EDITPROPERTY",
    "REMOVEALLRESULTS"
  ],
  "configuration": {}
}
Last Updated: 11/4/25, 10:52 AM
Prev
Referral
Next
Quotes search