---
title: "Create an event"
method: POST
path: "/events/"
tags: ["Events"]
---

# Create an event

`POST /events/`

## Request body

- object
  - `event_type` 'person_created' | 'person_updated' | 'business_created' | 'business_updated' | 'bank_account_created' | 'bank_account_updated' | 'external_account_created' | 'external_account_updated' | 'transaction' | 'login' | 'credentials_updated' | 'embedded_authentication' | 'modify_notification' | 'entity_group_created' | 'entity_group_updated' | 'card_created' | 'card_updated', required
  - `external_event_id` string
  - `event_status` string — Event statuses are customer-defined values.
  - `data` union
    - union
      - object
        - `timestamp` string, date-time, required
      - object
        - `timestamp` string, date-time, required
    - object
      - `embedded_application` 'zelle' | 'billpay', required — The application that is embedded in the host application, e.g. Zelle
      - `external_entity_id` string, required — External ID of the entity interacting with the embedded application
      - `external_embedded_authentication_id` string — Unique external identifier for grouping multiple embedded authentication events
      - `device` 0 — unresolved $ref
      - `timestamp` string, date-time, required
    - union
      - object
        - `timestamp` string, date-time, required
      - object
        - `timestamp` string, date-time, required
    - union
      - object
        - `timestamp` string, date-time, required
      - object
        - `timestamp` string, date-time, required
    - union
      - object
        - `external_transaction_id` string — Unique external identifier for the transaction.
        - `amount` integer — Amount in cents. +/- indicate direction of funds.
        - `currency` string — 3-character currency code (e.g. "USD")
        - `entity_token` string
        - `external_entity_id` string, required
        - `external_account_id` string, required
        - `counterparty` union
          - object
            - `external_counterparty_id` string
            - `name_first` string
            - `name_last` string
            - `routing_number` string
            - `account_number` string, required
            - `counterparty_type` string
            - `account_name` string
            - `address_line_1` string
            - `address_line_2` string
            - `address_city` string
            - `address_state` string
            - `address_postal_code` string
            - `address_country_code` string
            - `card_network` string
            - `merchant_category_code` string
            - `name_on_card` string
            - `avs` string
            - `description` string
            - `merchant_category_description` string
            - `currency` string
          - object
            - `external_counterparty_id` string, required
            - `name_first` string
            - `name_last` string
            - `routing_number` string
            - `account_number` string
            - `counterparty_type` string
            - `account_name` string
            - `address_line_1` string
            - `address_line_2` string
            - `address_city` string
            - `address_state` string
            - `address_postal_code` string
            - `address_country_code` string
            - `card_network` string
            - `merchant_category_code` string
            - `name_on_card` string
            - `avs` string
            - `description` string
            - `merchant_category_description` string
            - `currency` string
        - `category` 'Adjustment' | 'ATM Rebate' | 'Bill Pay' | 'Chargeback' | 'Deposit' | 'Direct Deposit Bonus' | 'Interest' | 'Overdraft Fee' | 'Payment' | 'Promo' | 'Purchase' | 'Purchase Return' | 'Return' | 'Service Charge' | 'Withdrawal', nullable — Splits process_method into more granular values. Allowed values are (`"Adjustment"`, `"ATM Rebate"`, `"Bill Pay"`, `"Chargeback"`, `"Deposit"`, `"Direct Deposit Bonus"`, `"Interest"`, `"Overdraft Fee"`, `"Payment"`, `"Promo"`, `"Purchase"`, `"Purchase Return"`, `"Return"`, `"Service Charge"`, `"Withdrawal"`, `null`)
        - `transaction_settled_at` string, date-time, nullable — The datetime the transaction was settled in the customer's system (Valid Format: YYYY-MM-DD'T'HH:MM:SS'Z'). Currently not used in decisioning.
        - `description` string, nullable — A description of the transaction. Currently not used in decisioning.
        - `type_code` string, nullable — The raw type code of the transaction. There should be a 1:1 mapping from type_code to type_description provided to Alloy.
        - `type_description` string, nullable — Description of the type code. There should be a 1:1 mapping from type_code to type_description provided to Alloy. Currently not used in decisioning.
        - `is_approved` boolean, nullable — If the transaction was approved by the customer
        - `is_reversal` boolean, nullable — If the transaction is a refund
        - `process_method` 'Card' | 'Internal' | 'Check' | 'P2P' | 'ACH' | 'Cash' | 'Wire', nullable — Platform or process method of the transaction. Allowed values are (`"Card"`, `"Internal"`, `"Check"`, `"P2P"`, `"ACH"`, `"Cash"`, `"Wire"`, `RTP`, `null`)
        - `is_triggered_by_user` boolean, nullable — Whether the transaction is initiated by the source entity. Mainly used to distinguish betweeh ACH push and pull
        - `interaction_point` 'Android' | 'ATM' | 'Card Swipe Terminal' | 'iOS' | 'Mobile' | 'Online Form' | 'Point of Sale' | 'Teller' | '3rd Party App', nullable — Where the transaction took place. Allow values are (`"Android"`, `"ATM"`, `"Card Swipe Terminal"`, `"iOS"`, `"Mobile"`, `"Online Form"`, `"Point of Sale"`, `"Teller"`, `"3rd Party App"`, `null`)
        - `linked_transactions` union[] — List of transactions linked to the given transaction.
          - union — Linked transaction details.
            - object
              - …
            - object
              - …
        - `return_code` string, nullable — This represents the Alphanumeric ACH return Code. (e.g. R01)
        - `return_code_reason` 'Unauthorized', nullable — Allowed values are (`"Unauthorized"`, `null`). Currently not used in decisioning.
        - `status` 'Acknowledged' | 'Accepted' | 'Rejected' | 'Paused' | 'Pending' | 'Completed' | 'Declined' | 'Cancelled', nullable — Allowed values are (`"Acknowledged"`, `"Accepted"`, `"Rejected"`, `"Paused"`, `"Pending"`, `"Completed"`, `"Declined"`, `"Cancelled"`, `null`)
        - `status_detail` string, nullable — Additional description on transaction status. Currently not used in decisioning.
        - `response_code` number, nullable — Response codes returned on card transactions
        - `iso_message` number, nullable — ISO standard value returned on card transactions
        - `entry_mode` number, nullable — POS entry modes on card transactions
        - `timestamp` string, date-time, required — The datetime the transaction was created in the customer's system (Valid Format: YYYY-MM-DD'T'HH:MM:SS'Z').
      - object
        - `external_transaction_id` string — Unique external identifier for the transaction.
        - `amount` integer — Amount in cents. +/- indicate direction of funds.
        - `currency` string — 3-character currency code (e.g. "USD")
        - `entity_token` string, required
        - `external_entity_id` string
        - `external_account_id` string
        - `counterparty` union
          - object
            - `external_counterparty_id` string
            - `name_first` string
            - `name_last` string
            - `routing_number` string
            - `account_number` string, required
            - `counterparty_type` string
            - `account_name` string
            - `address_line_1` string
            - `address_line_2` string
            - `address_city` string
            - `address_state` string
            - `address_postal_code` string
            - `address_country_code` string
            - `card_network` string
            - `merchant_category_code` string
            - `name_on_card` string
            - `avs` string
            - `description` string
            - `merchant_category_description` string
            - `currency` string
          - object
            - `external_counterparty_id` string, required
            - `name_first` string
            - `name_last` string
            - `routing_number` string
            - `account_number` string
            - `counterparty_type` string
            - `account_name` string
            - `address_line_1` string
            - `address_line_2` string
            - `address_city` string
            - `address_state` string
            - `address_postal_code` string
            - `address_country_code` string
            - `card_network` string
            - `merchant_category_code` string
            - `name_on_card` string
            - `avs` string
            - `description` string
            - `merchant_category_description` string
            - `currency` string
        - `category` 'Adjustment' | 'ATM Rebate' | 'Bill Pay' | 'Chargeback' | 'Deposit' | 'Direct Deposit Bonus' | 'Interest' | 'Overdraft Fee' | 'Payment' | 'Promo' | 'Purchase' | 'Purchase Return' | 'Return' | 'Service Charge' | 'Withdrawal', nullable — Splits process_method into more granular values. Allowed values are (`"Adjustment"`, `"ATM Rebate"`, `"Bill Pay"`, `"Chargeback"`, `"Deposit"`, `"Direct Deposit Bonus"`, `"Interest"`, `"Overdraft Fee"`, `"Payment"`, `"Promo"`, `"Purchase"`, `"Purchase Return"`, `"Return"`, `"Service Charge"`, `"Withdrawal"`, `null`)
        - `transaction_settled_at` string, date-time, nullable — The datetime the transaction was settled in the customer's system (Valid Format: YYYY-MM-DD'T'HH:MM:SS'Z'). Currently not used in decisioning.
        - `description` string, nullable — A description of the transaction. Currently not used in decisioning.
        - `type_code` string, nullable — The raw type code of the transaction. There should be a 1:1 mapping from type_code to type_description provided to Alloy.
        - `type_description` string, nullable — Description of the type code. There should be a 1:1 mapping from type_code to type_description provided to Alloy. Currently not used in decisioning.
        - `is_approved` boolean, nullable — If the transaction was approved by the customer
        - `is_reversal` boolean, nullable — If the transaction is a refund
        - `process_method` 'Card' | 'Internal' | 'Check' | 'P2P' | 'ACH' | 'Cash' | 'Wire', nullable — Platform or process method of the transaction. Allowed values are (`"Card"`, `"Internal"`, `"Check"`, `"P2P"`, `"ACH"`, `"Cash"`, `"Wire"`, `RTP`, `null`)
        - `is_triggered_by_user` boolean, nullable — Whether the transaction is initiated by the source entity. Mainly used to distinguish betweeh ACH push and pull
        - `interaction_point` 'Android' | 'ATM' | 'Card Swipe Terminal' | 'iOS' | 'Mobile' | 'Online Form' | 'Point of Sale' | 'Teller' | '3rd Party App', nullable — Where the transaction took place. Allow values are (`"Android"`, `"ATM"`, `"Card Swipe Terminal"`, `"iOS"`, `"Mobile"`, `"Online Form"`, `"Point of Sale"`, `"Teller"`, `"3rd Party App"`, `null`)
        - `linked_transactions` union[] — List of transactions linked to the given transaction.
          - union — Linked transaction details.
            - object
              - …
            - object
              - …
        - `return_code` string, nullable — This represents the Alphanumeric ACH return Code. (e.g. R01)
        - `return_code_reason` 'Unauthorized', nullable — Allowed values are (`"Unauthorized"`, `null`). Currently not used in decisioning.
        - `status` 'Acknowledged' | 'Accepted' | 'Rejected' | 'Paused' | 'Pending' | 'Completed' | 'Declined' | 'Cancelled', nullable — Allowed values are (`"Acknowledged"`, `"Accepted"`, `"Rejected"`, `"Paused"`, `"Pending"`, `"Completed"`, `"Declined"`, `"Cancelled"`, `null`)
        - `status_detail` string, nullable — Additional description on transaction status. Currently not used in decisioning.
        - `response_code` number, nullable — Response codes returned on card transactions
        - `iso_message` number, nullable — ISO standard value returned on card transactions
        - `entry_mode` number, nullable — POS entry modes on card transactions
        - `timestamp` string, date-time, required — The datetime the transaction was created in the customer's system (Valid Format: YYYY-MM-DD'T'HH:MM:SS'Z').
    - object
      - `name` string
      - `type` 'business' | 'joint_account' | 'membership' | 'merchant'
      - `entities` union[], required
        - union
          - object
            - `external_entity_id` string, required
            - `entity_token` string
            - `roles` string[]
            - `title` string
            - `ownership_percentage` number
            - `bank_accounts` union[]
              - …
          - object
            - `external_entity_id` string
            - `entity_token` string, required
            - `roles` string[]
            - `title` string
            - `ownership_percentage` number
            - `bank_accounts` union[]
              - …
      - `external_entity_group_ids` object[], required
        - `external_entity_id` string, required
        - `type` string
        - `designation` 'primary'
      - `timestamp` string, date-time, required
    - union
      - object
        - `timestamp` string, date-time, required
      - object
        - `timestamp` string, date-time, required
    - object
      - `external_card_id` string, required
      - `external_entity_id` string, required
      - `card_name` string
      - `product_name` string
      - `product_code` string
      - `card_type` 'debit' | 'credit' | 'prepaid' | 'charge'
      - `form_factor` 'physical' | 'virtual'
      - `issued_at` string, date-time
      - `expiry_month` string — Month from 1-12 (e.g. 1, 01, 12)
      - `expiry_year` string — Four-digit year (e.g. 2027)
      - `pin_updated_at` string, date-time
      - `pin_update_method` 'app' | 'ivr' | 'agent' | 'atm' | 'other'
      - `is_locked` boolean
      - `lock_expires_at` string, date-time
      - `status` 'active' | 'inactive' | 'deactivated' | 'terminated' | 'pending_activation' | 'expired'
      - `status_detail` string
      - `timestamp` string, date-time, required
      - `entities` object[]
        - `card_holder_type` 'primary' | 'secondary' | 'authorized_user', required
        - `external_entity_id` string, required
      - `accounts` object[]
        - `external_account_id` string, required
        - `account_type` 'primary' | 'secondary', required
      - `replaces_external_card_id` string
      - `replacement_reason` string
      - `external_entity_group_id` string
      - `entity_group_token` string

## Response `201`

Event has been processed

- object
  - `status_code` string
  - `_links` object
    - `self` object
      - `_href` string
  - `event` object
    - `event_type` string
    - `event_status` string
    - `data` object — data saved from event
    - `evaluations` unknown[] — list of source workflows ran
      - unknown
    - `journey_applications` object[] — list of journey applications created
      - `error` string
      - `journey_application_token` string
      - `journey_application_status` string
      - `journey_token` string
      - `journey_version_id` number
      - `source_evaluation_tokens` string[]
      - `investigations` Investigations — unresolved $ref
      - `_links` object
        - `self` object
          - `href` string
  - `error` object — error details

## Other responses

- `400` — Validation Error
- `409` — Conflict on object

---

[API](https://skmtc.dev/alloy/apis/alloy-api.md) · [All operations](https://skmtc.dev/alloy/apis/alloy-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/alloy/alloy-api/revisions/405799de4d2a/schema)
