> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anchorage.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ACH credit transfer

> Push USD by ACH from your USD wallet to a bank trusted destination without per-transaction quorum.

<Note>
  ACH is in development. The API endpoints and webhooks on this page are provided for reference and are subject to change. Reach out to your relationship manager for beta access. See [USD rails](/knowledge-base/platform/users/usd-banking#usd-rails).
</Note>

An ACH credit transfer, also called an **originated credit** or **push**, sends USD from your [USD wallet](/knowledge-base/platform/users/usd-banking) to a US bank account saved as a trusted destination, over the Automated Clearing House (ACH) network. You start the payment, and there's no quorum approval on each request. To let an outside party pull funds from your wallet instead, see [ACH debit transfer](/knowledge-base/platform/developers/move-money/transfer/usd/ach/debit).

`POST /v2/transfers` requires the `Transfer funds` permission and an Ed25519 request signature.

## Set up a trusted destination

As with a [domestic wire transfer](/knowledge-base/platform/developers/move-money/transfer/usd/wire/domestic), an ACH credit can only go to a bank trusted destination. Create one with `POST /v2/trusted_destinations`, setting `type` to `fiat` and `fiat.beneficiaryBank.code` to `ABA`. See [Create a USD trusted destination via API](/knowledge-base/platform/developers/move-money/setup/trusted-destinations#create-a-usd-trusted-destination-via-api).

Your API key's permission group must have **Any trusted destination** selected under **Transfers outside Anchorage**. See [Connect a trusted destination to an API key](/knowledge-base/platform/developers/move-money/setup/trusted-destinations#connect-a-trusted-destination-to-an-api-key).

## Send an ACH credit transfer

Set `destination.type` to `TRUSTED_DESTINATION` and `destination.id` to the fiat trusted destination ID, and include `assetParametersFiatTrustedDestination`. To find the destination ID, call `GET /v2/trusted_destinations` and filter on `type == "fiat"`.

```json theme={null}
{
  "source": {
    "id": "{source wallet ID}",
    "type": "WALLET"
  },
  "destination": {
    "id": "{fiat trusted destination ID}",
    "type": "TRUSTED_DESTINATION"
  },
  "assetType": "USD_R",
  "amount": "{quantity}",
  "transferMemo": "{memo}",
  "assetParametersFiatTrustedDestination": {
    "purpose": "{purpose}",
    "memo": "{note to beneficiary}"
  }
}
```

Staging uses the `USD_R` asset type and production uses `USD`. The fields, `purpose` values, and response match a domestic wire transfer. See [Domestic wire transfer](/knowledge-base/platform/developers/move-money/transfer/usd/wire/domestic#fields).


## Related topics

- [ACH debit transfer](/knowledge-base/platform/developers/move-money/transfer/usd/ach/debit.md)
- [ACH credit withdrawal](/knowledge-base/platform/developers/move-money/withdraw/usd/ach/credit.md)
- [Webhooks](/knowledge-base/porto/api-reference/v3/webhooks.md)
- [ACH debit withdrawal](/knowledge-base/platform/developers/move-money/withdraw/usd/ach/debit.md)
- [Invoices](/knowledge-base/platform/users/web-dashboard/invoices.md)
