Skip to content

Estimates

Manage your Estimates in Moneybird.

Working with Estimates

This section covers how to interact with Moneybird’s Estimates API. You can create, retrieve, update, and delete estimates, as well as change their state, send emails, and duplicate them.

Basic Operations

Get an Estimate

Retrieve an estimate by its ID.

$estimate = $client->estimates()->get('123456789');

List Estimates

Get a paginated list of estimates.

$estimates = $client->estimates()->paginate();
// Iterate through the pages
foreach ($estimates as $estimate) {
echo $estimate->estimate_id;
}

Create an Estimate

Create a new estimate.

$data = [
'contact_id' => '987654321',
'estimate_date' => '2025-03-01',
'due_date' => '2025-03-15',
'reference' => 'EST-2025-001',
'language' => 'en',
'currency' => 'EUR',
'discount' => '10',
'details_attributes' => [
[
'description' => 'Web development services',
'price' => '75.00',
'amount' => '10',
'tax_rate_id' => '123456'
]
]
];
$estimate = $client->estimates()->create($data);

Update an Estimate

Update an existing estimate.

$updateData = [
'reference' => 'EST-2025-001-UPDATED',
'discount' => '15'
];
$estimate = $client->estimates()->update('123456789', $updateData);

Delete an Estimate

Delete an estimate.

$client->estimates()->delete('123456789');

Specialized Features

Change Estimate State

Change the state of an estimate (e.g., to ‘open’, ‘accepted’, ‘rejected’).

$estimate = $client->estimates()->changeState('123456789', 'accepted');

Send Estimate by Email

Send an estimate to a contact by email.

$emailData = [
'recipient' => 'client@example.com',
'subject' => 'Your estimate EST-2025-001',
'body' => 'Please find your estimate attached.'
];
$estimate = $client->estimates()->sendEmail('123456789', $emailData);

Get Email Template

Get the email template for sending an estimate.

$emailTemplate = $client->estimates()->getSendEmailTemplate('123456789');

Duplicate an Estimate

Create a duplicate of an existing estimate.

$duplicateEstimate = $client->estimates()->duplicate('123456789');

Synchronize Estimates

Synchronize a list of estimates by their IDs.

$ids = ['123456789', '987654321'];
$estimates = $client->estimates()->synchronize($ids);

Estimate Properties

When working with estimates, you’ll have access to the following properties:

PropertyTypeDescription
idstringUnique identifier
administration_idstringID of the administration the estimate belongs to
contact_idstringID of the contact associated with the estimate
contactarrayContact details
estimate_idstringHuman-readable estimate identifier
workflow_idstringID of the workflow used for this estimate
document_style_idstringID of the document style used
identity_idstringID of the identity used
statestringCurrent state of the estimate (e.g., ‘draft’, ‘open’, ‘accepted’)
estimate_datestringDate of the estimate (YYYY-MM-DD)
due_datestringDue date of the estimate (YYYY-MM-DD)
referencestringYour reference for this estimate
languagestringLanguage of the estimate
currencystringCurrency used in the estimate
discountstringDiscount percentage
detailsarrayLine items on the estimate
total_price_excl_taxstringTotal price excluding tax
total_price_incl_taxstringTotal price including tax
created_atstringISO 8601 timestamp of when the estimate was created
updated_atstringISO 8601 timestamp of when the estimate was last updated

Note: See the official API reference for the complete list of available properties.

Further reading