Skip to main content
The basic Paymove payment gateway integration has three steps: once, you create a product (representing your shop) and configure a webhook; then for each order you create a payment and redirect the customer to the returned redirectUrl. All requests are authorized with an API key sent in the X-API-KEY header.
Examples use the sandbox environment: https://gateway-api.sandbox.paymove.io. You will receive your API key and partnerId from Paymove.

Step 1: Create product (shop)

The product represents your shop in the Paymove system - all payments are created within it. You create it only once, when starting the integration.
Response (200):
The id field in the response is the productId - your shop identifier used in the next steps.

Step 2: Configure webhook

The webhook notifies your system about a completed payment. First register it, then assign it to the product. In requestTemplate you can use the variables {{externalId}} (your orderId) and {{price}} (amount) - Paymove substitutes them when sending.
Response (200): the webhook object with an assigned id (webhookId) and a signingSecret field:
The signingSecret is used to verify the signature of requests coming from Paymove. Store it securely in your system.
Then assign the webhook to the product (replace webhookId and productId):
Response (200): the webhook object confirming the link.

Step 3: Create payment

For each order, create a payment within the product. Replace productId in the URL with the one from step 1.
price must be an integer. A decimal value (e.g. 12.99) is silently truncated to 12 grosze and the API still returns 200. Convert złoty amounts with Math.round(amount * 100).
Response (200):
The externalId query parameter inside redirectUrl (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.

Step 4: Redirect the customer

Redirect the customer to the returned redirectUrl:
The customer sees the Paymove checkout page with the amount, your shop and product name, and payment methods (BLIK, Google Pay, Apple Pay, bank transfer). After the payment completes:
  1. Paymove sends a webhook to your endpoint - by default only for the COMPLETED status.
  2. Your system verifies the X-Paymove-Signature header (how to do it), responds with 200 and { "status": "ok" }, then fulfills the order.
  3. The customer sees the confirmation screen and can head back to the shop at returnUrl.
Never fulfil an order in the returnUrl handler. The redirect is driven by the customer’s browser and can be triggered without paying. The only trustworthy confirmation is a verified webhook.

What’s next?

Payment Gateway: webhooks

Extend your integration with webhooks and react to every paid transaction.

JavaScript SDK

Ready-made client for Node.js integration.