> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tradara.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Set daily-loss trigger

> POST /v1/balances/{account_id}/daily-loss/trigger — move the live DLL floor without resetting trading P&L.

Use this operation when a firm needs to move one account's **daily-loss floor** and leave today's trading result alone. It writes `daily_loss_limit_trigger` only.

```http theme={null}
POST /v1/balances/{account_id}/daily-loss/trigger
```

`operationId: setDailyLossTrigger`

A firm API key can call this route for an account in its firm. The operation:

1. Replaces `daily_loss_limit_trigger` with the absolute value you send.
2. Leaves `balance`, `start_of_day_balance`, `realized_day_pnl`, and `realized_week_pnl` unchanged.
3. Publishes `balance.updated` so live risk enforcement uses the new floor.

This is separate from the [max-loss cap](/prop-firm/operations/max-loss-limit), which moves the overall trailing floor, and from [re-anchor daily loss](/prop-firm/operations/reanchor-daily-loss), which starts a new daily measurement window and zeros today's realized P\&L.

## Example

An account opened the session at `$50,000` with a `$1,250` DLL, and is down `$250` on the day. You want the floor at `$47,500` without wiping that `$250` result:

```text theme={null}
Unchanged anchor:  $50,000.00
Unchanged day P&L:   -$250.00
Previous trigger:  $48,750.00
New trigger:       $47,500.00
```

```bash theme={null}
curl -X POST "$TRADARA_BASE_URL/v1/balances/$ACCOUNT_ID/daily-loss/trigger" \
  -H "X-Tradara-Api-Key: $TRADARA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reason_code": "PAYOUT",
    "daily_loss_limit_trigger": "47500.00"
  }'
```

## Body

| Field | Required | Notes |
| - | - | - |
| `reason_code` | yes | Operator reason, 1–24 characters. Example: `PAYOUT`. |
| `daily_loss_limit_trigger` | yes | Absolute equity floor. Decimal string, for example `"47500.00"`. |

## Response — `200 OK`

```json theme={null}
{
  "account_id": "5b1c8a2e-9f2d-4d3c-b6f0-2b6c5b6e1f9a",
  "reason_code": "PAYOUT",
  "previous_daily_loss_limit_trigger": "48750.00",
  "daily_loss_limit_trigger": "47500.00",
  "start_of_day_balance": "50000.00",
  "realized_day_pnl": "-250.00",
  "balance": {
    "account_id": "5b1c8a2e-9f2d-4d3c-b6f0-2b6c5b6e1f9a",
    "balance": "49750.00",
    "start_of_day_balance": "50000.00",
    "realized_day_pnl": "-250.00",
    "daily_loss_limit_trigger": "47500.00"
  }
}
```

Confirm the engine is enforcing the new floor with
[`GET /v1/firm-control/accounts/{account_id}/risk-state`](/prop-firm/operations/risk-state)
(`daily_loss_limit_trigger`).

<Warning>
  The firm daily-loss check compares live equity with this trigger. Raising the trigger above current equity breaches the account on the next mark.
</Warning>

<Warning>
  The next session roll rebuilds the trigger from the account's risk-profile daily-loss allowance and the new start-of-day balance. This call changes the floor for the current session. Change `daily_loss_value` on the account's risk profile when the new allowance should survive the roll.
</Warning>

<Warning>
  This does not unlock an account that already has a daily-loss breach. Move the trigger before the account crosses it, or use the applicable breach-review workflow separately.
</Warning>

## Errors

| HTTP | Meaning |
| - | - |
| `400` | Invalid account id, missing `reason_code`, or a trigger that is not a decimal. |
| `403` | Caller is not a firm operator or platform admin. |
| `404` | Account is unknown or outside the API key's firm. |
| `421` | Request hit the wrong balances shard. Retry through the gateway. |
| `502` / `503` | Balances service unavailable. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.