redirectUrl.
1. Endpoint
Headers
2. Example call
Body parameters
The gateway settles in PLN only - there is no currency field in the request. A
currency field, if you send one, is ignored.details is a free-form object - you may pass your own fields and Paymove will store them. The checkout, however, reads only: returnUrl, redirectUrl, productName, email, locale, orderId, recipient, triggerPayment, qrStepEnabled and autoclose. Any other field (e.g. customerId) is passed through and never displayed.Response
The response status is HTTP
200 (not 201).
The
externalId query parameter in the returned URL (here ec6RtwTZKb) is a 10-character payment hash generated by Paymove, not your own externalId (order-123). Store it - it is the value you use when checking the payment status.Errors
Every error has the shape{"status": <int>, "message": "<text>"}. Branch your logic on the HTTP status, never on the message text.
Preselecting a payment method
Thedetails.triggerPayment field picks a payment method up front, so the customer does not have to find it in the list.
An unknown value is ignored - the checkout then behaves normally.
Even for the wallets, auto-start requires the checkout to know the customer’s email - pass it in
details.email. It also does not run inside the embedded widget modal, or when the method is not available for your product. In each of those cases the method is only preselected.QR code step
Thedetails.qrStepEnabled field turns on an extra opening screen on desktop: instead of the payment form the customer sees a QR code, scans it with their phone and finishes the payment there. Useful for BLIK and for wallets that only exist on mobile.
The step is opt-in - omit the field or pass false and the checkout goes straight to the payment form.
The QR code appears on desktop only. On mobile, and whenever
details.triggerPayment is set, the checkout skips the step regardless of this field.3. Redirect the customer
details.returnUrl - no query parameters are appended to it.
4. Reusing an externalId
externalId is the payment key on the Paymove side. Sending another request with the same externalId creates no new payment and returns no error - the API responds 200 with the redirectUrl of the payment created earlier.
To change the amount of an existing payment, use a separate call:
price only - all other fields are ignored.
5. What’s next
Webhook signature verification
A mandatory step before fulfilling an order.
Payment statuses
Statuses, webhook payload and checking a payment’s state.
Error codes
The complete list of API errors and how to handle them.
JavaScript SDK
A ready-made client for Node.js.