Mollie Add-On: payments with method “ideal” fail since 22 Oct 2026 — update_mollie_payment() returns 422, customer never reaches checkout

Subject: Mollie Add-On: payments with method “ideal” fail since 22 Oct 2026 — update_mollie_payment() returns 422, customer never reaches checkout

Can someone forward this issue to technical support?
Unfortunately we have our license through a third party provider, so we don’t have direct acess.
But this issue blocks the core functionality of the Gravity Forms Mollie Add-On, and is caused by a change in the Mollie API that the add-on is intended to work with.
As such it might be good to escalate this info to the technical support staff (i.e. treat it as a ‘notification of technical issue, with functionality-is-blocked priority’ instead of a support request)

Problem:
Since 22 October 2026 around 17:00 CEST, submitting a form with a Mollie feed no longer redirects to the payment page. The customer silently lands on the form’s confirmation page. The payment is created in Mollie but stays “open”, with no webhook URL.

Versions:
Gravity Forms 2.10.5, Gravity Forms Mollie Add-On 1.8.2, WordPress 6.9.10

Cause (from debug log):

  1. create_payment() succeeds. The request includes “method”:“ideal” and no webhookUrl. The response’s checkout link points directly to pay.ideal.nl (iDEAL 2.0).
  2. GF_Mollie::capture() then calls update_mollie_payment() to set redirectUrl, webhookUrl and metadata.entry_id.
  3. Mollie rejects this with {“status”:422,“title”:“Unprocessable Entity”,“detail”:“The payment cannot be updated”}.
  4. The add-on logs “Unable to update payment” and marks the payment as failed (fail_payment). The customer is not redirected to checkout and lands on the confirmation page. Because the webhook URL was never set, Mollie never reports the payment status.

Before this, from 9 October, updating the description in the same call caused the same 422.
This was worked around by using the ‘gform_mollie_payment_description’ hook to prevent the entry_id being added to the description.
This fix stopped working on October 22nd, suggesting that Mollie now locks iDEAL payments against updates entirely once the iDEAL 2.0 transaction has been created.

