Card transaction
Webhook that is called on every lifecycle update of a card CardTransaction. Fires when an authorization is approved (CARD_TRANSACTION.AUTHORIZED), as clearings settle against it (CARD_TRANSACTION.PARTIALLY_SETTLED, CARD_TRANSACTION.SETTLED), when the authorization is declined (CARD_TRANSACTION.DECLINED), when an authorization is fully reversed or expires (CARD_TRANSACTION.VOIDED), and when a transaction settles to the card network but the funding-source pull fails (CARD_TRANSACTION.EXCEPTION). The payload carries the full CardTransaction resource.
A merchant return is its own CardTransaction row (direction: CREDIT) linked to the purchase via originalTransactionId, and fires its own CARD_TRANSACTION.* deliveries on that row — the purchase row is not re-fired for the return.
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:
- Get the Grid public key provided to you during integration
- Decode the base64 signature from the header
- Create a SHA-256 hash of the request body
- 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.
Authorizations
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:
- Get the Grid public key provided to you during integration
- Decode the base64 signature from the header
- Create a SHA-256 hash of the request body
- 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
Status-specific event type in OBJECT.EVENT dot-notation (e.g., OUTGOING_PAYMENT.COMPLETED)
CARD_TRANSACTION.AUTHORIZED, CARD_TRANSACTION.PARTIALLY_SETTLED, CARD_TRANSACTION.SETTLED, CARD_TRANSACTION.DECLINED, CARD_TRANSACTION.VOIDED, CARD_TRANSACTION.EXCEPTION One row per cardholder-visible card transaction. A purchase row rolls its clearings up into settledAmount; a merchant return is its own dated CREDIT row linked back to the purchase via originalTransactionId rather than a rollup on the parent, so statements can list purchases and refunds as separate dated lines. Delivered whole as the data payload of every CARD_TRANSACTION.* webhook, and returned as the CARD variant of Transaction from GET /transactions.
Response
Webhook received successfully