Skip to main content

Webhook Events

2-3 hours

You may consume webhook events to receive real-time notifications about your customers' activity. Unit uses webhooks to notify your product when an event occurs, such as when an application is denied, a customer is created, or a transaction is processed.

When one of these events occurs, an HTTP POST request is sent to your webhook's configured URL, allowing you to act upon it in real-time. This enables you to build responsive integrations, update your systems automatically, and provide better customer experiences.

Suggestion

Unit highly recommends that you make your webhook handlers Idempotent, to ensure events are only handled once on your end.

Setting Up Webhooks​

To start receiving webhook events, you'll need to:

  1. Implement an endpoint on your server to receive and process webhook payloads
  2. Configure a webhook subscription using one of the methods below:
    • Sandbox Environment: Create your webhook subscription via the Unit Dashboard → DEVELOPER menu → Webhooks → Create
    • Production Environment: Contact your Unit solution engineer to help set up webhook subscriptions
  3. Verify webhook signatures to ensure security and authenticity (see Securing your webhooks)

Unit sends POST requests to your webhook's URL from one of the following IP addresses:

EnvironmentIP Addresses
Sandbox54.81.62.38
35.169.213.205
3.234.105.75
Live3.209.193.26
54.156.65.95
54.165.224.37

Please note that these IP addresses are subject to change.

Suggestion

On production, webhooks that were unresponsive for 7 days will change status to Unavailable and will cease to receive events until they are re-enabled.

On sandbox, webhooks that were unresponsive for 2 days will be changed to status Unavailable.

Available Webhook Events​

With Managed Banking, you can subscribe to the following webhook events:

application.created​

Occurs when a new application is submitted. The userIds refers to the user IDs in your system.

Example application.created payload:

{
"data": [
{
"id": "308",
"type": "application.created",
"attributes": {
"userIds": ["user_12345"],
"createdAt": "2025-12-14T19:56:29.223Z"
}
}
]
}

application.awaitingDocuments​

Occurs when additional documents are required for an application. The userIds refers to the user IDs in your system.

Example application.awaitingDocuments payload:

{
"data": [
{
"id": "313",
"type": "application.awaitingDocuments",
"attributes": {
"userIds": ["user_12345"],
"createdAt": "2025-12-14T20:21:22.000Z"
}
}
]
}

application.pendingReview​

Occurs when an application is pending review. The userIds refers to the user IDs in your system.

Example application.pendingReview payload:

{
"data": [
{
"id": "315",
"type": "application.pendingReview",
"attributes": {
"userIds": ["user_12345"],
"createdAt": "2025-12-14T20:25:00.000Z"
}
}
]
}

application.denied​

Occurs when an application is rejected. The userIds refers to the user IDs in your system.

Example application.denied payload:

{
"data": [
{
"id": "28",
"type": "application.denied",
"attributes": {
"userIds": ["user_12345"],
"createdAt": "2020-07-29T12:53:05.882Z"
}
}
]
}

application.canceled​

Occurs when an application is canceled. The userIds refers to the user IDs in your system.

Example application.canceled payload:

{
"data": [
{
"id": "314",
"type": "application.canceled",
"attributes": {
"userIds": ["user_12345"],
"createdAt": "2025-12-14T20:21:47.872Z"
}
}
]
}

customer.created​

Occurs when a new customer record is established after application approval. The userIds array contains the user IDs from your system.

Example customer.created payload:

{
"data": [
{
"id": "53",
"type": "customer.created",
"attributes": {
"createdAt": "2020-07-29T12:53:05.882Z",
"name": "Acme Corp",
"userIds": ["user_12345"]
},
"relationships": {
"customer": {
"data": {
"id": "10000",
"type": "businessCustomer"
}
}
}
}
]
}

account.created​

Occurs when a new deposit account is successfully created for a customer.

Example account.created payload:

{
"data": [
{
"id": "269",
"type": "account.created",
"attributes": {
"createdAt": "2021-04-13T07:40:43.813Z",
"accountNumber": "1000000001",
"routingNumber": "812345678"
},
"relationships": {
"account": {
"data": {
"id": "10004",
"type": "account"
}
},
"customer": {
"data": {
"id": "10000",
"type": "customer"
}
}
}
}
]
}

account.frozen​

Occurs when account access is restricted.

Example account.frozen payload:

{
"data": [
{
"id": "2354",
"type": "account.frozen",
"attributes": {
"createdAt": "2021-12-08T07:43:13.813Z",
"accountNumber": "1000000001",
"routingNumber": "812345678"
},
"relationships": {
"account": {
"data": {
"id": "10004",
"type": "account"
}
},
"customer": {
"data": {
"id": "10000",
"type": "customer"
}
}
}
}
]
}

account.unfrozen​

Occurs when account access is restored.

Example account.unfrozen payload:

