Webhook Examples

Webhook Examples

While we don't have an exhaustive list of all webhooks available, the list below will provide plenty of examples for the most common ones fired. Remember you can test webhooks yourself in sandbox by setting your webhook config.

FeatureEventWebhook Example
Fiat transactionAny failed transaction of internal payment, ACH deposit and other fiat transaction{ "organizationId": "0a67a991-1797-4de3-a55a-70c0816b7418", "action": "payment-transaction-processing-finished", "id": "ba4b4962-340d-4f45-95b3-b81dd7343f45", "resourceId": "6d5b062e-fe9c-4909-8a9f-11755f3058bf", "resourceType": "Transaction", "createdAtUtc": "2022-12-08T14:20:42.1833098+00:00", "changes": { "payment-id": "19ebc0d8-0369-4604-b7b0-0d97989f58c1", "transaction-details": "Error occurred while executing transaction", "transaction-status": "Failed" } }
Fiat transactionSuccessful completion of wire deposit{ "organizationId": "0a67a991-1797-4de3-a55a-70c0816b7418", "action": "payment-transaction-processing-finished", "id": "b54113b0-013a-44df-bf35-545f62d49876", "resourceId": "302b11ad-3a45-4322-b791-9025bd76f4d0", "resourceType": "Transaction", "createdAtUtc": "2022-12-21T14:37:48.5788525+00:00", "changes": { "payment-id": "4908d215-08aa-4ede-a47b-4179c6a8d23f", "transaction-details": null, "transaction-status": "Completed" } }
Fiat transactionSuccessful completion of internal payment between custodial accounts{ "organizationId": "0a67a991-1797-4de3-a55a-70c0816b7418", "action": "payment-transaction-processing-finished", "id": "703ed69a-5732-4fb7-add8-9cb2feae1a52", "resourceId": "888a413b-46ce-40c3-a0e6-41f6e3666a8c", "resourceType": "Transaction", "createdAtUtc": "2022-12-09T10:33:24.2364551+00:00", "changes": { "payment-id": "c283f93f-68d8-4412-b340-b2ffcd288187", "transaction-details": null, "transaction-status": "Completed" }
Fiat transactionACH deposit, when limit is exceeded{ "organizationId": "a8b4fc9e-4803-47c6-9671-f0a386c095c9", "action": "payment-transaction-processing-finished", "id": "c627c873-318b-4ca3-acfa-3f8498fb3db2", "resourceId": "f50104e3-5bed-49c7-964c-cf3c3fcd4a0d", "resourceType": "Transaction", "createdAtUtc": "2022-12-21T11:28:00.7236592+00:00", "changes": { "payment-id": "c6c5a0d2-5c06-4a3b-9535-bdd8210dd222", "transaction-details": "Error occurred while executing transaction", "transaction-status": "Failed" } }
Fiat
transaction
ACH Reversal (no ISA){ "organizationId": "a8b4fc9e-4803-47c6-9671-f0a386c095c9", "action": "ACHDepositReturn-finished", "id": "c627c873-318b-4ca3-acfa-3f8498fb3db2", "resourceId": "f50104e3-5bed-49c7-964c-cf3c3fcd4a0d", "resourceType": "Transaction", "createdAtUtc": "2023-07-20T09:18:21.5204362+00:00", "changes": { "payment-id": "c6c5a0d2-5c06-4a3b-9535-bdd8210dd222", "transaction-details": null, "transaction-status": "Completed", "created-at": "2023-07-20T09:18:21.1443253+00:00", "updated-at": "2023-07-20T09:18:21.4141892+00:00", "transaction-hash": null, "transaction-type": "ACHDepositReturn" } }
Fiat
transaction
ACH Reversal (with ISA).

Initiated
{ "organizationId": "a5c5f90e-b47f-44f0-adbf-dbb5c19e9c69", "action": "ACHDepositReturn-initiated", "id": "ba4fca56-5b95-4f3a-ab35-958356252edd", "resourceId": "6fe32474-82f3-4436-8b7a-9baa2711c390", "resourceType": "Transaction", "createdAtUtc": "2023-07-20T09:18:21.2962299+00:00", "changes": { "payment-id": "5226a735-0d69-4908-b94d-5a32e48fcc4a", "transaction-details": null, "transaction-status": "InProgress", "created-at": "2023-07-20T09:18:21.1443253+00:00", "updated-at": null, "transaction-hash": null, "transaction-type": "ACHDepositReturn" } }
Fiat
transaction
ACH Reversal (with ISA).

Finished (enough fiat to transfer from Ca to ISA)
{ "organizationId": "a5c5f90e-b47f-44f0-adbf-dbb5c19e9c69", "action": "ACHDepositReturn-finished", "id": "48eca33e-7c06-41d0-9e34-7bc10737725b", "resourceId": "6fe32474-82f3-4436-8b7a-9baa2711c390", "resourceType": "Transaction", "createdAtUtc": "2023-07-20T09:18:21.5204362+00:00", "changes": { "payment-id": "5226a735-0d69-4908-b94d-5a32e48fcc4a", "transaction-details": null, "transaction-status": "Completed", "created-at": "2023-07-20T09:18:21.1443253+00:00", "updated-at": "2023-07-20T09:18:21.4141892+00:00", "transaction-hash": null, "transaction-type": "ACHDepositReturn" } }
Fiat
transaction
ACH Reversal (with ISA).

Finished but failed (not enough fiat available to transfer from CA back to ISA)
{ "organizationId": "a5c5f90e-b47f-44f0-adbf-dbb5c19e9c69", "action": "ACHDepositReturn-finished", "id": "7ec80587-1ca8-4fd6-b2ba-fea6196a2e54", "resourceId": "668105f3-8aa5-4e41-a4e9-99f15de810f3", "resourceType": "Transaction", "createdAtUtc": "2023-07-20T09:24:55.3024371+00:00", "changes": { "payment-id": "089a6ff0-fd3d-4b19-b3d2-b78d2ec17e91", "transaction-details": "Error occurred while executing transaction", "transaction-status": "Failed", "created-at": "2023-07-20T09:24:49.9856508+00:00", "updated-at": "2023-07-20T09:24:55.1074104+00:00", "transaction-hash": null, "transaction-type": "ACHDepositReturn" } }
IdentityDeactivation Personal or Business Identity (triggering of deactivation){ "organizationId": "560a1cc5-35cd-4056-ad78-af7a624bcedb", "action": "update", "id": "2cef697a-cf15-4b8e-a97e-45e5418de999", "resourceId": "60230e74-9278-4bdb-9876-cdd1d8168b9c", - identityID "resourceType": "Identity", "createdAtUtc": "2023-02-09T11:20:38.2252208+00:00", "changes": { "status": "InactivationStarted" } }
IdentityDeactivation Personal or Business Identity{ "organizationId": "560a1cc5-35cd-4056-ad78-af7a624bcedb", "action": "update", "id": "a7834a05-3bc3-4099-8d95-202e81236d43", "resourceId": "60230e74-9278-4bdb-9876-cdd1d8168b9c", - identityID "resourceType": "Identity", "createdAtUtc": "2023-02-09T11:20:38.8095067+00:00", "changes": { "status": "Inactive" } }
IdentityActivation of deactivated Personal or Business Identity{ "organizationId": "560a1cc5-35cd-4056-ad78-af7a624bcedb", "action": "update", "id": "c510d536-a109-4853-8b6a-972a489f2d3d", "resourceId": "544494a3-648b-4f59-885d-dbb9c4de9900", "resourceType": "Identity", "createdAtUtc": "2023-02-09T11:32:26.7442837+00:00", "changes": { "status": "Active" } }
KYCCreation of Level 0 identity without upgrading KYC level{ "organizationId": "dcb6ba34-bebe-4346-9afe-90bc7451a378", "action": "update", "id": "5bdd8dad-b043-4a3d-a368-102d9affce4f", "resourceId": "b6a67679-a0f1-4dc9-ae35-2173e4b6a57d", "resourceType": "Kyc", "createdAtUtc": "2023-01-26T19:24:42.0285561+00:00", "changes": { "kyc-level": "L0" } }
KYCKYC process upgrade from Level 0 to Level 1{ "organizationId": "1c421630-335d-4bbf-bab0-51ecc0c984f9", "action": "update", "id": "7ed9a997-4cd9-4c4f-a5b7-b5cbb6941a54", "resourceId": "9090e3d5-e5e2-46ba-a4c7-769b09f91ece", "resourceType": "Kyc", "createdAtUtc": "2022-12-21T13:35:38.870678+00:00", "changes": { "kyc-level": "L1" } }
KYCKYC process upgrade from Level 1 to Level2{ "organizationId": "1c421630-335d-4bbf-bab0-51ecc0c984f9", "action": "update", "id": "b244b1e5-1b85-43fb-83ec-99054a13a5e4", "resourceId": "9090e3d5-e5e2-46ba-a4c7-769b09f91ece", "resourceType": "Kyc", "createdAtUtc": "2022-12-21T13:36:20.6587399+00:00", "changes": { "kyc-level": "L2" } }
KYBKYB process upgrade from Level 1 to Level 2{ "organizationId": "1c421630-335d-4bbf-bab0-51ecc0c984f9", "action": "update", "id": "13bb290d-6d9d-4b6b-84d0-bec9a7b17def", "resourceId": "b045ef6e-2eeb-44e8-9d7a-b3eeb29d9311", "resourceType": "Kyc", "createdAtUtc": "2022-12-21T13:48:39.9511876+00:00", "changes": { "kyc-level": "L2" } }
DocumentUpgrading identity from Level 0 to Level 2, success scenario (documents approved){ "organizationId": "dcb6ba34-bebe-4346-9afe-90bc7451a378", "action": "update", "id": "26dabffe-ad37-4961-bf99-acf6017b0e85", "resourceId": "b6a67679-a0f1-4dc9-ae35-2173e4b6a57d", "resourceType": "Document", "createdAtUtc": "2023-01-26T19:25:42.3544384+00:00", "changes": { "document-status": "Accepted", "document-type": "Passport", "document-id": "032fd90d-d37f-4f8e-9013-8a2a7545906c" } }
DocumentUpgrading identity from Level 0 to Level 2, fail scenario (documents rejected){ "organizationId": "dcb6ba34-bebe-4346-9afe-90bc7451a378", "action": "update", "id": "cbc1d07a-98a8-425e-9e03-470e6cebf686", "resourceId": "d14078d7-cae0-47e7-b06c-a0492341d7d2", "resourceType": "Document", "createdAtUtc": "2023-01-26T19:33:56.8523953+00:00", "changes": { "document-status": "Rejected", "document-type": "Passport", "document-id": "9ab34acb-7b74-4f56-bbdd-47aff3f00b1e" } }
DocumentUpgrading identity from Level 0 to Level 2, fail scenario (documents need to be resubmitted){ "organizationId": "dcb6ba34-bebe-4346-9afe-90bc7451a378", "action": "update", "id": "f68c6763-8d63-41d6-90f9-80e774f3e3af", "resourceId": "ff898c4d-b409-43b4-8f8c-172f12c4dc11", "resourceType": "Document", "createdAtUtc": "2023-01-26T19:35:11.6796671+00:00", "changes": { "document-status": "Resubmit", "document-type": "License", "document-id": "82788e62-e999-44b2-b12a-de313847ef60" } }
DocumentUpgrading identity from Level 0 to Level 2, fail scenario (manual review is needed for documents){ "organizationId": "dcb6ba34-bebe-4346-9afe-90bc7451a378", "action": "update", "id": "33d5d5d3-8490-4bca-a4f8-2667cc958bd0", "resourceId": "3f8d5ff5-8278-410f-9135-258ca8310525", "resourceType": "Document", "createdAtUtc": "2023-01-26T19:36:41.7971568+00:00", "changes": { "document-status": "ManualReviewNeeded", "document-type": "IdentificationCard", "document-id": "60327559-e741-4693-9053-415f2c4c0225" } }
Custodial AccountOpening of Custodial Account for personal identity{ "organizationId": "a8b4fc9e-4803-47c6-9671-f0a386c095c9", "action": "create", "id": "8c98e292-5d39-45b3-9246-ddcc6dd7b301", "resourceId": "9d8944eb-7183-4dd4-8a8a-43d8cf10a333", "resourceType": "CustodialAccount", "createdAtUtc": "2022-12-21T11:14:59.4764709+00:00", "changes": { "custodial-account-status": "Open", "owner-identity-id": "454d91b9-0001-4ddc-9373-e12390be613e", "personal-identity-id": "454d91b9-0001-4ddc-9373-e12390be613e", "business-identity-id": "" } }
Custodial AccountOpen Custodial Account for Personal/Business Identity{ "organizationId": "0a67a991-1797-4de3-a55a-70c0816b7418", "action": "create", "id": "e33ab98e-1d87-4396-a42d-94ce8340dbc7", "resourceId": "a7a526bf-33b2-44e3-bd44-f57615b526c3", "resourceType": "CustodialAccount", "createdAtUtc": "2022-12-21T14:51:27.7798592+00:00", "changes": { "custodial-account-status": "Open", "owner-identity-id": "3e766c06-aab0-40a5-91eb-d3649e30a509", "personal-identity-id": "c0f3b497-107f-462b-bddd-5e9333dae22a", "business-identity-id": "3e766c06-aab0-40a5-91eb-d3649e30a509" } }
Card Paymentswhen payment is created{ "organizationId": "1c5c14f7-64c3-404d-a6ee-26e373ed95e5", "action": "payment-transaction-processing-finished", "id": "aaee8b71-f23f-46a3-88f5-36d5fef4d354", "resourceId": "faa8b811-6d04-42e1-b6e4-74c5f75ff62f", "resourceType": "Transaction", "createdAtUtc": "2022-12-22T10:13:54.0724562+00:00", "changes": { "payment-id": "1ea55d74-e19c-411a-a782-cc52170d66d1", "transaction-details": null, "transaction-status": "InProgress" } }
Card Paymentswhen payment is completed{ "organizationId": "1c5c14f7-64c3-404d-a6ee-26e373ed95e5", "action": "payment-transaction-processing-finished", "id": "c030723d-9428-457a-8527-ea198c496229", "resourceId": "faa8b811-6d04-42e1-b6e4-74c5f75ff62f", "resourceType": "Transaction", "createdAtUtc": "2022-12-22T10:15:15.2547801+00:00", "changes": { "payment-id": "1ea55d74-e19c-411a-a782-cc52170d66d1", "transaction-details": null, "transaction-status": "Completed" } }
Card Paymentswhen payment is failed{ "organizationId": "1c5c14f7-64c3-404d-a6ee-26e373ed95e5", "action": "payment-transaction-processing-finished", "id": "ee10bcbd-b654-48d7-bbe2-0291fbb68ba6", "resourceId": "0c27f2e0-0b2f-46dd-b2ba-19884c20a65b", "resourceType": "Transaction", "createdAtUtc": "2022-12-22T10:40:12.656129+00:00", "changes": { "payment-id": "cdf38df5-6b69-46de-ba72-c7e62f14585b", "transaction-details": "Error occurred while executing transaction", "transaction-status": "Failed" } }
Crypto depositSuccessful completion of crypto deposit process{ "organizationId": "fa869661-6f5a-4ab8-9810-9199cd9da76b", "action": "payment-transaction-processing-finished", "id": "bb087540-bab9-4bfb-9187-f23pde34793f", "resourceId": "c1a57171-1d47-4b58-a57c-204944454274", "resourceType": "Transaction", "createdAtUtc": "2023-05-16T17:18:03.7293341+00:00", "changes": { "payment-id": "be477c5c-5ca4-467b-a5e4-9d3d3926aeda", "transaction-details": null, "transaction-status": "Completed", "created-at": "2023-05-16T17:17:16.7057004+00:00", "updated-at": "2023-05-16T17:18:03.5843855+00:00", "transaction-hash": "0xbf647753b03f09e38dbda0c4bw0bd7b47d5aef1c4be415b07dc27f0197d05ae5" } }
Buy cryptoChanging status of buy crypto process, when order is completed{ "organizationId": "0a67a991-1797-4de3-a55a-70c0816b7418", "action": "order-transaction-status-changed", "id": "b48d898a-4e5b-461a-81ba-ab28a43c4245", "resourceId": "2e0b0ec6-2b1a-4159-b57a-b8ba6570e4aa", "resourceType": "Transaction", "createdAtUtc": "2022-12-12T11:50:09.8111988+00:00", "changes": { "payment-id": "392ec2a4-48bc-43c6-937d-37c743c35509", "transaction-status": "InProgress" } }
Buy cryptoAborted process{ "organizationId": "0a67a991-1797-4de3-a55a-70c0816b7418", "action": "order-transaction-status-changed", "id": "7db17c54-2d38-4b60-ab3a-5f9b8d6b6f66", "resourceId": "c978c3dd-952a-4f21-9e2f-4bdb1275e009", "resourceType": "Transaction", "createdAtUtc": "2022-12-21T14:43:22.2308663+00:00", "changes": { "payment-id": "807a0610-a770-4774-b8e2-707c0d86725c", "transaction-status": "AbortedOrderProcessing", "amount": "0.10", "crypto-amount": null, "price": null } }
Sell cryptoChanging of status when order was executed{ "organizationId": "0a67a991-1797-4de3-a55a-70c0816b7418", "action": "order-transaction-status-changed", "id": "7a30c9e5-2526-4bf9-b7cc-a26dcfca2bdb", "resourceId": "4039c48d-83df-4717-af5c-13c2f15c75f7", "resourceType": "Transaction", "createdAtUtc": "2022-12-21T14:34:42.450044+00:00", "changes": { "payment-id": "b3d8c977-2de3-4e29-875a-bcff8e4bb6dd", "transaction-status": "InProgress", "amount": "117.89", "crypto-amount": "10", "price": "11.789000" } }

Webhook Structure

FieldData TypeExampleDescription
"organizationId"guid"organizationId": "a8b4fc9e-4803-47c6-9671-f0a386c095c9"organization id
"action"string"action": "payment-transaction-processing-finished"description of the event that triggered the webhook
"id"guid"id": "37a5e6f1-53d2-43ee-b66e-c014f5311ca3"unique id of the webhook
"resourceId"guid"resourceId": "0496202b-3700-420f-b244-7cb522d7525f"id of the object related to the "resourceType"
"resourceType"string"resourceType": "Transaction"API object related to the triggered event
"createdAtUtc"date time"createdAtUtc": "2022-12-15T13:35:55.4736488+00:00"time of webhook creation
"changes"object "changes": { "payment-id": "a502bd6c-bb19-4552-b985-f0baefe1f819", "transaction-details": null, "transaction-status": "Completed" }event specific data

Webhook Security Example

Below is an example of how you would calculate your HMAC header to make sure your webhook delivery is successful:

  1. Serialize payload without any formatting and indentations

    {"organizationId":"b8da806b-2eec-4e96-856c-63fe382ea13c","action":"payment-transaction-processing-finished","id":"c781e315-6677-4622-8004-eb26cae0bf67","resourceId":"d52800df-5cb0-41d2-ab62-c18eadf3a603","resourceType":"Transaction","createdAtUtc":"2023-02-03T16:30:56.6511575+00:00","changes":{"payment-id":"3c91b3da-eaf9-4afe-8929-8fb213df9d95","transaction-details":null,"transaction-status":"Completed","created-at":"2023-02-03T16:30:37.7165140\u002B00:00","updated-at":"2023-02-03T16:30:53.5367004\u002B00:00"}}

  2. Take UTF-8 bytes from that serialized payload string (in C# that's Encoding.UTF8.GetBytes(str)):

    [ 123, 34, 111, 114, 103, 97, 110, 105, 122, 97, 116, 105, 111, 110, 73, 100, 34, 58, 34, 98, 56, 100, 97, 56, 48, 54, 98, 45, 50, 101, 101, 99, 45, 52, 101, 57, 54, 45, 56, 53, 54, 99, 45, 54, 51, 102, 101, 51, 56, 50, 101, 97, 49, 51, 99, 34, 44, 34, 97, 99, 116, 105, 111, 110, 34, 58, 34, 112, 97, 121, 109, 101, 110, 116, 45, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 45, 112, 114, 111, 99, 101, 115, 115, 105, 110, 103, 45, 102, 105, 110, 105, 115, 104, 101, 100, 34, 44, 34, 105, 100, 34, 58, 34, 99, 55, 56, 49, 101, 51, 49, 53, 45, 54, 54, 55, 55, 45, 52, 54, 50, 50, 45, 56, 48, 48, 52, 45, 101, 98, 50, 54, 99, 97, 101, 48, 98, 102, 54, 55, 34, 44, 34, 114, 101, 115, 111, 117, 114, 99, 101, 73, 100, 34, 58, 34, 100, 53, 50, 56, 48, 48, 100, 102, 45, 53, 99, 98, 48, 45, 52, 49, 100, 50, 45, 97, 98, 54, 50, 45, 99, 49, 56, 101, 97, 100, 102, 51, 97, 54, 48, 51, 34, 44, 34, 114, 101, 115, 111, 117, 114, 99, 101, 84, 121, 112, 101, 34, 58, 34, 84, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 34, 44, 34, 99, 114, 101, 97, 116, 101, 100, 65, 116, 85, 116, 99, 34, 58, 34, 50, 48, 50, 51, 45, 48, 50, 45, 48, 51, 84, 49, 54, 58, 51, 48, 58, 53, 54, 46, 54, 53, 49, 49, 53, 55, 53, 43, 48, 48, 58, 48, 48, 34, 44, 34, 99, 104, 97, 110, 103, 101, 115, 34, 58, 123, 34, 112, 97, 121, 109, 101, 110, 116, 45, 105, 100, 34, 58, 34, 51, 99, 57, 49, 98, 51, 100, 97, 45, 101, 97, 102, 57, 45, 52, 97, 102, 101, 45, 56, 57, 50, 57, 45, 56, 102, 98, 50, 49, 51, 100, 102, 57, 100, 57, 53, 34, 44, 34, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 45, 100, 101, 116, 97, 105, 108, 115, 34, 58, 110, 117, 108, 108, 44, 34, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 45, 115, 116, 97, 116, 117, 115, 34, 58, 34, 67, 111, 109, 112, 108, 101, 116, 101, 100, 34, 44, 34, 99, 114, 101, 97, 116, 101, 100, 45, 97, 116, 34, 58, 34, 50, 48, 50, 51, 45, 48, 50, 45, 48, 51, 84, 49, 54, 58, 51, 48, 58, 51, 55, 46, 55, 49, 54, 53, 49, 52, 48, 92, 117, 48, 48, 50, 66, 48, 48, 58, 48, 48, 34, 44, 34, 117, 112, 100, 97, 116, 101, 100, 45, 97, 116, 34, 58, 34, 50, 48, 50, 51, 45, 48, 50, 45, 48, 51, 84, 49, 54, 58, 51, 48, 58, 53, 51, 46, 53, 51, 54, 55, 48, 48, 52, 92, 117, 48, 48, 50, 66, 48, 48, 58, 48, 48, 34, 125, 125 ]

  3. Take UTF-8 bytes from secret string (in our case - ac5b16fa568a7b3847c10d4b8198030d):

    [ 97, 99, 53, 98, 49, 54, 102, 97, 53, 54, 56, 97, 55, 98, 51, 56, 52, 55, 99, 49, 48, 100, 52, 98, 56, 49, 57, 56, 48, 51, 48, 100 ]

  4. Compute HMAC-SHA256 using those two byte array from the previous steps (in C# that's new HMACSHA256(secretBytes).ComputeHash(dataBytes)):

    [ 121, 142, 50, 191, 3, 31, 226, 223, 121, 59, 195, 238, 22, 121, 209, 52, 172, 159, 32, 9, 137, 30, 29, 224, 202, 175, 134, 176, 191, 242, 120, 92 ]

  5. Convert those hash bytes to base64 (in C# that's Convert.ToBase64String(hashBytes)):

    eY4yvwMf4t95O8PuFnnRNKyfIAmJHh3gyq+GsL/yeFw=

You can use some online tools to verify the correctness of your algorithm:
https://www.devglan.com/online-tools/hmac-sha256-online

📘

Webhook HMAC Calculation

Be sure you're not reformatting/restructuring the webhook payload as it will provide a different hashed output then what you're expecting