Workaround confirmed:
Removing method from the payment details in create_payment() (unset($payment_details[‘method’]):wink: makes the update succeed and payments work normally again. Where iDEAL is the only active method on the profile, Mollie still redirects straight to pay.ideal.nl.
The logs suggest why: with method “ideal”, Mollie returns a checkout link directly to pay.ideal.nl and a 15-minute expiry, i.e. the iDEAL transaction is created immediately. Without method, the checkout link is Hosted Payment Page – Checkout Page Design | Mollie with a 24-hour expiry, and the iDEAL transaction is only created once the customer reaches the checkout, after the add-on’s update call.

Suggested fix:
Send webhookUrl, metadata and the final redirectUrl in the create call instead of a follow-up update. For example, look up the entry by transaction id rather than entry id. Also, handle a failed update so that it doesn’t silently fail the checkout redirect.

Suggested adjustment (as a possibly quicker-to-implement workaround):
Add a filter hook or feed setting to omit the ‘method’ value from the payment details. The customer would then select a payment method in the Mollie checkout instead (or be sent straight to it when only one payment method is active in the Mollie profile). When this option is enabled, any payment-method choice in the form itself should be hidden, since it would no longer have any effect. This would of course need testing for side effects.

Full debug logs

(Custom logging lines added to log full API request urls, request bodies, and response bodies, and in the second log also log which function called make_request() ).

Failed submission (description-field forced unchanged in update):

2026-10-23 13:47:49.330674 - DEBUG → GFFeedAddOn::pre_process_feeds(): Found 1 feeds for form #62.
2026-10-23 13:47:49.333808 - DEBUG → GF_Mollie::initialize_api(): Validating API credentials.
2026-10-23 13:47:49.334908 - ERROR → GF_Mollie_API::make_request(): API request url = https://api.mollie.com/v2/payments
2026-10-23 13:47:49.334955 - ERROR → GF_Mollie_API::make_request(): API request body = {“amount”:{“currency”:“EUR”,“value”:“46.00”},“locale”:“nl_NL”,“description”:“Product: KANS - De scheg - Fashion en Design”,“redirectUrl”:“https://platform-c.nu/aanmelden-kans-de-scheg-fashion-atelier/?gf_mollie_result=aWRzPTYyfDcwfDAmaGFzaD02MzYzOWE2NmVjODgwZjhmYWMzNTY0NjU1NDIzNjFkNQ=",“profileId”:“pfl_zugJ5NTEUz”,“testmode”:false,“method”:"ideal”}
2026-10-23 13:47:50.049186 - ERROR → GF_Mollie_API::make_request(): API response body = {“id”:“tr_H8Qy3MBv5ks6Moid4eYYJ”,“mode”:“live”,“_links”:{“self”:{“href”:“https://api.mollie.com/v2/payments/tr_H8Qy3MBv5ks6Moid4eYYJ",“type”:“application/hal+json”},“checkout”:{“href”:“https://pay.ideal.nl/transactions/https%3A%2F%2Ftx.ideal.nl%2F2%2FAXHL2F4Q24AJC4CHXHS6LXYJHWE?sig=DGBCAEIDUTZZZCNFMLNEI4RUF5R7TU6ASALPJ577LY6TNQ723LOC5JCDRAUBCAU4Z6752LYS2FPHZ6UQJJV5XYB5DH6VBBK2QQF6DUMK6NLYX5PO3”,“type”:“text/html”},“dashboard”:{“href”:“https://my.mollie.com/dashboard/org_13468287/payments/tr_H8Qy3MBv5ks6Moid4eYYJ”,“type”:“text/html”},“documentation”:{“type”:“text/html”,“href”:“https://docs.mollie.com/reference/create-payment”}},“amount”:{“value”:“46.00”,“currency”:“EUR”},“locale”:“nl_NL”,“method”:“ideal”,“status”:“open”,“metadata”:null,“resource”:“payment”,“createdAt”:“2026-10-23T11:47:49+00:00”,“expiresAt”:“2026-10-23T12:02:49+00:00”,“profileId”:“pfl_zugJ5NTEUz”,“description”:"Product: KANS - De scheg - Fashion en Design”,“redirectUrl”:“https://platform-c.nu/aanmelden-kans-de-scheg-fashion-atelier/?gf_mollie_result=aWRzPTYyfDcwfDAmaGFzaD02MzYzOWE2NmVjODgwZjhmYWMzNTY0NjU1NDIzNjFkNQ=",“isCancelable”:false,“sequenceType”:"oneoff”}
2026-10-23 13:47:50.049344 - DEBUG → GFPaymentAddOn::validation(): Authorization result for form #62 submission => Array
(
[is_authorized] => 1
[transaction_id] => tr_H8Qy3MBv5ks6Moid4eYYJ
[payment_pending] => 1
)

2026-10-23 13:47:50.089845 - DEBUG → GFFeedAddOn::maybe_process_feed(): Checking for feeds to process for entry #4163.
2026-10-23 13:47:50.089879 - DEBUG → GFFeedAddOn::pre_process_feeds(): Found 1 feeds for form #62.
2026-10-23 13:47:50.090024 - DEBUG → GFFeedAddOn::maybe_process_feed(): Starting to process feed (#70 - Mollie Feed 1) for entry #4163.
2026-10-23 13:47:50.091799 - DEBUG → GFFeedAddOn::fulfill_entry(): Entry #4163 marked as fulfilled.
2026-10-23 13:47:50.093817 - DEBUG → Gravity_Forms\Gravity_Forms\Async\GF_Background_Process::dispatch_on_shutdown(): Aborting. Queue is empty.
2026-10-23 13:47:50.095377 - ERROR → GF_Mollie_API::make_request(): API request url = https://api.mollie.com/v2/payments/tr_H8Qy3MBv5ks6Moid4eYYJ?
2026-10-23 13:47:50.095432 - ERROR → GF_Mollie_API::make_request(): API request body =
2026-10-23 13:47:50.203512 - ERROR → GF_Mollie_API::make_request(): API response body = {“id”: “tr_H8Qy3MBv5ks6Moid4eYYJ”, “mode”: “live”, “_links”: {“self”: {“href”: “https://api.mollie.com/v2/payments/tr_H8Qy3MBv5ks6Moid4eYYJ”, “type”: “application/hal+json”}, “checkout”: {“href”: “https://pay.ideal.nl/transactions/https%3A%2F%2Ftx.ideal.nl%2F2%2FAXHL2F4Q24AJC4CHXHS6LXYJHWE?sig=DGBCAEIDUTZZZCNFMLNEI4RUF5R7TU6ASALPJ577LY6TNQ723LOC5JCDRAUBCAU4Z6752LYS2FPHZ6UQJJV5XYB5DH6VBBK2QQF6DUMK6NLYX5PO3”, “type”: “text/html”}, “dashboard”: {“href”: “Mollie login - Login to your Mollie Dashboard”, “type”: “text/html”}, “documentation”: {“href”: “Get payment”, “type”: “text/html”}}, “amount”: {“value”: “46.00”, “currency”: “EUR”}, “locale”: “nl_NL”, “method”: “ideal”, “status”: “open”, “metadata”: null, “resource”: “payment”, “createdAt”: “2026-10-23T11:47:49+00:00”, “expiresAt”: “2026-10-23T12:02:49+00:00”, “profileId”: “pfl_zugJ5NTEUz”, “description”: “Product: KANS - De scheg - Fashion en Design”, “redirectUrl”: “https://platform-c.nu/aanmelden-kans-de-scheg-fashion-atelier/?gf_mollie_result=aWRzPTYyfDcwfDAmaGFzaD02MzYzOWE2NmVjODgwZjhmYWMzNTY0NjU1NDIzNjFkNQ=”, “isCancelable”: false, “sequenceType”: “oneoff”}
2026-10-23 13:47:50.203763 - DEBUG → GF_Mollie::capture(): Update payment details to include entry id and update return URL and webhook URL
2026-10-23 13:47:50.204214 - ERROR → GF_Mollie_API::make_request(): API request url = https://api.mollie.com/v2/payments/tr_H8Qy3MBv5ks6Moid4eYYJ
2026-10-23 13:47:50.204257 - ERROR → GF_Mollie_API::make_request(): API request body = {“testmode”:false,“description”:“Product: KANS - De scheg - Fashion en Design”,“redirectUrl”:“https://platform-c.nu/aanmelden-kans-de-scheg-fashion-atelier/?gf_mollie_result=aWRzPTYyfDcwfDQxNjMmaGFzaD1jZGEyYWUxY2UwMzc4MTJkZjViNjk4MjdmNDgzZTY5YQ=",“webhookUrl”:“https://platform-c.nu/?entry_id=4163&callback=gravityformsmollie”,“metadata”:{“entry_id”:"4163”}}
2026-10-23 13:47:50.336467 - ERROR → GF_Mollie_API::make_request(): API response body = {“status”:422,“title”:“Unprocessable Entity”,“detail”:“The payment cannot be updated”,“_links”:{“documentation”:{“href”:“https://docs.mollie.com/reference/update-payment",“type”:"text/html”}}}
2026-10-23 13:47:50.341085 - ERROR → GF_Mollie_API::make_request(): request to API returned an error; The payment cannot be updated
2026-10-23 13:47:50.342289 - ERROR → GF_Mollie::capture(): Unable to update payment; Unprocessable Entity: The payment cannot be updated
2026-10-23 13:47:50.347461 - DEBUG → GFPaymentAddOn::process_capture(): Updating entry #4163 with result => Array
(
[error_message] => De status van je betaling kan niet bijgewerkt worden.
[is_success] =>
[is_authorized] =>
)
2026-10-23 13:47:50.347656 - DEBUG → GFPaymentAddOn::fail_payment(): Processing request.
2026-10-23 13:47:50.355381 - DEBUG → GFPaymentAddOn::payment_status_changed(): Executing functions hooked to gform_post_payment_status_change.

Successful submission (also suppressing method in create):

2026-10-23 21:56:20.732513 - DEBUG → GFFeedAddOn::pre_process_feeds(): Found 1 feeds for form #62.
2026-10-23 21:56:20.734380 - DEBUG → GF_Mollie::initialize_api(): Validating API credentials.
2026-10-23 21:56:20.735131 - ERROR → GF_Mollie_API::create_payment(): calling make_request
2026-10-23 21:56:21.392920 - ERROR → GF_Mollie_API::make_request(): API request url = https://api.mollie.com/v2/payments
2026-10-23 21:56:21.393002 - ERROR → GF_Mollie_API::make_request(): API request body = {“amount”:{“currency”:“EUR”,“value”:“46.00”},“locale”:“nl_NL”,“description”:“Product: KANS - De scheg - Fashion en Design”,“redirectUrl”:“https://platform-c.nu/aanmelden-kans-de-scheg-fashion-atelier/?gf_mollie_result=aWRzPTYyfDcwfDAmaGFzaD02MzYzOWE2NmVjODgwZjhmYWMzNTY0NjU1NDIzNjFkNQ=",“profileId”:“pfl_zugJ5NTEUz”,"testmode”:false}
2026-10-23 21:56:22.038361 - ERROR → GF_Mollie_API::make_request(): API response body = {“resource”:“payment”,“id”:“tr_XKGHMTSvJbjtNutb8XZYJ”,“mode”:“live”,“createdAt”:“2026-10-23T19:56:21+00:00”,“amount”:{“value”:“46.00”,“currency”:“EUR”},“description”:“Product: KANS - De scheg - Fashion en Design”,“method”:“ideal”,“metadata”:null,“status”:“open”,“isCancelable”:false,“expiresAt”:“2026-10-24T19:56:21+00:00”,“locale”:“nl_NL”,“profileId”:“pfl_zugJ5NTEUz”,“sequenceType”:“oneoff”,“redirectUrl”:“https://platform-c.nu/aanmelden-kans-de-scheg-fashion-atelier/?gf_mollie_result=aWRzPTYyfDcwfDAmaGFzaD02MzYzOWE2NmVjODgwZjhmYWMzNTY0NjU1NDIzNjFkNQ=“,“settlementAmount”:{“value”:“46.00”,“currency”:“EUR”},”_links":{“self”:{“href”:“https://api.mollie.com/v2/payments/tr_XKGHMTSvJbjtNutb8XZYJ”,“type”:“application/hal+json”},“checkout”:{“href”:“https://www.mollie.com/checkout/out/XKGHMTSvJbjtNutb8XZYJ”,“type”:“text/html”},“dashboard”:{“href”:“https://my.mollie.com/dashboard/org_13468287/payments/tr_XKGHMTSvJbjtNutb8XZYJ”,“type”:“text/html”},“documentation”:{“href”:“https://docs.mollie.com/reference/create-payment”,“type”:"text/html”}}}
2026-10-23 21:56:22.038753 - DEBUG → GFPaymentAddOn::validation(): Authorization result for form #62 submission => Array
(
[is_authorized] => 1
[transaction_id] => tr_XKGHMTSvJbjtNutb8XZYJ
[payment_pending] => 1
)

2026-10-23 21:56:22.059778 - DEBUG → GFFeedAddOn::maybe_process_feed(): Checking for feeds to process for entry #4175.
2026-10-23 21:56:22.059806 - DEBUG → GFFeedAddOn::pre_process_feeds(): Found 1 feeds for form #62.
2026-10-23 21:56:22.059916 - DEBUG → GFFeedAddOn::maybe_process_feed(): Starting to process feed (#70 - Mollie Feed 1) for entry #4175.
2026-10-23 21:56:22.061453 - DEBUG → GFFeedAddOn::fulfill_entry(): Entry #4175 marked as fulfilled.
2026-10-23 21:56:22.064388 - DEBUG → Gravity_Forms\Gravity_Forms\Async\GF_Background_Process::dispatch_on_shutdown(): Aborting. Queue is empty.
2026-10-23 21:56:22.066725 - ERROR → GF_Mollie_API::get_mollie_payment(): calling make_request
2026-10-23 21:56:22.234352 - ERROR → GF_Mollie_API::make_request(): API request url = https://api.mollie.com/v2/payments/tr_XKGHMTSvJbjtNutb8XZYJ?
2026-10-23 21:56:22.234498 - ERROR → GF_Mollie_API::make_request(): API request body =
2026-10-23 21:56:22.522547 - ERROR → GF_Mollie_API::make_request(): API response body = {“resource”:“payment”,“id”:“tr_XKGHMTSvJbjtNutb8XZYJ”,“mode”:“live”,“createdAt”:“2026-10-23T19:56:21+00:00”,“amount”:{“value”:“46.00”,“currency”:“EUR”},“description”:“Product: KANS - De scheg - Fashion en Design”,“method”:“ideal”,“metadata”:null,“status”:“open”,“isCancelable”:false,“expiresAt”:“2026-10-24T19:56:21+00:00”,“locale”:“nl_NL”,“profileId”:“pfl_zugJ5NTEUz”,“sequenceType”:“oneoff”,“redirectUrl”:“https://platform-c.nu/aanmelden-kans-de-scheg-fashion-atelier/?gf_mollie_result=aWRzPTYyfDcwfDAmaGFzaD02MzYzOWE2NmVjODgwZjhmYWMzNTY0NjU1NDIzNjFkNQ=“,“settlementAmount”:{“value”:“46.00”,“currency”:“EUR”},”_links":{“self”:{“href”:“https://api.mollie.com/v2/payments/tr_XKGHMTSvJbjtNutb8XZYJ”,“type”:“application/hal+json”},“checkout”:{“href”:“https://www.mollie.com/checkout/out/XKGHMTSvJbjtNutb8XZYJ”,“type”:“text/html”},“dashboard”:{“href”:“https://my.mollie.com/dashboard/org_13468287/payments/tr_XKGHMTSvJbjtNutb8XZYJ”,“type”:“text/html”},“documentation”:{“href”:“https://docs.mollie.com/reference/get-payment”,“type”:"text/html”}}}
2026-10-23 21:56:22.522811 - DEBUG → GF_Mollie::capture(): Update payment details to include entry id and update return URL and webhook URL
2026-10-23 21:56:22.523374 - ERROR → GF_Mollie_API::update_mollie_payment(): calling make_request
2026-10-23 21:56:22.720990 - ERROR → GF_Mollie_API::make_request(): API request url = https://api.mollie.com/v2/payments/tr_XKGHMTSvJbjtNutb8XZYJ
2026-10-23 21:56:22.721122 - ERROR → GF_Mollie_API::make_request(): API request body = {“testmode”:false,“description”:“Product: KANS - De scheg - Fashion en Design”,“redirectUrl”:“https://platform-c.nu/aanmelden-kans-de-scheg-fashion-atelier/?gf_mollie_result=aWRzPTYyfDcwfDQxNzUmaGFzaD02YWVkNjRlNGZjNmQ3MTYwZTY1Mjk4YmQ5OGU1YTM4ZQ=",“webhookUrl”:“https://platform-c.nu/?entry_id=4175&callback=gravityformsmollie”,“metadata”:{“entry_id”:"4175”}}
2026-10-23 21:56:23.098684 - ERROR → GF_Mollie_API::make_request(): API response body = {“resource”:“payment”,“id”:“tr_XKGHMTSvJbjtNutb8XZYJ”,“mode”:“live”,“createdAt”:“2026-10-23T19:56:21+00:00”,“amount”:{“value”:“46.00”,“currency”:“EUR”},“description”:“Product: KANS - De scheg - Fashion en Design”,“method”:“ideal”,“metadata”:{“entry_id”:“4175”},“status”:“open”,“isCancelable”:false,“expiresAt”:“2026-10-24T19:56:21+00:00”,“locale”:“nl_NL”,“profileId”:“pfl_zugJ5NTEUz”,“sequenceType”:“oneoff”,“redirectUrl”:“https://platform-c.nu/aanmelden-kans-de-scheg-fashion-atelier/?gf_mollie_result=aWRzPTYyfDcwfDQxNzUmaGFzaD02YWVkNjRlNGZjNmQ3MTYwZTY1Mjk4YmQ5OGU1YTM4ZQ=“,“webhookUrl”:“https://platform-c.nu/?entry_id=4175\u0026callback=gravityformsmollie”,“settlementAmount”:{“value”:“46.00”,“currency”:“EUR”},”_links":{“self”:{“href”:“https://api.mollie.com/v2/payments/tr_XKGHMTSvJbjtNutb8XZYJ”,“type”:“application/hal+json”},“checkout”:{“href”:“https://www.mollie.com/checkout/out/XKGHMTSvJbjtNutb8XZYJ”,“type”:“text/html”},“dashboard”:{“href”:“https://my.mollie.com/dashboard/org_13468287/payments/tr_XKGHMTSvJbjtNutb8XZYJ”,“type”:“text/html”},“documentation”:{“href”:“https://docs.mollie.com/reference/update-payment”,“type”:"text/html”}}}
2026-10-23 21:56:23.099015 - DEBUG → GF_Mollie::complete_authorization(): Mollie payment has been created, but the payment hasn’t been authorized yet. Mark it as processing.
2026-10-23 21:56:23.108714 - DEBUG → GFPaymentAddOn::payment_status_changed(): Executing functions hooked to gform_post_payment_status_change.

Gravity Forms has brought out a version 1.8.2.1 of the Gravity Forms Mollie Add-on, with a fix to work around this specific issue.