Working with an AI agent? It does steps 1-3 for you - all it needs is the API key and the
partnerId; it asks for the shop name and the remaining fields itself. See Building with AI agents.1. Create a product
A product represents your store in the Paymove system. All payments and subproducts are created within this product. Example product creation request:2. Register a webhook
A webhook is a URL on your side that Paymove calls once a payment completes. This way you don’t need to manually check the status - orders can be fulfilled automatically. For the list of possible statuses, see the status table. Example webhook registration request:How the webhook works
Payment statuses in Paymove:Webhook payload
The payload shape depends on whether you set arequestTemplate.
Without a requestTemplate Paymove sends the full payment object. Empty fields are omitted, so a given notification may carry fewer of them:
requestTemplate the payload is exactly what your template renders - nothing more, nothing less. For the template in step 2 you receive:
Every field of the default payload is available as a variable:
Values substituted into a text template arrive as strings -
"price": "{{price}}" yields "1000", not 1000. A variable with no value renders as empty text.Signature verification
Every webhook request carries anX-Paymove-Signature header. Verify it before trusting the payload - without verification, anyone who knows your URL can impersonate Paymove and have an order fulfilled without paying.
Ready-to-copy code for Node.js, Python and Java: Webhook signature verification.
Required response
Your server must respond with an HTTP status equal toexpectedCode. The customary body to return alongside it is:
The response body is never inspected.
expectedResponse is stored on the webhook and echoed back by the API, but it is never compared against what your server returns - any body will do.retries specifies - 0 by default, meaning not at all. With retries set, the next attempts follow after 1 s, 5 s, 5 min, 1 h, and then every 3 h.
Paymove applies no timeout to webhook calls. Respond immediately and do the actual order processing asynchronously - otherwise a slow endpoint blocks processing.
3. Assign webhook to product
After creating a product and registering a webhook, you need to link them together. This way every payment event related to this product is automatically sent to the specified webhook URL. Example request:4. Creating payments
After configuring the product and webhook, you can start creating payments. Choose your integration method:SDK
Node.js package - initialize the client and call
createPayment.REST API
Direct HTTP calls - works with any language.