Statuses
The status is always transmitted as a string -
"COMPLETED", not a number. The numeric values found in older integrations are an internal database representation and appear neither in the API nor in webhooks.CANCELED - with a single “l”.
When the webhook arrives
This means that in the default configuration the absence of a webhook does not distinguish a failed payment from one still in progress. If you must detect failed payments, use the status query or ask for full notifications to be enabled.Webhook payload
The shape depends on whether you set arequestTemplate when registering the webhook.
Without a requestTemplate
Paymove sends the full payment object. Empty fields are omitted, so a given notification may contain fewer of them:
The payload contains no
event or type field and is not wrapped in an envelope. It is a flat object, and you identify the kind of event from the status field.With a requestTemplate
The payload is exactly what your template renders. For the template {"orderId": "{{externalId}}", "price": "{{price}}"} you receive:
{{status}}, {{paymentMethod}}, {{email}}, {{date}} and {{orderId}}, not just {{externalId}} and {{price}}. Note that values substituted into a text template arrive in the payload as strings.
A template gives you control over the payload shape and contains exactly what you write into it. If you need to distinguish statuses, add
{{status}} to the template or leave requestTemplate unset altogether.Querying the status
Useful as a supplement to the webhook - for example when the customer is back onreturnUrl but the notification has not arrived yet.
If no payment exists for the given hash you receive:
This endpoint requires no API key. Do not pass sensitive data to it, and do not treat its response alone as the only proof of payment in critical flows - the trustworthy confirmation is a verified webhook.
Recommended flow
- Create the payment and store your
externalIdtogether with the payment hash fromredirectUrl. - Redirect the customer to the checkout.
- On the
returnUrlpage show a “we are processing your payment” message - no fulfilment. - Wait for the webhook, verify its signature and fulfil the order idempotently.
- If the webhook has not arrived by the time the customer returns, query the status so you can show the right message immediately.
Refunds
Refunds are handled by Paymove - there is no public API endpoint for issuing them. If you need to refund a payment, contact integration@paymove.io. Once refunded, the payment takes theREFUNDED status.
What’s next
Signature verification
A mandatory step before fulfilling an order.
Webhook configuration
Registering a webhook and assigning it to a product.