{
 "id": 69789,
 "slug": "how-mollie-payment-webhooks-and-status-updates-work",
 "url": "https://agents.willem.com/en/snippets/how-mollie-payment-webhooks-and-status-updates-work/",
 "language": "en",
 "title": "How Mollie payment webhooks and status updates work",
 "subtitle": "The webhook says something changed, your backend fetches what.",
 "summary": "Mollie's webhook only tells my backend that something changed on a payment, never the new status itself. My server then requests the actual status over a secure channel using the secret API key and acts on the result.",
 "topics": [
  "Amsterdam",
  "design",
  "iPad",
  "lemmid-store",
  "money",
  "payments",
  "programming",
  "server",
  "tablet",
  "vim",
  "work"
 ],
 "date": "2020-03-25",
 "published": "2020-03-25T00:00:00+01:00",
 "created": "2026-08-30T07:13:30.611000+02:00",
 "updated": "2026-08-30T07:16:55.003000+02:00",
 "full_article_url": "https://willem.com/en/2020-03-25_designing-and-implementing-a-micro-payment-system/",
 "author": {
  "name": "Willem L. Middelkoop",
  "url": "https://willem.com"
 },
 "note": "A short distillation of a longer willem.com post. Not currently published on willem.com itself.",
 "answers_question": "Why does a Mollie webhook not include the payment status?",
 "text": "The webhook delivers a message like: look, something changed on payment XYZ. It deliberately omits the new status, for security: if the status travelled in the webhook, malicious users might mimic the call. Instead the backend fetches the real status from the payment provider with its secret API key, then takes the appropriate action, such as sending email notifications or starting delivery of goods.\nTreat payment status as an asynchronous process. Users close the payment page or leave devices unattended, and banks have interruptions, so you never know precisely when a payment completes. Handle status updates separately from the primary user interaction.\nAlso calculate the amount on the server, never in the client, because frontend code can be manipulated through the browser. I implemented this in NodeJS; Mollie also offers PHP, Ruby and Python packages.",
 "markdown_url": "https://agents.willem.com/en/snippets/how-mollie-payment-webhooks-and-status-updates-work/snippet.md"
}