Wallet operation completed or failed
Webhook that is called when an asynchronous embedded-wallet operation reaches a terminal state. Fires WALLET_OPERATION.COMPLETED on terminal success and WALLET_OPERATION.FAILED on terminal failure. The payload is self-contained — handle it from the fields below with no follow-up API call needed.
The specific operation is carried in data.operationType (auth_credential.create, auth_credential.delete, session.revoke, or wallet.export), and the business resource it affected is carried in data.resourceType / data.resourceId:
operationType | resourceType | resourceId identifies |
|---|---|---|
auth_credential.create | AUTH_METHOD | the created credential — its id can’t be known before this webhook, since the create request has nothing to echo |
auth_credential.delete | AUTH_METHOD | the deleted credential |
session.revoke | SESSION | the revoked session |
wallet.export | INTERNAL_ACCOUNT | the account whose wallet was exported |
The webhook carries no sensitive result material — for wallet.export, the export bundle itself is never delivered here; retrieve it by resubmitting the original signed export request until it returns the result.
Correlating this webhook
data.requestIdis the primary correlation key. It is the sameRequest-Idvalue you supplied on the signed retry that produced this terminal result — echo it against theRequest-Idyou sent (and, if you polled through one or more200 { status: "PROCESSING" }responses, against the value you kept resending).data.resourceIdis the primary correlator for the business resource itself, distinct fromrequestId’s role of matching the request. Forauth_credential.createthis is the only way to learn the created credential’s id — the request that created it had nothing to echo.id(the top-level webhook envelope id) is for deduplication. Grid may redeliver a webhook after a transient failure; trackidto avoid double-processing.data.operationIdis a Grid-internal identifier for the operation. It’s useful when contacting support about a specific operation, but isn’t intended as a correlation key.
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
Unique identifier for this webhook delivery (can be used for idempotency)
"Webhook:019542f5-b3e7-1d02-0000-000000000007"
Status-specific event type in OBJECT.EVENT dot-notation (e.g., OUTGOING_PAYMENT.COMPLETED)
WALLET_OPERATION.COMPLETED, WALLET_OPERATION.FAILED ISO 8601 timestamp of when the webhook was sent
"2025-08-15T14:32:00Z"
- Wallet Operation Completed Data
- Wallet Operation Failed Data
Response
Webhook received successfully