Skip to navigation

import_order_form

Turn a signed order form into a DRAFT quote, reconciled line by line

Live server: on mcp.solvimon.com only the draft actions are available, see Access modes.

Turns a signed order form or contract into a DRAFT quote that matches it, and reconciles the quote line by line against the contract. The agent reads the PDF and passes what it says as order_form; the server maps it onto your plan, checks every line and writes. All checks of create_quote apply too.

Run mode: validate (default) first. It writes nothing and returns the reconciliation. mode: apply builds the quote, and is refused while any line that doesn’t match is not listed in accept_differences.

ParameterRequiredDescription
customer_idYesThe customer. Create it first with write_customer if it doesn’t exist
pricing_plan_version_id or quote_template_idYes (one)Never picked for you
document.document_idYesThe signed PDF (docu_...), uploaded with write_documents or in Desk
order_formYesThe contract’s content: parties, term, billing period, currency, price lines, services, limits, clauses, signature and totals
owner_user_id or owner_email, name, contact_idNoAs in create_quote
quote_idNoImport into an existing DRAFT quote that has no schedule yet
custom_field_referencesNoQuote custom fields to store the signing envelope id and the PDF’s SHA-256 in
accept_differencesNoRow ids of differences you accept
modeNovalidate (default) or apply

What it does with the contract:

  1. Currency and billing period must be offered by the plan version, or the call is refused naming what the version offers.
  2. Price lines are matched to what the quote bills, by config id or by product item name. A line becomes a price override only when it differs from the plan price; a contract discount on a list price becomes a discount.
  3. Services that only an add-on grants enable that add-on. Limits that differ from the plan become entitlement overrides.
  4. Payment term in days becomes the quote’s payment term.
  5. Customer details. A DRAFT customer gets the contract’s legal name, registration number, tax id, address and invoice email. A customer in another status is only compared.
  6. Clauses become the quote version’s text, in the contract’s own numbering and words, without Desk’s automatic blocks.
  7. The signed PDF is attached to the version. The version is marked as not needing a signature, because it is already signed.

Every check is a row {id, item, contract, solvimon, status, note} with status match, mismatch, set (filled in), not_storable (such as a notice period Solvimon has no field for) or on_apply (the first invoice and the total contract value, checked once the quote exists). If the first invoice or TCV doesn’t match the contract on apply and you didn’t accept it, everything is rolled back.

Validate an order form
{
"customer_id": "cust_AbD3DqausjOYiMNDZY11F",
"pricing_plan_version_id": "ppve_Zt6yUw2QmK9nXr4VcHb37",
"document": {"document_id": "docu_Pq4nTx8WmK2vRb6YcLd31"},
"order_form": {
"parties": {"customer": {"legal_name": "Example Customer B.V."}, "supplier": {"legal_name": "Acme B.V."}},
"term": {"start_at": "2026-12-01", "initial_term": {"type": "MONTH", "value": 12}, "payment_term_days": 30},
"billing_period": {"type": "YEAR", "value": 1},
"currency": "EUR",
"price_lines": [
{"description": "Platform fee", "amount": "35000.00", "period": "YEAR"},
{"description": "Transaction fee", "percentage": "0.30", "included_volume": "10000000.00", "period": "YEAR", "billed": "ARREARS"}
],
"services": [{"name": "usage metering"}],
"limits": [{"name": "billing entities", "value": "1"}]
},
"mode": "validate"
}

Not done by this tool: creating the customer, ramp quotes, and sending the quote for signature.