---
search:
  tags:
    - billing
    - POST
seo:
  description: >-
    Starts a payment for amount_eur of credit (at list prices, which exclude
    VAT; EUR 5 to… Reference for the POST /v1/billing/topups endpoint in the
    pols.so API.
sidebar:
  label: Start a top-up of the org's prepaid credit, paid on Mollie's checkout
  badge: POST
title: Start a top-up of the org's prepaid credit, paid on Mollie's checkout
type: openapi-operation
---
Starts a payment for `amount_eur` of credit (at list prices, which
exclude VAT; EUR 5 to EUR 1,000 in whole cents) at Mollie, the
payment provider, and returns it with `checkout_url`, the page on
mollie.com where it is paid. What it charges (`charged_eur`, which
is `net_eur` plus `vat_eur`) follows `tax_treatment`, from the
org's billing details as they are now: `lu_vat` adds 17%
Luxembourg VAT to the amount (rounded half up to the cent), so EUR
5.00 of credit charges EUR 5.85; `reverse_charge` and `outside_eu`
charge the amount, without VAT. Once Mollie
confirms the payment, the org gets prepaid credit of `amount_eur`,
which never expires (`/v1/balance`), once, and the top-up gets
its invoice (`invoice_id`). A failed, canceled or expired payment
grants nothing. Owners' and admins' keys only (403 `forbidden`
otherwise).

The org must have saved its billing details (`/v1/billing`) first
(409 `billing_details_required`). 409 `topup_not_available`, with
a message saying why: the org cannot top up as it would be taxed,
for now a consumer outside the EU (a business there needs its tax
ID in its billing details), or a consumer in another EU country
once the year's such sales reached the EU threshold. An amount out
of bounds is 400 `bad_request`; more than 10 top-ups started in an
hour is 429 `rate_limited`. 502 `payment_provider_error`: Mollie
could not be reached or refused the payment; nothing is charged.
503 `unavailable`: the deployment takes no payments. While `test`
is true, payments go through Mollie's test mode and no money
moves, and their invoices are drafts.

A consumer, or a business whose VAT ID VIES has not confirmed, has
a right of withdrawal for 14 days
(https://pols.so/withdrawal/) and orders only with
`withdrawal_consent`: "I expressly request that pols.so start
providing the service now, before the 14-day withdrawal period
ends, so that I can use the credit straight away. I understand
that if I withdraw, I pay for the credit I have used until then,
and that I lose my right of withdrawal once all of this credit
has been used." Without it, 409 `withdrawal_consent_required`. The
consent is recorded with the top-up: when, its wording and the
caller's address. The order is confirmed by email once paid, with
the terms of service (https://pols.so/terms/) attached; in German
when `Accept-Language` prefers it.

`POST /v1/billing/topups`
