Webhooks

Account status notification webhook

Webhook that is called when the balance of an account changes This endpoint should be implemented by clients of the Grid API.

Authentication

The webhook includes a signature in the X-Grid-Signature header that allows you 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.

Account status

When the balance of an internal account changes, we will push a notification with information on the account, the new balance, and who the account belongs to.

postWebhookaccount-status

Payload

timestampstring date-time required

ISO8601 timestamp when the webhook was sent (can be used to prevent replay attacks)

webhookIdstring required

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

type'INCOMING_PAYMENT' | 'OUTGOING_PAYMENT' | 'TEST' | 'BULK_UPLOAD' | 'INVITATION_CLAIMED' | 'KYC_STATUS' | 'ACCOUNT_STATUS' required

Type of webhook event, used by the receiver to identify which webhook is being received

accountIdstring required

The id of the account whose balance has changed

customerIdstring

The ID of the customer associated with the internal account

platformCustomerIdstring

The ID of the customer as associated in your platform

Example payload

{
  "timestamp": "2025-08-15T14:32:00Z",
  "webhookId": "Webhook:019542f5-b3e7-1d02-0000-000000000007",
  "oldBalance": {
    "amount": 12550,
    "currency": {
      "code": "USD",
      "name": "United States Dollar",
      "symbol": "$",
      "decimals": 2
    }
  },
  "newBalance": {
    "amount": 12550,
    "currency": {
      "code": "USD",
      "name": "United States Dollar",
      "symbol": "$",
      "decimals": 2
    }
  },
  "customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
  "platformCustomerId": "019542f5-b3e7-1d02-0000-000000000001"
}

Response

Webhook received successfully

Changes