← LinkedIn demo

AILANG×docs.mollie.com

AI agent-ready generated 2026-05-14
agent-ready privacy portable

docs.mollie.com scored 4/10 on agent-ready.

The radar shows AILANG-readiness across three commercial concerns. High means docs.mollie.com is already strong there; low means AILANG could meaningfully help.

Why agent-ready scored 4/10
  • Page references /.well-known/agent.json — the A2A agent card discovery endpoint. Worth only 1pt: it's bleeding-edge (A2A protocol new in 2026), no commercial site has adopted it yet — keep it as a moonshot bonus, not a baseline expectation.
  • Page references /openapi.json, /openapi.yaml, or an OpenAPI schema URL.
  • Page references an MCP endpoint such as /mcp/ or /mcp/sse.
  • Page links to public API documentation, Swagger UI, or ReDoc.
  • Page mentions webhooks, callback URLs, or event subscriptions — the most agent-callable backend pattern.
  • Page documents rate limits, throttling, or 429 handling — agents need to know how to back off.
  • Page references Server-Sent Events, text/event-stream, or a streaming endpoint — agents that read incrementally land here.
  • Page mentions a sandbox, test mode, or test environment — lets agents practise against fake state before touching production.
  • Page documents OAuth, JWT, bearer tokens, API keys, or access tokens — agents can't call the API without knowing how to authenticate.
  • Page mentions idempotency, idempotency-key, or idempotent requests — agents need this to retry safely.
  • Page mentions AG-UI (Agent-User Interaction Protocol) — streams 16 typed lifecycle/text/tool/state events from agent backend to frontend over SSE or WebSocket.
  • Page mentions x402 (Coinbase's signed crypto payment payloads) or Cloudflare's pay-per-crawl (crawler-price header for AI-crawler monetisation). Both revive HTTP 402 for agents — Cloudflare joined the x402 Foundation, so they're one umbrella signal.
  • Page mentions AP2 (Agent Payments Protocol) — Google + Mastercard + 60 orgs. Cryptographically signed Mandates (Intent + Cart) authorise agents to spend on a user's behalf with price/timing/condition bounds.
  • Page mentions UTCP (Universal Tool Calling Protocol) — MCP alternative. Tools described in a JSON UTCPManual, called via their native protocols (HTTP/gRPC/CLI).

Full breakdown ↓ · View rubric ↗

Developers integrating payment processing into their applications or e-commerce platforms.

This documentation details the API endpoint for creating payments, a core function for integrating Mollie's payment services. It outlines how to initiate a payment, manage customer redirects, and utilize webhooks for status updates. Developers can specify amounts, currencies, payment methods, and include additional details like order lines or customer addresses for enhanced processing and fraud protection.
Payment API key Webhook Payment method Redirect URL Issuer

What AILANG Parse sees on docs.mollie.com

Structural extraction — the same content an AI agent would consume from this page.

6 headings2 images0 lists1 tables4 links1 code samplesHTML parsing by AILANG Parse

27 sections — page skeleton

9 headers 2 navs 1 main 1 article 13 sections 1 footer

6 headings

Create payment Access with Show Details 201 The newly created payment object. 422 The request contains issues. For example, if a payment description is missing, or if the specified amount is higher than the maximum allowed amount. 503 The payment method supplier is currently unavailable. For example, if you are setting up an iDEAL payment but the iDEAL network is having issues, we may return this error response.

2 images

Mollie DocumentationMollie Documentation
Show the full extract — what AILANG Parse pulled from this page
# Create payment


*Header:*
[Jump to Content](#content)

[Image: Mollie Documentation]

[(link)](/docs)

[Docs](/docs)

[API Reference](/reference)

[Changelog](/changelog)

[Support](https://help.mollie.com/hc/en-us)

---

[Image: Mollie Documentation]

[(link)](/docs)

API Reference

[Docs](/docs)

[API Reference](/reference)

[Changelog](/changelog)

[Support](https://help.mollie.com/hc/en-us)

Create payment

JUMP TO

*Header:*
# Create payment

Copy Page

post

https://api.mollie.com/v2/payments

Payment creation is elemental to the Mollie API: this is where most payment implementations start off.

Once you have created a payment, you should redirect your customer to the URL in the `_links.checkout` property from the response.

To wrap your head around the payment process, an explanation and flow charts can be found in the 'Accepting payments' guide.

If you specify the `method` parameter when creating a payment, optional additional parameters may be available for the payment method that are not listed below. Please refer to the guide on [method-specific parameters](extra-payment-parameters).

### 
Access with

[API key](/reference/authentication)

[Advanced access token with **payments.write**](/reference/authentication)

[OAuth access with **payments.write**](/reference/authentication)

*Header:*
Query Params

include

string | null

enum

This endpoint allows you to include additional information via the `include` query string parameter.

### Show Details

| details.qrCode | Include a QR code object. Only available for iDEAL, Bancontact and bank transfer payments. |
| --- | --- |

Allowed:

`details.qrCode`

*Header:*
Body Params

description

string

required

length ≤ 255

The description of the payment will be shown to your customer on their card or bank statement when possible. We truncate the description automatically according to the limits of the used payment method. The description is also visible in any exports you generate.

We recommend you use a unique identifier so that you can always link the payment to the order in your back office. This is particularly useful for bookkeeping.

The maximum length of the description field differs per payment method, with the absolute maximum being 255 characters. The API will not reject strings longer than the maximum length but it will truncate them to fit.

amount

object

required

The amount that you want to charge, e.g. `{currency:"EUR", value:"1000.00"}` if you would want to charge €1000.00.

You can find the minimum and maximum amounts per payment method in our help center. Additionally, they can be retrieved using the Get method endpoint.

If a tip was added for a Point-of-Sale payment, the amount will be updated to reflect the initial amount plus the tip amount.

amountobject

redirectUrl

string | null

required

The URL your customer will be redirected to after the payment process.

It could make sense for the redirectUrl to contain a unique identifier – like your order ID – so you can show the right page referencing the order when your customer returns.

The parameter is normally required, but can be omitted for recurring payments (`sequenceType: recurring`) and for Apple Pay payments with an `applePayPaymentToken`.

cancelUrl

string | null

The URL your customer will be redirected to when the customer explicitly cancels the payment. If this URL is not provided, the customer will be redirected to the `redirectUrl` instead — see above.

Mollie will always give you status updates via webhooks, including for the canceled status. This parameter is therefore entirely optional, but can be useful when implementing a dedicated customer-facing flow to handle payment cancellations.

webhookUrl

string | null

The webhook URL where we will send payment status updates to.

The webhookUrl is optional, but without a webhook you will miss out on important status changes to your payment.

The webhookUrl must be reachable from Mollie's point of view, so you cannot use `localhost`. If you want to use webhook during development on `localhost`, you must use a tool like ngrok to have the webhooks delivered to your local machine.

lines

array of objects | null

Optionally provide the order lines for the payment. Each line contains details such as a description of the item ordered and its price.

All lines must have the same currency as the payment.

Required for payment methods `billie`, `in3`, `klarna`, `riverty` and `voucher`.

lines

ADD object

billingAddress

object

The customer's billing address details. We advise to provide these details to improve fraud protection and conversion.

Should include `email` or a valid postal address consisting of `streetAndNumber`, `postalCode`, `city` and `country`.

Required for payment method `alma`, `in3`, `klarna`, `billie` and `riverty`.

billingAddressobject

shippingAddress

object

The customer's shipping address details. We advise to provide these details to improve fraud protection and conversion.

Should include `email` or a valid postal address consisting of `streetAndNumber`, `postalCode`, `city` and `country`.

shippingAddressobject

locale

string | null

Allows you to preset the language to be used in the hosted payment pages shown to the customer. Setting a locale is highly recommended and will greatly improve your conversion rate. When this parameter is omitted the browser language will be used instead if supported by the payment method. You can provide any `xx_XX` format ISO 15897 locale, but our hosted payment pages currently only support the specified languages.

For bank transfer payments specifically, the locale will determine the target bank account the customer has to transfer the money to. We have dedicated bank accounts for Belgium, Germany, and The Netherlands. Having the customer use a local bank account greatly increases the conversion and speed of payment.

Possible values: `en_US``en_GB``nl_NL``nl_BE``de_DE``de_AT``de_CH``de_LU``fr_FR``fr_BE``fr_LU``es_ES``ca_ES``pt_PT``it_IT``nb_NO``sv_SE``fi_FI``da_DK``is_IS``hu_HU``pl_PL``lv_LV``lt_LT``null`

method

string | nullarray

Normally, a payment method screen is shown. However, when using this parameter, you can choose a specific payment method and your customer will skip the selection screen and is sent directly to the chosen payment method. The parameter enables you to fully integrate the payment method selection into your website.

You can also specify the methods in an array. By doing so we will still show the payment method selection screen but will only show the methods specified in the array. For example, you can use this functionality to only show payment methods from a specific country to your customer `['bancontact', 'belfius']`.

Possible values: `alma``applepay``bacs``bancomatpay``bancontact``banktransfer``belfius``billie``bizum``blik``creditcard``directdebit``eps``giftcard``ideal``in3``kbc``klarna``mbway``mobilepay``multibanco``mybank``paybybank``paypal``paysafecard``pointofsale``przelewy24``riverty``satispay``swish``trustly``twint``vipps``voucher`

issuer

string | null

**Only relevant for iDEAL, KBC/CBC, gift card, and voucher payments.**

**⚠️ With the introduction of iDEAL 2 in 2025, this field will be ignored for iDEAL payments. For more information on the migration, refer to our [help center](https://help.mollie.com/hc/articles/19100313768338-iDEAL-2-0).**

Some payment methods are a network of connected banks or card issuers. In these cases, after selecting the payment method, the customer may still need to select the appropriate issuer before the payment can proceed.

We provide hosted issuer selection screens, but these screens can be skipped by providing the `issuer` via the API up front.

The full list of issuers for a specific method can be retrieved via the Methods API by using the optional `issuers` include.

A valid issuer for iDEAL is for example `ideal_INGBNL2A` (for ING Bank).

restrictPaymentMethodsToCountry

string | null

For digital goods in most jurisdictions, you must apply the VAT rate from your customer's country. Choose the VAT rates you have used for the order to ensure your customer's country matches the VAT country.

Use this parameter to restrict the payment methods available to your customer to those from a single country.

If available, the credit card method will still be offered, but only cards from the allowed country are accepted.

The field expects a country code in ISO 3166-1 alpha-2 format, for example `NL`.

metadata

stringnumberOption 3arraynull

Provide any data you like, for example a string or a JSON object. We will save the data alongside the entity. Whenever you fetch the entity with our API, we will also include the metadata. You can use up to approximately 1kB.

captureMode

string | null

Indicate if the funds should be captured immediately or if you want to [place a hold](/docs/place-a-hold-for-a-payment#/) and capture at a later time.

This field needs to be set to `manual` for method `riverty`.

Possible values: `automatic``manual`

captureDelay

string | null

**Only relevant if you wish to manage authorization and capturing separately.**

Some payment methods allow placing a hold on the card or bank account. This hold or 'authorization' can then at a later point either be 'captured' or canceled.

By default, we charge the customer's card or bank account immediately when they complete the payment. If you set a capture delay however, we will delay the automatic capturing of the payment for the specified amount of time. For example `8 hours` or `2 days`.

To schedule an automatic capture, the `captureMode` must be set to `automatic`.

The maximum delay is 7 days (168 hours).

Possible values: `... hours``... days`

applicationFee

object | null

With Mollie Connect you can charge fees on payments that your app is processing on behalf of other Mollie merchants.

If you use OAuth to create payments on a connected merchant's account, you can charge a fee using this `applicationFee` parameter. If the payment succeeds, the fee will be deducted from the merchant's balance and sent to your own account balance.

If instead you want to split a payment on your own account between yourself and a connected merchant, refer to the `routing` parameter.

applicationFeeobject | null

routing

array of objects | null

*This functionality is not enabled by default. Reach out to our partner management team if you wish to use it.*

With Mollie Connect you can charge fees on payments that your app is processing on behalf of other Mollie merchants.

If you create payments on your own account that you want to split between yourself and one or more connected merchants, you can use this `routing` parameter to route the payment accordingly.

The `routing` parameter should contain an array of objects, with each object describing the destination for a specific portion of the payment.

It is not necessary to indicate in the array which portion goes to yourself. After all portions of the total payment amount have been routed, the amount left will be routed to the current organization automatically.

If instead you use OAuth to create payments on a connected merchant's account, refer to the `applicationFee` parameter.

routing

ADD object

sequenceType

string

**Only relevant for recurring payments.**

Indicate which part of a recurring sequence this payment is for.

Recurring payments can only take place if a mandate is available. A common way to establish such a mandate is through a `first` payment. With a `first` payment, the customer agrees to automatic recurring charges taking place on their account in the future.

If set to `recurring`, the customer's card is charged automatically.

Defaults to `oneoff`, which is a regular non-recurring payment.

For PayPal payments, recurring is only possible if your connected PayPal account allows it. You can call our [Methods API](list-methods) with parameter `sequenceType: first` to discover which payment methods on your acco
Screenshot of docs.mollie.com

Couldn't render a preview for this site. Open the URL in a new tab ↗

Screenshot via thum.io

docs.mollie.com scored 4/10 on agent-ready. AILANG opportunity is therefore 6/10. Here's where it would land first.

REST + MCP + A2A + OpenAPI in one command

ailang serve-api takes your typed AILANG functions and exposes them as REST endpoints, MCP tools, A2A skills, and OpenAPI 3.1 docs simultaneously. One module, four agent surfaces.

ailang serve-api --port 8092 --mcp-http \
  pricing.ail catalogue.ail
-- POST /api/pricing/quote, MCP at /mcp/,
-- A2A at /.well-known/agent.json, OpenAPI at /api/_meta/redoc.
→ AILANG docs

Contract-verified tool calls

Every tool an agent can call has a contract. Bounds, refusal paths, type signatures — proven before the agent ever sees it. The agent cannot exceed the tool's declared authority.

func placeOrder(item: SKU, qty: int) -> Receipt
  requires { qty > 0, qty <= 10 }
  ensures  { result.total > 0.0 }
-- the MCP server exposes this with its contract intact.
→ AILANG docs

An MCP server for your own docs and tools

Generate an MCP server from your typed AILANG functions; the docs MCP exposes a submit_feedback tool so agents can flag issues back to the maintainer. The language and its consumers stay on the same wire.

-- The AILANG docs MCP server lets Claude / Cursor / any
-- MCP client query the language directly:
--   stdlib_search "URL encoding"
--   submit_feedback "..."
→ AILANG docs

How this page was made

func sketchSite(url: string<pii>, topic: Topic) -> Sketch
  ! {Net @limit=1, AI @limit=5, FS @limit=4, Process, Declassify}
SignalTopicResultPointsAILANG primitive
agent.json referencedagent-ready0/1ailang serve-api generates A2A agent cards automatically — bonus if you're an early adopter
openapi.json referencedagent-ready2/2ailang serve-api generates OpenAPI 3.1 from Hindley-Milner type signatures
MCP endpoint referencedagent-ready0/2ailang serve-api --mcp-http exposes typed functions as MCP tools
Public API docs linkedagent-ready2/2ailang serve-api hosts Swagger + ReDoc at /api/_meta/ by default
Webhooks documentedagent-ready2/2ailang serve-api handles webhooks as typed handler functions with effect-tracked side effects
Rate limits documentedagent-ready0/2Capability budgets — Net @limit=N is the symmetric server-side primitive for what agents see as rate limits
Streaming / SSE endpointagent-ready0/2std/stream — ssePost and Stream effect handle event-source endpoints with typed event types
Sandbox / test environment offeredagent-ready2/2ailang --ai-stub plus mock effect handlers — deterministic, capability-scoped fakes for any effect, including Net and AI
Authentication documentedagent-ready2/2std/jwt for verification, IFC labels (string / string) to keep credentials out of public sinks at the type level
Idempotency keys documentedagent-ready0/2Pure functions are idempotent by construction; requires/ensures contracts express idempotence as a static guarantee
AG-UI streaming protocolagent-ready0/1std/stream — the AG-UI event lifecycle (RUN_STARTED → TEXT_MESSAGE_CONTENT → TOOL_CALL_RESULT → RUN_FINISHED) is a textbook sum type. ADTs + exhaustive pattern matching make every event-type branch a compile error to skip.
HTTP 402 agent payments (x402 / pay-per-crawl)agent-ready0/1Net @endpoint-scoped capability budgets bound payment destinations; requires { amount <= budget } gates the payload; IFC labels keep the signed payment key out of public sinks. Same primitives cover x402 payload signing and Cloudflare's crawler-price negotiation.
AP2 Agent Payments Protocolagent-ready1/1Mandates ARE contracts. requires { intent.price <= mandate.maxPrice } + ensures { cart.total <= intent.price } is a one-to-one translation of an Intent/Cart Mandate into AILANG. Z3 can verify the bounds at compile time.
UTCP tool-calling protocolagent-ready0/1Typed function signatures are the manifest. ailang serve-api emits the same metadata as a UTCPManual (name, input/output schema, native endpoint) — direct-call discovery without a proxy server.
End-to-end encryption documentedprivacy0/2IFC labels (string) force decryption to flow through a typed boundary; the compiler refuses to publish sealed values without explicit declassification
Compliance certifications citedprivacy0/2requires/ensures contracts express machine-verifiable claims; capability budgets bound audit-trail effects; effect rows leave nothing un-declared
Data minimisation languageprivacy0/2Capability scoping — each Net call declares its endpoint in the effect row, so "doesn't sell" becomes a type-system-enforceable claim, not a marketing one
Third-party domains restrainedprivacy0/2Capability scoping — each Net call declares its endpoint in the effect row
Data residency / on-prem languageprivacy0/2Three-runtime deploy — same module runs in WASM (browser), Cloud Run, and native CLI
Single-vendor LLM languageportable2/2std/ai multi-provider — switch from Anthropic to Gemini to OpenAI without rewriting
Multiple AI providers citedportable2/2std/ai — one Step API across Anthropic, OpenAI, Gemini, OpenRouter, Ollama, and custom-package providers
Cross-runtime / deployment portabilityportable0/2Effect handlers as runtime adapters — same .ail runs as WASM in the browser, a Cloud Run container, and a native CLI; only the handlers change
BYO key / model-agnosticportable2/2AILANG WASM — the full interpreter ships as a browser bundle, so caller-held keys (BYOK), offline apps, and embedded demos all work client-side