Subject: Intermittent Advanced Card Processing failures – PayPal SDK postMessage init() timeout and possible currency/component mismatch
We are experiencing intermittent failures with WooCommerce PayPal Payments → Advanced Credit and Debit Card Payments on our production WooCommerce site.
Customers receive a message saying their credit card number is invalid, even though the card is valid. The same card will often work later, and the same customer can successfully pay through our eWAY gateway. The problem appears to affect PayPal Advanced Card Processing only.
Symptoms
PayPal Advanced Credit and Debit Card Payments fails intermittently.
The customer sees a generic invalid-card/card-validation message.
The same card may work later without any change to the card.
eWAY transactions work successfully using the same cards.
The issue appears random rather than affecting every transaction.
In some failed transactions, shipping data is also missing from emails or webhook payloads, although this may be a separate issue.
Browser console error
Chrome DevTools reports:
text
Uncaught Error: Remote call to init({ ... }) failed
Error: No ack for postMessage init() in https://www.paypal.com/ in 10000ms
The error originates from the PayPal SDK:
text
https://www.paypal.com/sdk/js
The relevant SDK configuration includes:
text
currency=AUD
components=messages,buttons,card-fields
vault=false
commit=false
intent=capture
locale=en_AU
enable-funding=venmo
The stack includes:
text
crossDomainFunctionWrapper
postMessage
component_render
component_create
messages.on
receive_receiveMessage
Additional PayPal diagnostic output
We see successful initialization events, followed by repeated component initialization/update activity:
text
postrobot_hello
init
onReady
onMarkup
updateProps
close::memoized
We also see multiple PayPal SDK initialization diagnostics, including:
text
paypal_js_sdk_v5_init
uidAttribute: present
jsSdkLibrary: none
and later:
text
paypal_js_sdk_v5_init
uidAttribute: missing
jsSdkLibrary: paypal-js
This raises a concern that there may be multiple PayPal initialization paths or that the PayPal component is being mounted/re-mounted more than once.
Possible currency mismatch
The main PayPal SDK request is configured with:
text
currency=AUD
However, the hosted card-field iframe requests appear with:
text
currency=USD
This is visible on requests similar to:
text
https://www.paypal.com/smart/card-field?type=number&...
https://www.paypal.com/smart/card-field?type=expiry&...
https://www.paypal.com/smart/card-field?type=cvv&...
The WooCommerce store currency is Australian dollars (AUD). Could you please confirm whether the hosted card-field iframe using currency=USD is expected, or whether this indicates an integration/configuration issue?
The browser log appears to reference:
text
ppcp-blocks-js-checkout-block.js?ver=4.1.21
and:
text
ppcp-wc-gateway-js-fraudnet.js?ver=4.1.2
Please confirm whether these asset version differences are expected or whether they indicate stale/cached plugin assets.
Caching and optimization
The following PayPal scripts are excluded from WP Rocket JavaScript optimization:
text
paypal.com/sdk/js
paypalobjects.com
woocommerce-paypal-payments
We are also testing with:
WP Rocket JavaScript delay disabled.
WP Rocket JavaScript combination/minification disabled.
Cloudflare Rocket Loader disabled.
Cloudflare checkout cache bypass enabled.
Browser extensions disabled.
Chrome Incognito mode.
WP Rocket and Cloudflare caches purged.
The PayPal SDK and card-field requests are served directly from PayPal, and the PayPal response includes normal PayPal cookies with:
text
Domain=.paypal.com
SameSite=None
Secure
There are no Cloudflare Worker routes on the site.
The Network log shows two top-level PayPal JavaScript SDK requests on the active Blocks checkout:
text
SDK request 1: components=card-fields initiator: ppcp-blocks-js-advanced-card-checkout-block.js?ver=4.1.2 SDK request 2: components=buttons,...,sepa,paylater initiator: ppcp-button-js-button.js?ver=4.1.2
The card-field?type=number, expiry, and cvv requests are child hosted-field requests associated with the card-fields SDK and are not separate top-level SDK loads.
Please confirm whether PayPal Payments 4.1.2 intentionally loads separate SDK instances for Advanced Card Fields and PayPal Buttons on the same Checkout Block. If not, the integration should consolidate the required components into one SDK load or coordinate SDK reuse.
Subject: Intermittent Advanced Card Processing failures – PayPal SDK postMessage init() timeout and possible currency/component mismatch
We are experiencing intermittent failures with WooCommerce PayPal Payments → Advanced Credit and Debit Card Payments on our production WooCommerce site.
Customers receive a message saying their credit card number is invalid, even though the card is valid. The same card will often work later, and the same customer can successfully pay through our eWAY gateway. The problem appears to affect PayPal Advanced Card Processing only.
Symptoms
PayPal Advanced Credit and Debit Card Payments fails intermittently.
The customer sees a generic invalid-card/card-validation message.
The same card may work later without any change to the card.
eWAY transactions work successfully using the same cards.
The issue appears random rather than affecting every transaction.
In some failed transactions, shipping data is also missing from emails or webhook payloads, although this may be a separate issue.
Browser console error
Chrome DevTools reports:
text
Uncaught Error: Remote call to init({ ... }) failed
Error: No ack for postMessage init() in https://www.paypal.com/ in 10000ms
The error originates from the PayPal SDK:
text
https://www.paypal.com/sdk/js
The relevant SDK configuration includes:
text
currency=AUD
components=messages,buttons,card-fields
vault=false
commit=false
intent=capture
locale=en_AU
enable-funding=venmo
The stack includes:
text
crossDomainFunctionWrapper
postMessage
component_render
component_create
messages.on
receive_receiveMessage
Additional PayPal diagnostic output
We see successful initialization events, followed by repeated component initialization/update activity:
text
postrobot_hello
init
onReady
onMarkup
updateProps
close::memoized
We also see multiple PayPal SDK initialization diagnostics, including:
text
paypal_js_sdk_v5_init
uidAttribute: present
jsSdkLibrary: none
and later:
text
paypal_js_sdk_v5_init
uidAttribute: missing
jsSdkLibrary: paypal-js
This raises a concern that there may be multiple PayPal initialization paths or that the PayPal component is being mounted/re-mounted more than once.
Possible currency mismatch
The main PayPal SDK request is configured with:
text
currency=AUD
However, the hosted card-field iframe requests appear with:
text
currency=USD
This is visible on requests similar to:
text
https://www.paypal.com/smart/card-field?type=number&...
https://www.paypal.com/smart/card-field?type=expiry&...
https://www.paypal.com/smart/card-field?type=cvv&...
The WooCommerce store currency is Australian dollars (AUD). Could you please confirm whether the hosted card-field iframe using currency=USD is expected, or whether this indicates an integration/configuration issue?
The browser log appears to reference:
text
ppcp-blocks-js-checkout-block.js?ver=4.1.21
and:
text
ppcp-wc-gateway-js-fraudnet.js?ver=4.1.2
Please confirm whether these asset version differences are expected or whether they indicate stale/cached plugin assets.
Caching and optimization
The following PayPal scripts are excluded from WP Rocket JavaScript optimization:
text
paypal.com/sdk/js
paypalobjects.com
woocommerce-paypal-payments
We are also testing with:
WP Rocket JavaScript delay disabled.
WP Rocket JavaScript combination/minification disabled.
Cloudflare Rocket Loader disabled.
Cloudflare checkout cache bypass enabled.
Browser extensions disabled.
Chrome Incognito mode.
WP Rocket and Cloudflare caches purged.
The PayPal SDK and card-field requests are served directly from PayPal, and the PayPal response includes normal PayPal cookies with:
text
Domain=.paypal.com
SameSite=None
Secure
There are no Cloudflare Worker routes on the site.
The Network log shows two top-level PayPal JavaScript SDK requests on the active Blocks checkout:
text
SDK request 1: components=card-fields initiator: ppcp-blocks-js-advanced-card-checkout-block.js?ver=4.1.2 SDK request 2: components=buttons,...,sepa,paylater initiator: ppcp-button-js-button.js?ver=4.1.2
The card-field?type=number, expiry, and cvv requests are child hosted-field requests associated with the card-fields SDK and are not separate top-level SDK loads.
Please confirm whether PayPal Payments 4.1.2 intentionally loads separate SDK instances for Advanced Card Fields and PayPal Buttons on the same Checkout Block. If not, the integration should consolidate the required components into one SDK load or coordinate SDK reuse.