400 Error on Customer Creation (API POST /customers)
-
Hi team,
We are consistently receiving
400 Bad Requesterrors when the Revolut Payments plugin attempts to create a customer via the API (POST https://merchant.revolut.com/api/1.0/customers). This happens even though all required customer fields appear to be present (name, email, phone).A sample from our logs:
Error create_revolut_customer: api call failed: POST https://merchant.revolut.com/api/1.0/customers 400We have verified the following:
billing_emailis present and correctly formatted.billing_phoneis captured using Fluid Checkout PRO’s International Phone Number feature.- However, this field may include spaces or local formatting depending on how it is filled in by the user.
- We are not 100% sure that the value sent is strictly in E.164 format (e.g.
+306912345678).
billing_first_name,billing_last_name, andbilling_countryare correctly filled.- We also tested submitting the form with manual E.164 input, with and without Fluid Checkout’s “International Phone” field enabled.
Questions:
- Can you clarify the required fields and strict format expected for the
/customersendpoint? - Should the plugin be using
billing_phone_fullinstead ofbilling_phoneif E.164 format is required? - Is there a way to get more detailed error information via the Revolut Merchant Dashboard or API logs?
- Are there any known conflicts between Fluid Checkout PRO and the Revolut Payments plugin?
Additional technical information / Server-side verification performed:
We have already tested the server connection to Revolut’s API to rule out any network, SSL, or certificate-related issues.
Verified that the following PHP directives are correctly configured:
curl.cainfo = /etc/ssl/certs/ca-certificates.crt openssl.cafile = /etc/ssl/certs/ca-certificates.crtConfirmed that the server can successfully establish a TLS 1.3 HTTPS connection to Revolut with the following command:
curl -v https://merchant.revolut.comThe test completed successfully with:
- Valid SSL handshake
- Certificate verification OK
- HTTP/2 connection established
- Response: HTTP/2 404 (expected, as the root endpoint doesn’t exist)
This confirms that the server can reach
merchant.revolut.comwithout any SSL, CA, or firewall issues.Conclusion:
The400 Bad Requesterrors from the Revolut Gateway plugin are not caused by the hosting environment but rather by how the checkout data is formatted or sent to the API (potentially affected by Fluid Checkout’s field handling).
You must be logged in to reply to this topic.