Webhook Examples (legacy)

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.

Feature

Event

Webhook Example

Fiat transaction

Any 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 transaction

Successful 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 transaction

Successful 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 transaction

ACH 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"  
  }  
}

Identity

Deactivation 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" } }

Identity

Deactivation 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" } }

Identity

Activation 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" } }

KYC

Creation 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" } }

KYC

KYC 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" } }

KYC

KYC 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" } }

KYB

KYB 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" } }

Document

Upgrading 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" } }

Document

Upgrading 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" } }

Document

Upgrading 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" } }

Document

Upgrading 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 Account

Opening 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 Account

Open 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" } }

Crypto deposit

Successful 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 crypto

Changing 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 crypto

Aborted 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 crypto

Changing 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