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

# Quickstart

> List accounts, create a contact, send an ACH, and follow it to settlement.

This walkthrough sends a standard ACH payment to a new recipient.

## Create a user API key

Public API v2 only accepts **user API keys**. In the Slash dashboard, open
[Settings → API keys](https://app.slash.com/global-settings/api-keys) and
choose **Create API key**. The secret is shown once; store it on your server.

The key acts as you, so before starting make sure your user has:

* access to the target legal entity
* access to view accounts, manage contacts, and initiate ACH transfers
* a request IP on the legal entity's enabled IP allowlist

Keys created under a legal entity's **API management** page are not accepted
by v2 and return `403 user_api_key_required`. See
[Authentication](/docs/v2/get-started/authentication) for details.

Set these values in your shell:

```bash theme={null}
export SLASH_API_KEY="..."
export SLASH_LEGAL_ENTITY_ID="le_..."
```

<Steps>
  <Step title="Choose the source balance">
    List Accounts, then list the virtual accounts in the Account you want to
    debit:

    ```bash theme={null}
    curl "https://api.slash.com/v2/accounts" \
      -H "X-API-Key: ${SLASH_API_KEY}" \
      -H "x-legal-entity: ${SLASH_LEGAL_ENTITY_ID}"

    curl --get "https://api.slash.com/v2/virtual-accounts" \
      -H "X-API-Key: ${SLASH_API_KEY}" \
      -H "x-legal-entity: ${SLASH_LEGAL_ENTITY_ID}" \
      --data-urlencode "accountId=sa_group_..."
    ```

    Save the selected `subaccount_...` id as `fromAccount`.
  </Step>

  <Step title="Create the contact">
    A Contact is the recipient identity. It does not contain bank instructions.

    ```bash theme={null}
    curl "https://api.slash.com/v2/contacts" \
      -X POST \
      -H "X-API-Key: ${SLASH_API_KEY}" \
      -H "x-legal-entity: ${SLASH_LEGAL_ENTITY_ID}" \
      -H "X-Idempotency-Key: contact-vendor-1042" \
      -H "Content-Type: application/json" \
      --data '{
        "name": "Acme Supplies",
        "recipientType": "vendor",
        "recipientLegalName": "Acme Supplies LLC",
        "recipientEmail": "payments@example.com"
      }'
    ```

    Save the returned `le_c_...` id.
  </Step>

  <Step title="Save the bank destination">
    Create a US bank-account Destination owned by the contact:

    ```bash theme={null}
    curl "https://api.slash.com/v2/destinations" \
      -X POST \
      -H "X-API-Key: ${SLASH_API_KEY}" \
      -H "x-legal-entity: ${SLASH_LEGAL_ENTITY_ID}" \
      -H "X-Idempotency-Key: destination-vendor-1042" \
      -H "Content-Type: application/json" \
      --data '{
        "contactId": "le_c_...",
        "type": "bank_account",
        "name": "Operating account",
        "accountNumber": "123456789",
        "routingNumber": "021000021",
        "accountType": "checking",
        "beneficiary": {
          "name": "Acme Supplies LLC",
          "address": {
            "line1": "1 Market Street",
            "city": "New York",
            "state": "NY",
            "postalCode": "10005",
            "countryCode": "US"
          }
        }
      }'
    ```

    Save the returned `le_contact_destination_...` id.
  </Step>

  <Step title="Create the ACH transfer">
    ```bash theme={null}
    curl "https://api.slash.com/v2/transfers/ach" \
      -X POST \
      -H "X-API-Key: ${SLASH_API_KEY}" \
      -H "x-legal-entity: ${SLASH_LEGAL_ENTITY_ID}" \
      -H "X-Idempotency-Key: invoice-1042-attempt-1" \
      -H "Content-Type: application/json" \
      --data '{
        "amount": {
          "amount": 1250,
          "currency": "USD"
        },
        "fromAccount": "subaccount_...",
        "destinationId": "le_contact_destination_...",
        "description": "Invoice 1042",
        "ach": {
          "speed": "standard"
        }
      }'
    ```

    The response is an ACH Transfer. Save its `transfer_intent_...` id.
  </Step>

  <Step title="Follow the transfer">
    Retrieve the Transfer to follow its lifecycle:

    ```bash theme={null}
    curl "https://api.slash.com/v2/transfers/ach/transfer_intent_..." \
      -H "X-API-Key: ${SLASH_API_KEY}" \
      -H "x-legal-entity: ${SLASH_LEGAL_ENTITY_ID}"
    ```

    Read the [ACH lifecycle](/docs/v2/money-movement/ach/lifecycle) before
    deciding which statuses are final.
  </Step>

  <Step title="Reconcile account activity">
    List every Transaction associated with the Transfer:

    ```bash theme={null}
    curl --get "https://api.slash.com/v2/transactions" \
      -H "X-API-Key: ${SLASH_API_KEY}" \
      -H "x-legal-entity: ${SLASH_LEGAL_ENTITY_ID}" \
      --data-urlencode "transferId=transfer_intent_..."
    ```

    Transaction responses use camelCase. Their signed `amountCents` values
    describe each account impact.
  </Step>
</Steps>
