---
title: "Settle an MPP deposit intent (system admin, dry_run by default)"
method: POST
path: "/admin/mpp-deposit-intents/{id}/settle"
tags: ["fulfillments"]
---

# Settle an MPP deposit intent (system admin, dry_run by default)

`POST /admin/mpp-deposit-intents/{id}/settle`

## Request

- Base URL: `https://api.instruxi.dev/api/v1/enforcer`
- URL: `https://api.instruxi.dev/api/v1/enforcer/admin/mpp-deposit-intents/{id}/settle`
- Auth: API key in header `Authorization`

Returns the exact calls (factory deploy if needed, then forwarder settle) without sending anything unless dry_run is explicitly false. Refused unless the intent is received or overpaid. Idempotent per intent: a repeat returns the first result. mode=reserve (the settle worker) reserves the intent before anything is sent and returns the plan with action_id and reserved=true; the worker then calls .../complete with the hashes or .../release. max_input_amount (> 0) replaces the quoted max input.

## Path parameters

- `id` string, required

## Request body

- InternalDeliveryHttpHandlerMPPSettleRequest
  - `deadline_seconds` integer
  - `dry_run` boolean
  - `max_fee_bps` integer
  - `max_impact_bps_accepted` integer
  - `max_input_amount` string: MaxInputAmount (uint256 decimal), when > 0, replaces the quoted max input: the worker passes the forwarder's full on-chain balance.
  - `mode` 'reserve'

## Response `200`

OK

- InternalDeliveryHttpHandlerMPPLeverResponse
  - `data` EnforcerV3InternalDomainMppdepositLeverResult
    - `action_id` string: ActionID is the mpp_deposit_actions row backing a real call or a reservation; Reserved is true while that row has no tx hash yet (the sender holds it but has not completed it).
    - `actor` string
    - `dry_run` boolean
    - `intent_id` string
    - `plan` EnforcerV3InternalDomainMppdepositPlan
      - `kind` string
      - `steps` EnforcerV3InternalDomainMppdepositStep[]
        - `args` object
        - `calldata` string
        - `function` string
        - `name` string
        - `to` string
    - `replayed` boolean
    - `reserved` boolean
    - `state` string
    - `tx_hashes` string[]
  - `success` boolean

## Other responses

- `404`: Not Found
- `409`: Conflict
- `503`: Service Unavailable

---

[API](https://skmtc.dev/instruxi/apis/enforcer-api.md) · [All operations](https://skmtc.dev/instruxi/apis/enforcer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/instruxi/apis/enforcer-api/revisions/fa82bc1becc0?raw)
