Skip to main content
Webhooks send your server an HTTP POST whenever an event you’ve subscribed to occurs. Use them instead of polling for status.

Set up a webhook

1

Open the webhooks page

Log in to the portal and go to Developer Tools > Webhooks.
2

Add your endpoint

Click Add Webhook and enter your webhook URL. It must be served over HTTPS.
3

Choose events

Select the events you want to receive, then save.
4

Store the signature key

A unique signature key is generated for the webhook. You use it to check that incoming requests come from MyGigsters.

Verify the signature

Every webhook request includes an x-signature-key header. Compare it with the signature key configured for your webhook, and reject requests where it doesn’t match.
Request headers
Node.js

Acknowledge the event

Return 200 OK to confirm you received the event. Respond straight after validating the request and do any long-running work asynchronously.
Node.js

Retries

If your endpoint doesn’t return 200 OK, the delivery counts as failed. MyGigsters retries up to 3 times before marking the event as failed. A delivery can fail because of:
  • a non-200 HTTP status code
  • a request timeout
  • a network connectivity issue
  • an SSL/TLS certificate error
  • your endpoint being unavailable
Retries can deliver the same event more than once. Make your handler idempotent so duplicates are safe.

Event structure

Every webhook payload has the same outer envelope. The resource that changed is inside data.
The envelope has no top-level event ID. To match an event to your own records and to detect duplicates:
  • Payment intents: use data.merchant_order_id, which matches the job_id you passed when creating the intent, and data.id, the payment intent ID.
  • Payouts and transfers: use data.reference or data.remarks, which carries your internal payout or invoice identifier, and data.id.

Event catalogue

Payments

Occurs when a payment intent has completed execution and funds are secured.Fields in data:
Sample payload
Occurs when a payment intent has failed to execute or is explicitly cancelled.Fields in data:
Sample payload
Occurs when a payment refund is completed and funds are returned to the payer.Fields in data:
Sample payload
Occurs when a payment refund request is rejected or declined by the provider.Fields in data:
Sample payload

Payouts

Occurs when a worker payout is processed and transferred successfully.Fields in data:
Sample payload
Occurs when a worker payout fails or gets rejected by the bank.Fields in data:
Sample payload

Beneficiaries

Occurs when a new worker beneficiary account/bank details profile has been created.Fields in data:
Sample payload
Occurs when a worker beneficiary account/bank details profile is deleted.Fields in data:
Sample payload

Invoices

Occurs when one or more client invoices have been marked as paid.Fields in data:
Sample payload

Best practices

  • Validate signatures. Check the x-signature-key header before processing any webhook data.
  • Respond quickly. Return 200 OK as soon as you’ve validated the request.
  • Handle duplicates. Use the identifiers described in Event structure to avoid processing an event twice.
  • Use HTTPS. Serve your webhook endpoint over HTTPS.
  • Log webhook activity. Keep logs of incoming requests and your responses for troubleshooting.

Manage webhooks

In the portal, under Developer Tools > Webhooks, you can create a webhook, update its URL, change its event subscriptions, view the signature key, enable or disable it, and delete it. You can also manage webhooks through the API:
  • GET /api/v1/webhooks/ lists your registered webhooks and their event subscriptions.
  • POST /api/v1/webhooks/ registers a new webhook URL and event subscriptions.
  • DELETE /api/v1/webhooks/:id removes a webhook.

Get help

If you’re not receiving webhooks, contact support with:
  • the webhook URL
  • the event name
  • the approximate time of the event
  • the response status your endpoint returned
  • relevant application logs
Last modified on November 10, 2026