---
title: "Create MPP deposit intent (service key, guest checkout)"
method: POST
path: "/service/fulfillments/{id}/mpp-deposit-intent"
tags: ["fulfillments"]
---

# Create MPP deposit intent (service key, guest checkout)

`POST /service/fulfillments/{id}/mpp-deposit-intent`

## Request

- Base URL: `https://api.instruxi.dev/api/v1/enforcer`
- URL: `https://api.instruxi.dev/api/v1/enforcer/service/fulfillments/{id}/mpp-deposit-intent`
- Auth: API key in header `X-API-Key`

Service-key only (the same callers as POST /service/fulfillments: enforcer-mp-merchant, enforcer-airdrop). The guest-checkout twin of POST /me/fulfillments/{id}/mpp-deposit-intent: a service-created fulfillment has the payee as creator and no sender, so no account can raise its intent. Here the fulfillment must belong to `X-Tenant-ID`; any other tenant's fulfillment is 404 (existence is not revealed). Otherwise identical: one intent PER PAYER, idempotent on (fulfillment, refund_address) (repeat = 200 with that payer's intent; a different refund_address gets its own intent and forwarder; at most 10 payers per fulfillment, then 429 too_many_intents; a fulfillment no longer pending or claimed is 409 fulfillment_not_payable), ref is the fulfillment memo (409 fulfillment_memo_invalid otherwise), refund_address required and committed into the CREATE2 forwarder, notional above 10,000 USDC refused. Pay Base only, MPP only, the exact amount_to_send, before expiry.

## Path parameters

- `id` string, required

## Headers

- `X-Tenant-ID` string, required

## Request body

- InternalDeliveryHttpHandlerMPPDepositIntentRequest
  - `refund_address` string

## Response `200`

OK

- InternalDeliveryHttpHandlerMPPDepositIntentResponse
  - `data` EnforcerV3InternalDomainMppdepositIntent
    - `amount_to_send` string
    - `created_at` string
    - `expires_at` string
    - `expiry` integer
    - `forwarder_address` string
    - `fulfillment_id` string
    - `id` string
    - `input_token` string
    - `notional_usdc` string
    - `operator` string
    - `park_reason` string
    - `plan_hash` string
    - `quote_buffer_bps` integer
    - `quoted_max_input` string
    - `received_amount` string
    - `receiver_wallet` string
    - `ref` string
    - `refund_address` string
    - `state` string
    - `tenant_id` string
    - `updated_at` string
  - `payer_instructions` InternalDeliveryHttpHandlerPayerNotice
    - `amount_to_send` string
    - `expires_at_unix` integer
    - `network` string
    - `send_to` string
    - `token` string
    - `warning` string
  - `success` boolean

## Other responses

- `201`: Created
- `400`: bad_request (tenant or body) / refund or notional invalid
- `401`: invalid_service_key
- `404`: fulfillment_not_found
- `409`: fulfillment_memo_invalid
- `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)
