gitlabEdit

๐Ÿ“‹Quote (Devis)

Learn how to generate and dispatch quotes through Docs-Dispatcher with complete end-to-end examples in 4 languages (curl, Node.js, PHP, Java).

Overview

This comprehensive recipe walks you through the complete quote generation and dispatch workflow:

  1. Authenticate and set up Basic Authentication

  2. Prepare your quote data with validity period

  3. Validate the request (recommended safety check)

  4. Send the quote to your accounting provider

  5. Handle the response and track status

  6. Convert quote to invoice when accepted

By the end of this guide, you'll have working code to automatically generate and send quotes (devis, estimates, proposals) to providers like Qonto, PennyLane, iPaidThat.

What You'll Learn

  • How to structure quote requests for different providers

  • Set validity periods and expiration dates

  • Convert accepted quotes to invoices

  • Best practices for quote workflows

  • Error handling strategies

  • Provider-specific quote features

  • Complete working examples in 4 languages

Prerequisites

Before you begin:

  • Docs-Dispatcher account with email and password

  • At least one invoicing provider configured (Qonto, PennyLane, iPaidThat, or SuperPDP)

  • Template created in Templater (or use API to create one)

  • Basic understanding of REST APIs

circle-info

No provider configured yet? You can still test with the validation endpoint - it checks your request format without calling external APIs or charging credits.

What is a Quote?

A quote (devis in French) is a document that:

  • Proposes services or products with pricing

  • Commits to specific terms and conditions

  • Expires after a validity period

  • Converts to invoice when accepted

  • Legally binds both parties when signed

Common scenarios:

  • Project proposals for new clients

  • Service estimates before work begins

  • Product pricing for bulk orders

  • Subscription pricing proposals

  • Custom solution pricing

  • RFP responses

circle-exclamation

Step 1: Authentication

Dispatcher API uses HTTP Basic Authentication. You'll need your Dispatcher account email and password for all API calls.

Setup Credentials

circle-info

No token management needed! Unlike JWT-based APIs, Basic Auth doesn't require separate authentication endpoints or token refresh. Your credentials are sent with each request.

Quick links:

Step 2: Prepare Quote Data

Structure your quote data according to the CompositeRequest model. Quotes have specific fields for validity and acceptance tracking.

Basic Quote Structure

Required Fields

Field
Type
Description

providerName

string

Provider to use: qonto, pennylane, ipaidthat, superpdp

documentType

string

Must be QUOTE for quotes

template.id

number

Template ID from Templater (use quote template)

template.data

object

Template variables (schema depends on template)

template.data.quoteNumber

string

Unique quote identifier

template.data.validUntil

string

Quote expiration date (ISO 8601)

Quote-Specific Fields

Field
Type
Description

template.data.validityDays

number

Number of days quote is valid

template.data.projectTitle

string

Project/proposal title

template.data.projectDescription

string

Detailed project description

template.data.deliveryTime

string

Estimated delivery timeframe

template.data.paymentTerms

string

Payment schedule and terms

template.data.conditions

string

Terms and conditions

invoicing.validityPeriod

number

Validity in days (provider field)

invoicing.requiresSignature

boolean

Whether signature required

invoicing.autoConvertToInvoice

boolean

Auto-convert when accepted

Validity Period Options

Fixed Date:

Days from Creation:

Common validity periods:

  • 15 days - Fast-moving sales

  • 30 days - Standard quotes

  • 60 days - Complex projects

  • 90 days - Enterprise proposals

Payment Terms Examples

Before sending real quotes, validate your request structure.

Validation Request

Validation Success Response

Validation Error Response

Step 4: Send Quote (Real Dispatch)

Once validation passes, send the actual quote.

Sync Mode (Default)

Success Response:

Provider Response Fields

Field
Description

quoteId

Provider's unique quote ID

quoteNumber

Quote number (your format)

status

Quote status: sent, viewed, accepted, rejected, expired

url

Quote viewing URL

signatureUrl

URL for customer to sign/accept quote

validUntil

Quote expiration timestamp

Step 5: Track Quote Status

After sending, track quote status through provider webhooks or polling.

Quote Lifecycle States

Check Quote Status (Provider API)

Most providers offer status webhooks. Example webhook payload:

Step 6: Convert Quote to Invoice

When a quote is accepted, convert it to an invoice.

Manual Conversion

Auto-Conversion

Enable automatic conversion when quote is accepted:

When quote is accepted, provider automatically creates invoice using same items/amounts.

Complete Examples

curl (Complete Flow)

Node.js (Complete Flow)

PHP (Complete Flow)

Java (Complete Flow)

Provider-Specific Notes

Qonto

Quote Features:

  • Full quote support with signature tracking

  • Customer portal for acceptance

  • Auto-conversion to invoice optional

  • Sandbox mode available

Specific requirements:

  • Validity period required

  • Customer email required for signature link

PennyLane

Quote Features:

  • Comprehensive quote management

  • Signature tracking

  • Multiple quote versions

  • Automatic invoice conversion

iPaidThat

Quote Features:

  • Standard quote support

  • Email delivery

  • Acceptance tracking

SuperPDP

Quote Features:

  • Quote support with archiving

  • Legal compliance

  • E-signature integration

Provider Comparison

Feature
iPaidThat
Qonto
PennyLane
SuperPDP

Quotes

โœ…

โœ…

โœ…

โœ…

E-Signature

โŒ

โœ…

โœ…

โœ…

Auto-Convert

โŒ

โœ…

โœ…

โš ๏ธ Manual

Validity Tracking

โœ…

โœ…

โœ…

โœ…

Customer Portal

โŒ

โœ…

โœ…

โœ…

Quote Versions

โŒ

โš ๏ธ Limited

โœ…

โŒ

Error Handling

Common Quote Errors

1. Expired Validity Date

Solution: Use future date for validUntil

2. Missing Customer Email

Solution: Include customer.email in template data

Next Steps

Core Concepts

Summary

You've learned how to:

  • โœ… Structure quote requests with validity periods

  • โœ… Send quotes to customers

  • โœ… Track quote status and acceptance

  • โœ… Convert accepted quotes to invoices

  • โœ… Implement complete workflows in 4 languages

Happy quoting!

Last updated