# Create a policy approval workflow for a currency

> 🔒 **Private label — [contact sales](mailto:sales@boyahq.com).** Requires a private-label entitlement on your API client.

Creates a POLICY_BASED (action_type 11) approval workflow scoped to a currency. The wallet reference is resolved from the `currency` field when present, otherwise from the org_wallet_ref header.

Endpoint: POST /business-policies/workflows
Version: 2.0.0
Security: oauth2ClientCredentials

## Header parameters:

  - `business_id` (string, required)
    Business identifier for the request

## Request fields (application/json):

  - `name` (string)
    Example: Travel subcategory approvals

  - `description` (string)
    Example: Approval workflow for travel spend

  - `auto_approval` (boolean)
    Example: false

  - `requester_can_approve` (boolean)
    Example: true

  - `status` (string)
    Enum: "active", "inactive", "archived"

  - `type` (string)
    Workflow scope type (not policy_type).
    Enum: "business", "team"

  - `currency` (string)
    Currency the workflow applies to.
    Example: KES

  - `teams` (array)
    Team ObjectIds when type is team.
    Example: ["68c1656caa7b2a7f2769a267"]

  - `requester_approval_conditions` (array)
    Example: []

  - `steps` (array, required)

  - `steps.approval_mandate` (string)
    Enum: "all", "any_of"

  - `steps.minimum_approvers` (number, required)
    Example: 1

  - `steps.is_auto_approval` (boolean)
    Example: false

  - `steps.daily_limit` (object)
    Per-day approval limit. Optional — the gateway fills a per-currency default when omitted.
    Example: 1000000

  - `steps.transaction_limit` (object)
    Per-transaction approval limit. Optional — the gateway fills a per-currency default when omitted.
    Example: 500000

  - `steps.amount_approval_condition` (object)

  - `steps.amount_approval_condition.type` (string, required)
    Enum: "under", "between", "over_or_equal_to", "any_amount"

  - `steps.amount_approval_condition.amount` (number)
    Example: 250000

  - `steps.amount_approval_condition.amount_range` (array)
    Example: [1,250000]

  - `steps.amount_approval_condition.values` (array)
    Example: []

  - `steps.approvers` (array, required)

  - `steps.approvers.employee` (string, required)
    Example: 65fbf2f42a5d67f03a764111

  - `steps.approvers.level` (number)
    Example: 1

  - `steps.approvers.must_approve` (boolean)
    Example: false

  - `steps.approvers.non_amount_approval_conditions` (array)

