Skip to main content
Gamecart signs webhook payloads with HMAC-SHA256. Verify the signature before you process an event.

Header format

Outbound webhooks use:
Read the timestamp from Gamecart-Signature. Outbound webhooks do not include a separate Gamecart-Timestamp header. Custom gateway payment.create requests include both the signature header and a separate timestamp header:
Use the timestamp from Gamecart-Signature when verifying the HMAC.

Canonical payload

Build the signed string exactly like this:
Rules:
  • timestamp is the t value from Gamecart-Signature.
  • eventId is the Gamecart-Event-Id header.
  • rawBody is the exact request body bytes decoded as the same JSON string you received.
  • Do not parse and reserialize JSON before verification.

Verification window

Reject a signature when its timestamp differs from your server clock by more than 5 minutes. Gamecart applies the same tolerance to custom gateway callbacks.

Node.js example

Store each processed eventId. If Gamecart retries an event you already handled, return 2xx without processing it again.