# FedNow Transfers
> FedNow transfers move funds, within seconds, between your Increase account and any other account supporting FedNow.

[Events](https://increase.com/documentation/events.md) will be generated for this resource. The possible event categories are: `fednow_transfer.created` and `fednow_transfer.updated`.

## The FedNow Transfer object
### Example
```json
{
  "account_id": "account_in71c4amph0vgo2qllky",
  "account_number": "987654321",
  "acknowledgement": {
    "acknowledged_at": "2020-01-31T23:59:59Z"
  },
  "amount": 100,
  "created_at": "2020-01-31T23:59:59Z",
  "created_by": {
    "category": "user",
    "user": {
      "email": "user@example.com"
    }
  },
  "creditor_address": {
    "city": "New York",
    "line1": "33 Liberty Street",
    "postal_code": "10045",
    "state": "NY"
  },
  "creditor_name": "Ian Crease",
  "currency": "USD",
  "debtor_name": "National Phonograph Company",
  "external_account_id": null,
  "id": "fednow_transfer_4i0mptrdu1mueg1196bg",
  "idempotency_key": null,
  "pending_transaction_id": "pending_transaction_k1sfetcau2qbvjbzgju4",
  "rejection": null,
  "routing_number": "101050001",
  "source_account_number_id": "account_number_v18nkfqm6afpsrvy82b2",
  "status": "complete",
  "submission": {
    "message_identification": "20250308723260130GT4LAKENDXBHQCZDWS",
    "submitted_at": "2020-01-31T23:59:59Z"
  },
  "transaction_id": "transaction_uyrp7fld2ium70oa7oi",
  "type": "fednow_transfer",
  "unique_end_to_end_transaction_reference": "9a21e10a-7600-4a24-8ff3-2cbc5943c27a",
  "unstructured_remittance_information": "Invoice 29582"
}
```
### Attributes
- `account_id` (string)
  The Account from which the transfer was sent.

- `account_number` (string)
  The destination account number.

- `acknowledgement` (dictionary, nullable)
  If the transfer is acknowledged by the recipient bank, this will contain supplemental details.

  - `acknowledgement.acknowledged_at` (string)
    When the transfer was acknowledged.

- `amount` (integer)
  The transfer amount in USD cents.

- `created_at` (string)
  The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time at which the transfer was created.

- `created_by` (dictionary, nullable)
  What object created the transfer, either via the API or the dashboard.

  - `created_by.api_key` (dictionary, nullable)
    If present, details about the API key that created the transfer.

      - `created_by.api_key.description` (string, nullable)
        The description set for the API key when it was created.

  - `created_by.category` (enum)
    The type of object that created this transfer.
    Cases:
    * `api_key` (An API key. Details will be under the `api_key` object.)
    * `oauth_application` (An OAuth application you connected to Increase. Details will be under the `oauth_application` object.)
    * `user` (A User in the Increase dashboard. Details will be under the `user` object.)

  - `created_by.oauth_application` (dictionary, nullable)
    If present, details about the OAuth Application that created the transfer.

      - `created_by.oauth_application.name` (string)
        The name of the OAuth Application.

  - `created_by.user` (dictionary, nullable)
    If present, details about the User that created the transfer.

      - `created_by.user.email` (string)
        The email address of the User.

- `creditor_address` (dictionary, nullable)
  The creditor's address.

  - `creditor_address.city` (string, nullable)
    The city, district, town, or village of the address.

  - `creditor_address.line1` (string, nullable)
    The first line of the address.

  - `creditor_address.postal_code` (string, nullable)
    The ZIP code of the address.

  - `creditor_address.state` (string, nullable)
    The address state.

- `creditor_name` (string)
  The name of the transfer's recipient. This is set by the sender when creating the transfer.

- `currency` (enum)
  The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the transfer's currency. For FedNow transfers this is always equal to `USD`.
  Cases:
  * `USD` (US Dollar (USD))

- `debtor_name` (string)
  The name of the transfer's sender. If not provided, defaults to the name of the account's entity.

- `external_account_id` (string, nullable)
  The identifier of the External Account the transfer was made to, if any.

- `id` (string)
  The FedNow Transfer's identifier.

- `idempotency_key` (string, nullable)
  The idempotency key you chose for this object. This value is unique across Increase and is used to ensure that a request is only processed once. Learn more about [idempotency](https://increase.com/documentation/idempotency-keys).

- `pending_transaction_id` (string, nullable)
  The ID for the pending transaction representing the transfer.

- `rejection` (dictionary, nullable)
  If the transfer is rejected by FedNow or the destination financial institution, this will contain supplemental details.

  - `rejection.reject_reason_additional_information` (string, nullable)
    Additional information about the rejection provided by the recipient bank.

  - `rejection.reject_reason_code` (enum)
    The reason the transfer was rejected as provided by the recipient bank or the FedNow network.
    Cases:
    * `account_closed` (The destination account is closed. Corresponds to the FedNow reason code `AC04`.)
    * `account_blocked` (The destination account is currently blocked from receiving transactions. Corresponds to the FedNow reason code `AC06`.)
    * `invalid_creditor_account_type` (The destination account is ineligible to receive FedNow transfers. Corresponds to the FedNow reason code `AC14`.)
    * `invalid_creditor_account_number` (The destination account does not exist. Corresponds to the FedNow reason code `AC03`.)
    * `invalid_creditor_financial_institution_identifier` (The destination routing number is invalid. Corresponds to the FedNow reason code `RC04`.)
    * `end_customer_deceased` (The destination account holder is deceased. Corresponds to the FedNow reason code `MD07`.)
    * `narrative` (The reason is provided as narrative information in the additional information field. Corresponds to the FedNow reason code `NARR`.)
    * `transaction_forbidden` (FedNow transfers are not allowed to the destination account. Corresponds to the FedNow reason code `AG01`.)
    * `transaction_type_not_supported` (FedNow transfers are not enabled for the destination account. Corresponds to the FedNow reason code `AG03`.)
    * `amount_exceeds_bank_limits` (The amount is higher than the recipient is authorized to send or receive. Corresponds to the FedNow reason code `E990`.)
    * `invalid_creditor_address` (The creditor's address is required, but missing or invalid. Corresponds to the FedNow reason code `BE04`.)
    * `invalid_debtor_address` (The debtor's address is required, but missing or invalid. Corresponds to the FedNow reason code `BE07`.)
    * `timeout` (There was a timeout processing the transfer. Corresponds to the FedNow reason code `E997`.)
    * `processing_error` (The transfer was rejected due to an internal Increase issue. We have been notified.)
    * `other` (Some other error or issue has occurred.)

  - `rejection.rejected_at` (string, nullable)
    The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time at which the transfer was rejected.

- `routing_number` (string)
  The destination American Bankers' Association (ABA) Routing Transit Number (RTN).

- `source_account_number_id` (string)
  The Account Number the recipient will see as having sent the transfer.

- `status` (enum)
  The lifecycle status of the transfer.
  Cases:
  * `pending_reviewing` (The transfer is pending review by Increase.)
  * `canceled` (The transfer has been canceled.)
  * `reviewing_rejected` (The transfer has been rejected by Increase.)
  * `requires_attention` (The transfer requires attention from an Increase operator.)
  * `pending_approval` (The transfer is pending approval.)
  * `pending_submitting` (The transfer is queued to be submitted to FedNow.)
  * `pending_response` (The transfer has been submitted and is pending a response from FedNow.)
  * `complete` (The transfer has been sent successfully and is complete.)
  * `rejected` (The transfer was rejected by the network or the recipient's bank.)

- `submission` (dictionary, nullable)
  After the transfer is submitted to FedNow, this will contain supplemental details.

  - `submission.message_identification` (string)
    The FedNow network identification of the message submitted.

  - `submission.submitted_at` (string, nullable)
    The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time at which the transfer was submitted to FedNow.

- `transaction_id` (string, nullable)
  The Transaction funding the transfer once it is complete.

- `type` (string)
  A constant representing the object's type. For this resource it will always be `fednow_transfer`.

- `unique_end_to_end_transaction_reference` (string)
  The Unique End-to-end Transaction Reference ([UETR](https://www.swift.com/payments/what-unique-end-end-transaction-reference-uetr)) of the transfer.

- `unstructured_remittance_information` (string)
  Unstructured information that will show on the recipient's bank statement.

## List FedNow Transfers
GET /fednow_transfers

### Example
```curl
curl \
  --url "${INCREASE_URL}/fednow_transfers?account_id=account_in71c4amph0vgo2qllky" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"
```

### Query Parameters
- `cursor` (string, optional)
  Return the page of entries after this one.

- `limit` (integer, optional)
  Limit the size of the list that is returned. The default (and maximum) is 100 objects.

- `account_id` (string, optional)
  Filter FedNow Transfers to those that originated from the specified Account.

- `external_account_id` (string, optional)
  Filter FedNow Transfers to those made to the specified External Account.

- `idempotency_key` (string, optional)
  Filter records to the one with the specified `idempotency_key` you chose for that object. This value is unique across Increase and is used to ensure that a request is only processed once. Learn more about [idempotency](https://increase.com/documentation/idempotency-keys).

- `status.in` (array of enums, optional)
  Return results whose value is in the provided list. For GET requests, this should be encoded as a comma-delimited string, such as `?in=one,two,three`.
  Cases:
  * `pending_reviewing` (The transfer is pending review by Increase.)
  * `canceled` (The transfer has been canceled.)
  * `reviewing_rejected` (The transfer has been rejected by Increase.)
  * `requires_attention` (The transfer requires attention from an Increase operator.)
  * `pending_approval` (The transfer is pending approval.)
  * `pending_submitting` (The transfer is queued to be submitted to FedNow.)
  * `pending_response` (The transfer has been submitted and is pending a response from FedNow.)
  * `complete` (The transfer has been sent successfully and is complete.)
  * `rejected` (The transfer was rejected by the network or the recipient's bank.)

- `created_at.after` (string, optional)
  Return results after this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp.

- `created_at.before` (string, optional)
  Return results before this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp.

- `created_at.on_or_after` (string, optional)
  Return results on or after this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp.

- `created_at.on_or_before` (string, optional)
  Return results on or before this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp.

### Returns a FedNow Transfer List object:
```json
{
  "data": [
    {
      "account_id": "account_in71c4amph0vgo2qllky",
      "account_number": "987654321",
      "acknowledgement": {
        "acknowledged_at": "2020-01-31T23:59:59Z"
      },
      "amount": 100,
      "created_at": "2020-01-31T23:59:59Z",
      "created_by": {
        "category": "user",
        "user": {
          "email": "user@example.com"
        }
      },
      "creditor_address": {
        "city": "New York",
        "line1": "33 Liberty Street",
        "postal_code": "10045",
        "state": "NY"
      },
      "creditor_name": "Ian Crease",
      "currency": "USD",
      "debtor_name": "National Phonograph Company",
      "external_account_id": null,
      "id": "fednow_transfer_4i0mptrdu1mueg1196bg",
      "idempotency_key": null,
      "pending_transaction_id": "pending_transaction_k1sfetcau2qbvjbzgju4",
      "rejection": null,
      "routing_number": "101050001",
      "source_account_number_id": "account_number_v18nkfqm6afpsrvy82b2",
      "status": "complete",
      "submission": {
        "message_identification": "20250308723260130GT4LAKENDXBHQCZDWS",
        "submitted_at": "2020-01-31T23:59:59Z"
      },
      "transaction_id": "transaction_uyrp7fld2ium70oa7oi",
      "type": "fednow_transfer",
      "unique_end_to_end_transaction_reference": "9a21e10a-7600-4a24-8ff3-2cbc5943c27a",
      "unstructured_remittance_information": "Invoice 29582"
    }
  ],
  "next_cursor": "v57w5d"
}
```

## Create a FedNow Transfer
POST /fednow_transfers

### Example
```curl
curl -X "POST" \
  --url "${INCREASE_URL}/fednow_transfers" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "account_number": "987654321",
    "amount": 100,
    "creditor_address": {
      "city": "New York",
      "line1": "33 Liberty Street",
      "postal_code": "10045",
      "state": "NY"
    },
    "creditor_name": "Ian Crease",
    "debtor_name": "National Phonograph Company",
    "routing_number": "101050001",
    "source_account_number_id": "account_number_v18nkfqm6afpsrvy82b2",
    "unstructured_remittance_information": "Invoice 29582"
  }'
```

### Body Parameters
- `account_number` (string, optional)
  The creditor's account number.

- `amount` (integer, required)
  The amount, in minor units, to send to the creditor.

- `creditor_address` (dictionary, optional)
  The creditor's address.

  - `creditor_address.city` (string, required)
    The city, district, town, or village of the address.

  - `creditor_address.line1` (string, optional)
    The first line of the address. This is usually the street number and street.

  - `creditor_address.postal_code` (string, required)
    The postal code component of the address.

  - `creditor_address.state` (string, required)
    The US state component of the address.

- `creditor_name` (string, required)
  The creditor's name.

- `debtor_address` (dictionary, optional)
  The debtor's address.

  - `debtor_address.city` (string, required)
    The city, district, town, or village of the address.

  - `debtor_address.line1` (string, optional)
    The first line of the address. This is usually the street number and street.

  - `debtor_address.postal_code` (string, required)
    The postal code component of the address.

  - `debtor_address.state` (string, required)
    The US state component of the address.

- `debtor_name` (string, required)
  The debtor's name.

- `external_account_id` (string, optional)
  The ID of an External Account to initiate a transfer to. If this parameter is provided, `account_number` and `routing_number` must be absent.

- `require_approval` (boolean, optional)
  Whether the transfer requires explicit approval via the dashboard or API.

- `routing_number` (string, optional)
  The creditor's bank account routing number.

- `source_account_number_id` (string, required)
  The Account Number to include in the transfer as the debtor's account number.

- `unstructured_remittance_information` (string, required)
  Unstructured remittance information to include in the transfer.

## Retrieve a FedNow Transfer
GET /fednow_transfers/{fednow_transfer_id}

### Example
```curl
curl \
  --url "${INCREASE_URL}/fednow_transfers/fednow_transfer_4i0mptrdu1mueg1196bg" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"
```
### Path Parameters
- `fednow_transfer_id` (string, required)
  The identifier of the FedNow Transfer.

## Approve a FedNow Transfer
POST /fednow_transfers/{fednow_transfer_id}/approve

### Example
```curl
curl -X "POST" \
  --url "${INCREASE_URL}/fednow_transfers/fednow_transfer_4i0mptrdu1mueg1196bg/approve" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"
```
### Path Parameters
- `fednow_transfer_id` (string, required)
  The identifier of the FedNow Transfer to approve.

## Cancel a pending FedNow Transfer
POST /fednow_transfers/{fednow_transfer_id}/cancel

### Example
```curl
curl -X "POST" \
  --url "${INCREASE_URL}/fednow_transfers/fednow_transfer_4i0mptrdu1mueg1196bg/cancel" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"
```
### Path Parameters
- `fednow_transfer_id` (string, required)
  The identifier of the pending FedNow Transfer to cancel.