---
updatedAt: 2026-04-27T20:30:22.000Z
agentTools:
  projectIndex: https://developer.bill.com/llms.txt
---

# Create a subscription

Create a new event subscription. You can subscribe to multiple events with a single request. You can create up to 10 webhook subscriptions per organization.

BILL provides a full catalog of all the events that you can subscribe to with `GET /v3/events/catalog`. See [Get events catalog](ref:geteventcatalog) in the API reference for more information.

See [Webhooks](doc:webhooks) in the Guides section for more information, sample requests, and notification payloads for BILL events.

# OpenAPI definition

```json
{
  "openapi": "3.0.1",
  "info": {
    "title": "Connect Events API",
    "description": "RESTful API for working with BILL webhooks",
    "version": "1"
  },
  "servers": [
    {
      "url": "https://gateway.stage.bill.com/connect-events",
      "description": "sandbox"
    }
  ],
  "paths": {
    "/v3/subscriptions": {
      "post": {
        "tags": [
          "subscriptions"
        ],
        "summary": "Create a subscription",
        "description": "Create a new event subscription. You can subscribe to multiple events with a single request. You can create up to 10 webhook subscriptions per organization.\n\nBILL provides a full catalog of all the events that you can subscribe to with `GET /v3/events/catalog`. See [Get events catalog](https://developer.bill.com/reference/geteventcatalog) in the API reference for more information.\n\nSee [Webhooks](https://developer.bill.com/docs/webhooks) in the Guides section for more information, sample requests, and notification payloads for BILL events.",
        "operationId": "createSubscription",
        "parameters": [
          {
            "name": "X-Idempotent-Key",
            "in": "header",
            "description": "Idempotency key. The key must be in the UUID4 format.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "{{webhook_idempotency_key}}"
          },
          {
            "name": "sessionId",
            "in": "header",
            "schema": {
              "type": "string",
              "description": "API session ID generated with `/v3/login`",
              "nullable": true,
              "example": "{{session_id}}"
            }
          },
          {
            "name": "devKey",
            "in": "header",
            "schema": {
              "type": "string",
              "description": "Developer key sent to you by BILL when you create a developer account. Set `sessionId` and `devKey` for organization-level BILL v3 API webhook events.",
              "nullable": true,
              "example": "{{developer_key}}"
            }
          },
          {
            "name": "appKey",
            "in": "header",
            "schema": {
              "type": "string",
              "description": "Application key sent to you by BILL when you create a partner account. Set `sessionId` and `appKey` for partner-level BILL v3 API webhook events.",
              "nullable": true,
              "example": "{{app_key}}"
            }
          },
          {
            "name": "apiToken",
            "in": "header",
            "schema": {
              "type": "string",
              "description": "Access token for Spend & Expense API authentication. Set `apiToken`  for Spend & Expense webhook events.",
              "nullable": true,
              "example": "{{api_token}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "createSubscription 200 response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionWithSecurityKeyResponseDto"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "SubscriptionActorDto": {
        "type": "string",
        "description": "Subscription change actor information.",
        "enum": [
          "CLIENT",
          "SYSTEM"
        ]
      },
      "SubscriptionEventDto": {
        "required": [
          "type",
          "version"
        ],
        "type": "object",
        "properties": {
          "type": {
            "minLength": 1,
            "type": "string",
            "description": "Event type"
          },
          "version": {
            "minLength": 1,
            "type": "string",
            "description": "Event type version"
          }
        },
        "description": "Subscription events information."
      },
      "SubscriptionRequestDto": {
        "required": [
          "events",
          "name",
          "notificationUrl",
          "status"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Subscription name"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SubscriptionStatusDto"
              },
              {
                "description": "Subscription status information"
              }
            ]
          },
          "events": {
            "minItems": 1,
            "type": "array",
            "description": "Subscription events information. You can retrieve event `type` and `version` with `GET /v3/events/catalog`.",
            "items": {
              "$ref": "#/components/schemas/SubscriptionEventDto"
            }
          },
          "notificationUrl": {
            "minLength": 1,
            "type": "string",
            "description": "Event notification URL. The URL must be HTTPS. BILL uses this URL to send you event notifications."
          }
        },
        "description": "Create a subscription",
        "example": {
          "name": "Bill management",
          "status": {
            "enabled": true
          },
          "events": [
            {
              "type": "bill.created",
              "version": "1"
            },
            {
              "type": "bill.updated",
              "version": "1"
            },
            {
              "type": "bill.archived",
              "version": "1"
            }
          ],
          "notificationUrl": "{{webhook_notification_url}}"
        }
      },
      "SubscriptionStatusDto": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Set as `true` if the subscription is enabled. When you create a new subscription, this value is set as `true` by default."
          },
          "reason": {
            "type": "string",
            "description": "Reason for changing the subscription status. This field is used by BILL for informing you when the `enabled` field is set as `false`."
          }
        },
        "description": "Subscription status information."
      },
      "SubscriptionStatusWithActorDto": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Set as `true` if the subscription is enabled. When you create a new subscription, this value is set as `true` by default."
          },
          "reason": {
            "type": "string",
            "description": "Reason for changing the subscription status. This field is used by BILL for informing you when the `enabled` field is set as `false`."
          },
          "actor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SubscriptionActorDto"
              },
              {
                "description": "Entity that set the subscription status"
              }
            ]
          }
        },
        "description": "Subscription status and change actor information."
      },
      "SubscriptionWithSecurityKeyResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "BILL-generated ID of the subscription"
          },
          "name": {
            "type": "string",
            "description": "Subscription name"
          },
          "organizationId": {
            "type": "string",
            "description": "BILL-generated ID of the organization. BILL sends you event notifications only for the BILL organization used to set up a subscription."
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SubscriptionStatusWithActorDto"
              },
              {
                "description": "Subscription status information"
              }
            ]
          },
          "events": {
            "type": "array",
            "description": "Subscription events information. You can retrieve event `type` and `version` with `GET /v3/events/catalog`.",
            "items": {
              "$ref": "#/components/schemas/SubscriptionEventDto"
            }
          },
          "notificationUrl": {
            "type": "string",
            "description": "Event notification URL. The URL must be HTTPS. BILL uses this URL to send you event notifications."
          },
          "createdTime": {
            "type": "string",
            "description": "Subscription created date and time",
            "format": "date-time"
          },
          "updatedTime": {
            "type": "string",
            "description": "Subscription updated date and time",
            "format": "date-time"
          },
          "securityKey": {
            "type": "string",
            "description": "BILL-generated security key.\n\nWhen you create a new subscription, a one-time `securityKey` is generated and all event notifications sent to your `notificationUrl` are signed with this key."
          }
        },
        "description": "Subscription and security key information."
      }
    }
  }
}
```