---
title: "Create a payment outcome intent"
method: POST
path: "/v1/customers/{customerId}/payment-outcome-intents"
tags: ["Payment outcome intents"]
---

# Create a payment outcome intent

`POST /v1/customers/{customerId}/payment-outcome-intents`

## Request

- Base URL: `https://sandbox.api.infinite.dev`
- URL: `https://sandbox.api.infinite.dev/v1/customers/{customerId}/payment-outcome-intents`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/infinite/apis/infinite-api/docs/v1/customers/:customerId/payment-outcome-intents/post.ts> (a function with typed inputs; its response is checked against the schema)

Record the business outcome (e.g. run payroll) separate from payee/transfer drafts. Outcome text and requester are immutable.

## Path parameters

- `customerId` string, required

## Headers

- `X-API-Key` string

## Request body

- CreatePaymentOutcomeIntentDto
  - `outcomeText` string, required: Recorded outcome the customer or agent is trying to achieve.

## Response `201`

- PaymentOutcomeIntentResponseDto
  - `id` string, required
  - `organizationId` string, required
  - `customerId` string, required
  - `outcomeText` string, required
  - `requesterId` string, required
  - `status` 'OPEN' | 'APPROVED' | 'REJECTED', required
  - `draftLinks` PaymentOutcomeIntentDraftLinkResponseDto[], required
    - `id` string, required
    - `draftKind` 'PAYEE_DRAFT' | 'TRANSFER_DRAFT', required
    - `draftId` string, required
    - `linkedAt` string, date-time, required
  - `sealedPlan` SealedPaymentPlanDto, required
    - `v` number, required
    - `legs` SealedPaymentPlanLegDto[], required
      - `legIndex` number, required
      - `sourceAmountMinor` string, required: Source spend in minor units.
      - `sourceCurrency` string, required
      - `sourceAccountId` string, required
      - `sourceRail` string, required
      - `destinationAmountMinor` string, required: Destination payout in minor units.
      - `destinationCurrency` string, required
      - `payeeAccountId` string, required
      - `destinationRail` string, required
  - `sealedPlanHash` string, nullable, required
  - `sealedPlanSignature` string, nullable, required: HMAC-SHA256 hex over sealedPlanHash. Set when Infinite approves (ENG-2002).
  - `sealedAt` string, date-time, nullable, required
  - `sealedBy` string, nullable, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

## Other responses

- `401`: Unauthorized - Invalid or missing authentication credentials

## Changes

- **2026-10-02** `603402a92e85`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/infinite/apis/infinite-api/changes/v1/customers/:customerId/payment-outcome-intents/post.md)

---

[API](https://skmtc.dev/infinite/apis/infinite-api.md) - [All operations](https://skmtc.dev/infinite/apis/infinite-api/llms.txt) - [OpenAPI document](https://skmtc.dev/infinite/apis/infinite-api/revisions/144b55943d0e?raw)
