Skip to content
Facteur
FRGet started

Hosted in France · GDPR · DPA downloadable online

Test your emails and SMS without ever touching your subscription

Your tests are waiting on an email or an SMS to carry on. Facteur receives them, your suite reads them over the API: no sleep(), no shared mailbox, no quota running out halfway through a campaign.

No card required. 500 emails a month, free forever.

trial address1 hour

A test address, right now

It receives real mail for one hour, ten messages at most. No account, no card, nothing to install.

  1. Click: an address appears here.
  2. Send it an email, from whichever mail client you like.
  3. The message shows up here, code and links already extracted.

Getting an address means you accept the terms of use and the limits they set.

How the trial works, and what it does not do

Built by the team that was testing electronic signature journeys, and paying the bill for it.

Typical saving
−65 %
Per-inbox quotas
from €8
Data
France

What our customers test

Electronic signature

e2e-signature

The whole signing journey: sending the document to the signer, a reminder on day two, a one-time code to authenticate, a signature receipt to both parties.

6,400 messages a day

The same journey runs in staging and, every five minutes, as a smoke test against production. If the code takes a minute to arrive, the signature fails for a real customer.

How it works

Three steps, and nothing to provision

An inbox exists before you use it. Your tests write to any address that belongs to it, then ask the API for the message.

  1. The address already exists

    Every inbox owns its subdomain. Any address ending in it is accepted from the first message on: nothing to create before the test, nothing to clean up after it.

  2. Your test uses it like a real one

    Sign-up, forgotten password, one-time code: nothing is mocked. Your application really sends the message, and Facteur receives it over SMTP.

  3. The API waits, then hands back the message in pieces

    A single call blocks until it lands, then returns the body, the headers, the links and the code already extracted. There is nothing left to parse.

messages.await responseJSON
{
  "id": "msg_2f8a41c7",
  "receivedAt": "2026-08-11T09:14:02.317Z",
  "from": "no-reply@your-app.com",
  "to": "signup+42@j3k9x2mq.inbox.facteur.eu",
  "subject": "Confirm your address",
  "otp": "265279",
  "links": [
    { "text": "Confirm my address", "href": "https://your-app.com/v/8Kd2" }
  ],
  "text": "Hi, your confirmation code is 265279 ...",
  "html": "<!doctype html><html lang=\"en\"> ..."
}

The screen

The same message, read by hand

The API serves your tests; the interface serves the moment they fail. It is the same inbox opened in a browser, with what the engine extracted shown beside the message it came from.

The Facteur inbox. On the left, three received messages with their recipient, their time and the code found in each. In the middle, a message titled « Votre code de connexion »: its sender, its receiving address, its size, a 7 ms delivery time, and its body with the code 481902 highlighted. Below it, the « Extrait automatiquement » panel lists otp 481902, codes 481902 and links https://app.exemple.fr/securite. On the right, the inbox card: 3 messages received, 9 ms median delivery, 30-day retention, and its receiving domain.
A capture of the application, taken from the development stack: same code, same data as in production.

The code, found with no pattern to write

The engine takes the number that follows a cue word (« code », « verification », « one-time ») and drops the rest. Nothing to configure for an ordinary message.

Highlighted where it was taken from

Every extracted value is marked in the body of the message. When an extraction gets it wrong, you can see at once what it landed on.

Delivery time, on screen

The time between SMTP acceptance and availability, per message and as a median for the inbox. It is the product’s promise, so it is measured on screen rather than claimed on this page.

Why we exist

We built Facteur because we were the unhappy customer

We validate electronic signature journeys: sending the document, chasing the signer, the one-time code, the signature receipt. In development first, then replayed continuously as a smoke test against production. Thousands of messages a day, and a latency requirement. These four sentences are the ones we read in our own tool, and each has an answer in the product.

« Daily email limit exceeded. Your quota will reset in around 10 hours. »

One runaway test suite on a Tuesday morning, and the whole team is stopped until the evening. The only way out on offer: raise your subscription.

Buy a capacity pack in two clicks and it is available immediately. Your subscription does not move.

« Upgrade to the Enterprise plan to set custom usage limits per inbox. »

Without isolation, a single misbehaving inbox drains the quota of every other one. The feature exists; it is simply reserved for large contracts.

Per-inbox quotas are included from the first paid plan, at €12 a month. Daily or monthly limits, and you decide whether hitting one blocks or merely alerts.

« Your subscription goes from $166.78 to $247.38 a month. »

Doubling your capacity for a week means committing to the higher tier for the whole month, then waiting for the next cycle to come back down.

Capacity is decoupled from the subscription. Credits last twelve months, they stack, and changing plan never costs you a single one.

« Usage aggregated by date. »

You find out about the overage when CI breaks, and the dashboard will not tell you which inbox caused it.

Alerts at 50, 75, 90 and 100 % by email or in your team’s Slack channel. Usage broken down per inbox: the dashboard answers “who used up my quota”, not just “how much did I use”.