{
"data": [
{
"id": "2355",
"type": "account.unfrozen",
"attributes": {
"createdAt": "2021-12-08T07:43:13.813Z",
"accountNumber": "1000000001",
"routingNumber": "812345678"
},
"relationships": {
"account": {
"data": {
"id": "10004",
"type": "account"
}
},
"customer": {
"data": {
"id": "10000",
"type": "customer"
}
}
}
}
]
}

account.closed​

Occurs when an account is closed by the customer or Unit.

Example account.closed payload:

{
"data": [
{
"id": "270",
"type": "account.closed",
"attributes": {
"createdAt": "2021-04-13T07:40:43.813Z",
"accountNumber": "1000000001",
"routingNumber": "812345678"
},
"relationships": {
"account": {
"data": {
"id": "10004",
"type": "account"
}
},
"customer": {
"data": {
"id": "10000",
"type": "customer"
}
}
}
}
]
}

account.reopened​

Occurs when a previously closed account is reopened.

Example account.reopened payload:

{
"data": [
{
"id": "271",
"type": "account.reopened",
"attributes": {
"createdAt": "2021-04-13T07:40:43.813Z",
"accountNumber": "1000000001",
"routingNumber": "812345678"
},
"relationships": {
"account": {
"data": {
"id": "10004",
"type": "account"
}
},
"customer": {
"data": {
"id": "10000",
"type": "customer"
}
}
}
}
]
}

card.created​

Occurs when a new card is created for a customer.

Example card.created payload:

{
"data": [
{
"id": "322",
"type": "card.created",
"attributes": {
"cardType": "individualDebitCard",
"createdAt": "2025-12-14T20:56:27.782Z"
},
"relationships": {
"card": {
"data": {
"id": "39",
"type": "card"
}
},
"account": {
"data": {
"id": "10028",
"type": "account"
}
},
"customer": {
"data": {
"id": "10025",
"type": "customer"
}
}
}
}
]
}

card.activated​

Occurs when a card is activated for the first time.

Example card.activated payload:

{
"data": [
{
"id": "323",
"type": "card.activated",
"attributes": {
"cardType": "individualDebitCard",
"createdAt": "2025-12-14T20:59:23.028Z"
},
"relationships": {
"card": {
"data": {
"id": "39",
"type": "card"
}
},
"account": {
"data": {
"id": "10028",
"type": "account"
}
},
"customer": {
"data": {
"id": "10025",
"type": "customer"
}
}
}
}
]
}
Suggestion

Enhanced Information Security documentation is required to access transaction webhooks. Contact your Customer Success Manager for more information about accessing transaction.

transaction.created​

Occurs for all account transactions (deposits, withdrawals, transfers). The amount and balance are in cents.

Example transaction.created payload:

{
"data": [
{
"id": "12345",
"type": "transaction.created",
"attributes": {
"createdAt": "2021-06-02T10:15:22.123Z",
"amount": 50000,
"direction": "Credit",
"type": "originatedAchTransaction",
"balance": 150000
},
"relationships": {
"account": {
"data": {
"id": "10004",
"type": "account"
}
},
"customer": {
"data": {
"id": "10000",
"type": "customer"
}
},
"transaction": {
"data": {
"id": "12345",
"type": "originatedAchTransaction"
}
}
}
}
]
}

intent.created​

Occurs when an intent is created. This event is generic across all supported suggestion types (e.g. paymentIntent) — the payload only carries generic details (ID, tags, times, and relationships). Fetch the intent via Get Suggestion for its type-specific attributes.

Example intent.created payload:

{
"data": [
{
"id": "342",
"type": "intent.created",
"attributes": {
"createdAt": "2025-12-15T09:12:04.221Z",
"tags": {}
},
"relationships": {
"intent": {
"data": {
"id": "50001",
"type": "paymentIntent"
}
},
"customer": {
"data": {
"id": "10014",
"type": "customer"
}
},
"org": {
"data": {
"id": "1",
"type": "org"
}
}
}
}
]
}

intent.approved​

Occurs when an intent is approved. This event is generic across all supported suggestion types — the payload only carries generic details (ID, tags, times, and relationships). Fetch the intent via Get Suggestion for its type-specific attributes.

Example intent.approved payload:

{
"data": [
{
"id": "343",
"type": "intent.approved",
"attributes": {
"createdAt": "2025-12-15T09:20:47.552Z",
"tags": {}
},
"relationships": {
"intent": {
"data": {
"id": "50001",
"type": "paymentIntent"
}
},
"customer": {
"data": {
"id": "10014",
"type": "customer"
}
},
"org": {
"data": {
"id": "1",
"type": "org"
}
}
}
}
]
}

intent.processing​

Occurs when the underlying action created from an approved intent begins processing. This event is generic across all supported suggestion types — the payload only carries generic details (ID, tags, times, and relationships). Fetch the intent via Get Suggestion for its type-specific attributes.

Example intent.processing payload:

