---
title: "Create AFT Payment Request"
method: POST
path: "/v2/payments/aft/"
tags: ["payments"]
---

# Create AFT Payment Request

`POST /v2/payments/aft/`

Create an AFT (Account Funding Transaction) to pull funds from a consumer's registered external debit card into their Upward DDA. The card must already be registered through the card-registration component and have `pullEnabled: true`. `amount` is the gross amount debited from the card; the fee is deducted from it, so the consumer's DDA receives `amount - fee_amount`. Returns `200` with a payment in `pending`; settlement is reported asynchronously through the `Payment.Aft.Completed` webhook.

## Headers

- `Authorization` string, required

## Request body

- CreateAFTRequest — Request body for creating an AFT (Account Funding Transaction) — pulls funds from a consumer's external payment card into their Upward DDA.
  - `consumer_id` string, uuid, required — External ID of the consumer initiating the transfer.
  - `external_payment_card_id` string, uuid, required — `external_id` of the registered external payment card to pull funds from. The card must belong to `consumer_id` and have `pullEnabled: true`.
  - `amount` number, double, required — Gross amount to pull in USD. Minimum 1.00; the maximum is the partner's configured AFT limit. The fee is deducted from this amount, so the DDA is credited `amount - fee_amount`.
  - `description` string — Optional description for the transaction. Defaults to `Instant Funds Transfer In`.

## Response `200`

AFT created and submitted

- GetAFTResponse — AFT payment details.
  - `id` string, uuid, required — Unique identifier for this payment. Use it with `GET /v2/payments/aft/{id}/`.
  - `consumer_id` string, uuid, required — External ID of the consumer associated with this payment.
  - `external_payment_card_id` string, uuid, required — External ID of the payment card that was debited.
  - `amount` number, double, required — Gross transfer amount in USD, inclusive of `fee_amount`.
  - `fee_amount` number, double, required — Fee deducted from `amount`. The DDA is credited `amount - fee_amount`.
  - `description` string — Description recorded against the transaction.
  - `direction` 'Pull', required — Always `Pull` for AFT transactions.
  - `status` 'queued' | 'pending' | 'pending_review' | 'posted' | 'canceled' | 'error' | 'rejected' | 'returned', required — Lifecycle status of a card payment. `pending` is returned at creation; `posted` means funds have settled. `pending_review` indicates the payment is held for compliance review.

## Other responses

- `404` — Consumer or external payment card not found
- `422` — Validation failed

---

[API](https://skmtc.net/upwardli/apis/api-reference.md) · [All operations](https://skmtc.net/upwardli/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/upwardli/api-reference/revisions/8a237f1f704f/schema)
