e-Signature
Once a financed quote has been accepted, this guide shows how to collect the
electronic signatures that complete the rental contract. You start the process
with a single API call; the people you nominate then sign remotely by email, and
you observe completion through the financing-case status. Every request is
authenticated with your X-Api-Key header.
How signing works
The e-signature flow spans three stages. Only the first and the last are API calls you make — the actual signing happens outside your integration:
-
You start the process — submit the
authorized persons for a financing case whose quote is in
finance_accepted. This nominates who may sign and hands the contract off to the signing provider. - The signers sign by email — each authorized person receives an email invitation from DocuSign and signs remotely in the browser. There is nothing to integrate here: no signer-redirect URL is returned to you, and you host no signing page.
-
You observe completion — read the
financing-case (or quote) status, or subscribe to the
financing_case.status_changedwebhook, to learn when signing is done.
Build it step by step
POST
/api/financing-cases/{financingCaseId}/start-esignature
Start the signing process for a financing case whose quote has reached
finance_accepted. In the body you pass the
authorizedPersons who are allowed to sign — at least one
is required. Each person needs a name and the email address the signing invitation is
sent to; set soloSigneePermitted to true
if that person may sign on their own. The call replaces any previously nominated
persons, advances the quote's status, and returns the
financing number so you can reconcile it against your own records.
curl -X POST 'https://sandbox.partner.miete24.com/api/financing-cases/2b1c9d7e-4f6a-4c2e-9b1a-8d3f5e7c1a2b/start-esignature' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"authorizedPersons": [
{
"firstName": "Erika",
"lastName": "Mustermann",
"email": "erika@muster-gmbh.example",
"soloSigneePermitted": true
}
]
}'
const response = await fetch('https://sandbox.partner.miete24.com/api/financing-cases/2b1c9d7e-4f6a-4c2e-9b1a-8d3f5e7c1a2b/start-esignature', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
authorizedPersons: [
{
firstName: 'Erika',
lastName: 'Mustermann',
email: 'erika@muster-gmbh.example',
soloSigneePermitted: true,
},
],
}),
});
const result = await response.json();
{
"financingNumber": "F-2026-00042",
"quoteStatus": "completed"
}
Errors:
422 when the financing case has no quote in
finance_accepted, when the request lists no authorized
person, when two signers share an email address, or when the underlying financing is
not ready to be sent for signing;
404 for an unknown financing-case id;
403 when the financing case belongs to another partner;
401 for a missing or invalid API key.
Full request body, parameters & code samples → E-Signature reference
No API call Signers sign by email
After step 1, PartnerHub sends each authorized person an email invitation from DocuSign. They open the link and sign the contract remotely in their browser — no account, redirect, or embedded signing page on your side is involved. When more than one person is authorized and none may sign alone, every signature is required before the contract counts as signed. This stage is entirely out of band: your integration does nothing here and simply waits for the outcome, which you observe in step 3.
GET
/api/financing-cases/{id}
Learn when signing is done by reading the financing case's
status. Poll this endpoint, or — preferably — subscribe to
the financing_case.status_changed webhook so PartnerHub
notifies you on every status change instead of you polling. The signed contract's
documents are then available through the financing-case's document endpoints.
curl -X GET 'https://sandbox.partner.miete24.com/api/financing-cases/2b1c9d7e-4f6a-4c2e-9b1a-8d3f5e7c1a2b' \
-H 'X-Api-Key: YOUR_API_KEY'
const response = await fetch('https://sandbox.partner.miete24.com/api/financing-cases/2b1c9d7e-4f6a-4c2e-9b1a-8d3f5e7c1a2b', {
method: 'GET',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
});
const financingCase = await response.json();
{
"@id": "/api/financing-cases/2b1c9d7e-4f6a-4c2e-9b1a-8d3f5e7c1a2b",
"id": "2b1c9d7e-4f6a-4c2e-9b1a-8d3f5e7c1a2b",
"status": "signed"
}
Errors:
404 for an unknown financing-case id;
401 for a missing or invalid API key.
Full parameters, all operations & code samples → Financing Case reference
What's next
- See how a quote reaches
finance_acceptedin the Create a Quote guide. - Browse every endpoint and schema in the API Reference.
- See the complete state machine on the Lifecycle page.
- Get notified of status changes instead of polling — see the Webhook Endpoint reference.