{
"data": [
{
"id": "348",
"type": "intent.processing",
"attributes": {
"createdAt": "2025-12-15T09:21:00.000Z",
"tags": {}
},
"relationships": {
"intent": {
"data": {
"id": "50001",
"type": "paymentIntent"
}
},
"customer": {
"data": {
"id": "10014",
"type": "customer"
}
},
"org": {
"data": {
"id": "1",
"type": "org"
}
}
}
}
]
}

intent.declined​

Occurs when an intent is declined. This event is generic across all supported suggestion types — the payload only carries generic details (ID, tags, times, and relationships). Fetch the intent via Get Suggestion for its type-specific attributes.

Example intent.declined payload:

{
"data": [
{
"id": "344",
"type": "intent.declined",
"attributes": {
"createdAt": "2025-12-15T09:21:10.031Z",
"tags": {}
},
"relationships": {
"intent": {
"data": {
"id": "50001",
"type": "paymentIntent"
}
},
"customer": {
"data": {
"id": "10014",
"type": "customer"
}
},
"org": {
"data": {
"id": "1",
"type": "org"
}
}
}
}
]
}

intent.cancelled​

Occurs when an intent is cancelled. This event is generic across all supported suggestion types — the payload only carries generic details (ID, tags, times, and relationships). Fetch the intent via Get Suggestion for its type-specific attributes.

Example intent.cancelled payload:

{
"data": [
{
"id": "345",
"type": "intent.cancelled",
"attributes": {
"createdAt": "2025-12-15T09:22:36.114Z",
"tags": {}
},
"relationships": {
"intent": {
"data": {
"id": "50001",
"type": "paymentIntent"
}
},
"customer": {
"data": {
"id": "10014",
"type": "customer"
}
},
"org": {
"data": {
"id": "1",
"type": "org"
}
}
}
}
]
}

intent.completed​

Occurs when the underlying action created from an approved intent completes. This event is generic across all supported suggestion types — the payload only carries generic details (ID, tags, times, and relationships). Fetch the intent via Get Suggestion for its type-specific attributes.

Example intent.completed payload:

{
"data": [
{
"id": "346",
"type": "intent.completed",
"attributes": {
"createdAt": "2025-12-15T09:25:58.470Z",
"tags": {}
},
"relationships": {
"intent": {
"data": {
"id": "50001",
"type": "paymentIntent"
}
},
"customer": {
"data": {
"id": "10014",
"type": "customer"
}
},
"org": {
"data": {
"id": "1",
"type": "org"
}
}
}
}
]
}

intent.failed​

Occurs when the underlying action created from an approved intent fails. This event is generic across all supported suggestion types — the payload only carries generic details (ID, tags, times, and relationships). Fetch the intent via Get Suggestion for its type-specific attributes, including the failure reason.

Example intent.failed payload:

{
"data": [
{
"id": "347",
"type": "intent.failed",
"attributes": {
"createdAt": "2025-12-15T09:25:58.470Z",
"tags": {}
},
"relationships": {
"intent": {
"data": {
"id": "50001",
"type": "paymentIntent"
}
},
"customer": {
"data": {
"id": "10014",
"type": "customer"
}
},
"org": {
"data": {
"id": "1",
"type": "org"
}
}
}
}
]
}
Expired suggestions

A suggestion that reaches Expired status (after 60 days in Created) does not emit a webhook event. There is no intent.expired event. Use Get Suggestion or List Suggestions (for example with filter[status][]=Expired) to detect expiry.

whiteLabelAppUser.created​

Occurs when a new user is created in the Managed Solution component. The userId refers to the user ID in your system.

Example whiteLabelAppUser.created payload:

{
"data": [
{
"id": "324",
"type": "whiteLabelAppUser.created",
"attributes": {
"userId": "user_67890",
"userRole": "ReadOnly",
"createdAt": "2025-12-14T21:15:30.123Z",
"initiatorUserId": "user_12345"
},
"relationships": {
"customer": {
"data": {
"id": "10000",
"type": "customer"
}
}
}
}
]
}
AttributeTypeDescription
userIdstringThe user ID in your system.
userRolestringThe role assigned to the user. See Team Roles & Permissions.
createdAtstringThe date and time the user was created.
initiatorUserIdstringOptional. The user ID of the user who initiated this action.

whiteLabelAppUser.disabled​

Occurs when a user is disabled in the Managed Solution component. The userId refers to the user ID in your system.

Example whiteLabelAppUser.disabled payload:

{
"data": [
{
"id": "325",
"type": "whiteLabelAppUser.disabled",
"attributes": {
"userId": "user_67890",
"userRole": "Admin",
"createdAt": "2025-12-14T21:22:45.456Z",
"initiatorUserId": "user_12345"
},
"relationships": {
"customer": {
"data": {
"id": "10000",
"type": "customer"
}
}
}
}
]
}
AttributeTypeDescription
userIdstringThe user ID in your system.
userRolestringThe role of the user at the time of disabling. See Team Roles & Permissions.
createdAtstringThe date and time the user was disabled.
initiatorUserIdstringOptional. The user ID of the user who initiated this action.