Skip to main content
WEBHOOK

Authorizations

X-Grid-Signature
string
header
required

Secp256r1 (P-256) asymmetric signature of the webhook payload, which can be used to verify that the webhook was sent by Grid. To verify the signature:

  1. Get the Grid public key provided to you during integration
  2. Decode the base64 signature from the header
  3. Create a SHA-256 hash of the request body
  4. Verify the signature using the public key and the hash

If the signature verification succeeds, the webhook is authentic. If not, it should be rejected.

Body

application/json
id
string
required

Unique identifier for this webhook delivery (can be used for idempotency)

Example:

"Webhook:019542f5-b3e7-1d02-0000-000000000007"

type
enum<string>
required

Status-specific event type in OBJECT.EVENT dot-notation (e.g., OUTGOING_PAYMENT.COMPLETED)

Available options:
CARD_AUTHORIZATION.REQUEST
timestamp
string<date-time>
required

ISO 8601 timestamp of when the webhook was sent

Example:

"2025-08-15T14:32:00Z"

data
Card Authorization Request · object
required

A card authorization that Grid's own checks approved, awaiting your platform's decision. transactionId is the id of the CardTransaction that later CARD_TRANSACTION.* webhooks carry, and it stays the same if Grid sends this request more than once.

Response

200 - application/json

Your decision on the authorization.

The body your authorization endpoint returns with HTTP 200.

decision
enum<string>
required

Your platform's decision on a card authorization.

Available options:
APPROVE,
DECLINE
Example:

"APPROVE"

declineReason
enum<string>

Why you declined. Used only when decision is DECLINE. When you omit it, Grid sends the card network a generic decline.

Available options:
SUSPECTED_FRAUD,
UNAUTHORIZED_MERCHANT,
VELOCITY_EXCEEDED,
INSUFFICIENT_FUNDS,
CARD_PAUSED
Example:

"SUSPECTED_FRAUD"