What changes

Four deliberate choices

Capacity is bought, not negotiated

Prepaid packs you burn at your own pace, pay-as-you-go if you would rather not plan ahead, and a spending cap so you never discover a bill.

See the pricing

Per-inbox quotas, on every plan

Keep CI apart from staging, team A apart from team B. Each inbox has its own limit, its own behaviour when exceeded, and its own alerts.

Quotas and alerts

The alert lands where your team is already looking

A quota filling up is something you can see coming: at 50, 75, 90 and 100 %, an alert goes out by email or into your Slack channel. It carries the figure, the inbox it concerns and a link, never a copy of your messages.

Integrations

Hosted in France, billed in euros

OVHcloud infrastructure in Roubaix and Gravelines. Sub-processors listed publicly, a DPA you download without talking to sales, encryption at rest and retention you choose.

Our commitment

What it comes down to

The same usage, 65 % less

A team receiving 150,000 emails and 750 SMS a month on a dedicated number, with five seats.

Equivalent list price elsewhere

187 €/month

  • A subscription tier to renegotiate at every peak
  • SMS as a paid add-on
  • Per-inbox quotas reserved for the Enterprise plan
  • Downgrades only at the next cycle
−65 %

With Facteur

66 €/month

  • Subscription Team 39 €(features, seats and retention)
  • Capacity packs 0 €(valid 12 months, they stack)
  • SMS and dedicated number 27 €(per unit, no module to switch on)
  • Per-inbox quotas, alerts and observability included

Estimated from competitors’ public list prices and from a renewal amount actually observed. The sources, and a simulator for your own volume, are on the pricing page.

Migration

Your existing tests keep working

Our API will open a compatibility layer: one base URL and one key to change, with no rewrite. It is not live yet, and the guide says exactly what is.

BeforeTypeScript
const mailosaur = new MailosaurClient(
  process.env.MAILOSAUR_API_KEY
);
AfterTypeScript
const mailosaur = new MailosaurClient(
  process.env.FACTEUR_API_KEY,
  { baseUrl: 'https://api.facteur.eu/compat' }
);
Read the full migration guide

In the box

Everything a test suite needs

Unlimited SMTP inboxes

Any address at @xxx.inbox.facteur.eu works, with nothing to create first.

Waiting without polling

The API blocks until the message lands. Your tests no longer contain a single sleep().

Automatic extraction

OTP codes, links and buttons pulled out of the body, ready to assert on.

Full MIME

HTML, text, complete headers, encoding. What arrived on port 25 is what you read.

Verifiable attachments

Name, size and SHA-256 checksum of every file, kept apart from signature images.

SMS and OTP

Dedicated numbers, SMS reception, code extraction. The same model as email.

TOTP authenticator

Generate the six-digit codes of your 2FA journeys without reaching for a phone.

Continuous monitoring

Replay your critical production journeys from Datadog Synthetics, verification code included.

SAML SSO from €39

SAML 2.0 and OIDC, one provider per organisation, with no Enterprise plan in the way.

Scoped API keys

Account or inbox, read-only or read-write, with expiry and IP restriction.

Retention you choose

From 1 to 60 days per inbox, or performance mode which stores nothing at all.

API and integrations

An HTTP API that asks for no dependency, and the published state of every framework plugin: what is coming, and what is not.

Questions

What we get asked before people sign up

Do addresses have to be created in advance?

No. Every inbox owns its subdomain, and any address ending in it is accepted from the first message on. So you can derive one address per test (signup+42, signup+43) without calling the API to create them, and without deleting them afterwards.

What happens when I go over my quota?

Nothing breaks, and you are told before it happens: alerts go out at 50, 75, 90 and 100 % of your capacity. Beyond that your credits are drawn down, then pay-as-you-go takes over within the spending cap you set. You can also decide, inbox by inbox, to block rather than bill.

Is the free plan time-limited?

No, it has no end date and asks for no card. It is sized to run a small test suite continuously, not to let you evaluate the product for two weeks before you have to pay.

Do I have to rewrite my tests to move off Mailosaur?

Our API will expose a compatibility layer: one base URL and one key to change, with no rewrite. It is not live yet. The migration guide says endpoint by endpoint what already is and what is still to come, rather than letting you find out mid-migration.

Can I test SMS and one-time codes?

Yes, on the same model as email: a dedicated number, SMS reception, the code pulled out of the text. UK, US and Canadian numbers are provisioned immediately from the app; France and the euro area are being opened.

Where is my data, and for how long?

On OVHcloud infrastructure in Roubaix and Gravelines, encrypted at rest. Retention is set inbox by inbox, from 1 to 60 days, and performance mode stores nothing at all. The DPA and the list of sub-processors download without going through a salesperson.

Your first inbox in two minutes

The free plan asks for no card. If you are switching tools, the steps fit on one page and can be tried on a single test.