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

# Create Beneficiary

> Create and save beneficiaries for transfers across multiple payment methods

## Overview

The Create Beneficiary endpoint allows you to save recipient information for future transfers. You can create beneficiaries for bank accounts, crypto wallets, and Interac e-Transfer recipients.

<Note>
  Saved beneficiaries can be reused for future transfers without having to
  re-enter the recipient details each time.
</Note>

## Endpoint

```bash theme={null}
POST /beneficiaries
```

## Supported Beneficiary Types

<CardGroup cols={2}>
  <Card title="Bank Accounts" icon="building-columns">
    * NGN bank accounts

    * USD bank accounts (ACH/Wire)

    * International bank accounts
  </Card>

  <Card title="Crypto Wallets" icon="wallet">
    * USDT addresses

    * USDC addresses

    * Multiple chains such as AVAX, ETH, TRX, DOGE, ADA, SOL are supported
  </Card>

  <Card title="Interac" icon="money-bill-transfer">
    * Canadian recipients via Interac
  </Card>
</CardGroup>

## Create NGN Bank Account Beneficiary

### Request Parameters

<ParamField body="type" type="string" required>
  Must be "bank\_account"
</ParamField>

<ParamField body="currency" type="string" required>
  Must be "NGN"
</ParamField>

<ParamField body="account_name" type="string" required>
  Account holder's name as registered with bank
</ParamField>

<ParamField body="account_number" type="string" required>
  10-digit Nigerian bank account number
</ParamField>

<ParamField body="bank_name" type="string" required>
  Full bank name
</ParamField>

<ParamField body="bank_code" type="string" required>
  Bank's unique code - get from [List
  Banks](/transfers/transfers/list-ngn-banks) endpoint
</ParamField>

<ParamField body="rail" type="string" required>
  Must be nuban
</ParamField>

### Example Request

```json theme={null}
{
  "type": "bank_account",
  "currency": "NGN",
  "account_name": "John Doe",
  "account_number": "0123456789",
  "bank_name": "First Bank of Nigeria",
  "bank_code": "011",
  "rail": "nuban"
}
```

## Create USD Bank Account Beneficiary

### Request Parameters

<ParamField body="type" type="string" required>
  Must be "bank\_account"
</ParamField>

<ParamField body="currency" type="string" required>
  Must be "USD"
</ParamField>

<ParamField body="routing_number" type="string" required>
  9-digit ABA routing number
</ParamField>

<ParamField body="rail" type="string" required>
  Payment rail to use ("ach" or "wire")
</ParamField>

<ParamField body="sort_code" type="string">
  Bank sort code (if required)
</ParamField>

<ParamField body="address" type="object" required>
  Beneficiary's address information

  <Expandable title="Address Fields">
    <ParamField body="line1" type="string" required>Street address</ParamField>
    <ParamField body="line2" type="string">Additional address info</ParamField>
    <ParamField body="city" type="string" required>City name</ParamField>
    <ParamField body="state" type="string" required>State code</ParamField>
    <ParamField body="country" type="string" required>2-letter country code</ParamField>
    <ParamField body="zip_code" type="string" required>ZIP/Postal code</ParamField>
  </Expandable>
</ParamField>

<ParamField body="bank_address" type="object" required>
  Bank's physical address

  <Expandable title="Bank Address Fields">
    <ParamField body="line1" type="string" required>Street address</ParamField>
    <ParamField body="line2" type="string">Additional address info</ParamField>
    <ParamField body="city" type="string" required>City name</ParamField>
    <ParamField body="state" type="string" required>State code</ParamField>
    <ParamField body="country" type="string" required>2-letter country code</ParamField>
    <ParamField body="zip_code" type="string" required>ZIP/Postal code</ParamField>
  </Expandable>
</ParamField>

### Example Request

```json theme={null}
{
  "type": "bank_account",
  "currency": "USD",
  "routing_number": "123456789",
  "rail": "ach",
  "sort_code": "123456",
  "address": {
    "line1": "15 High Road",
    "line2": "Unit 12",
    "city": "New York",
    "state": "NY",
    "country": "US",
    "zip_code": "10003"
  },
  "bank_address": {
    "line1": "20 Finance Blvd",
    "line2": "Suite 200",
    "city": "Los Angeles",
    "state": "CA",
    "country": "US",
    "zip_code": "90001"
  }
}
```

## Create Interac e-Transfer Beneficiary

### Request Parameters

<ParamField body="type" type="string" required>
  Must be "interac"
</ParamField>

<ParamField body="currency" type="string" required>
  Must be "CAD"
</ParamField>

<ParamField body="beneficiary_type" type="string" required>
  Type of recipient ("personal" or "business")
</ParamField>

<ParamField body="first_name" type="string" required>
  Recipient's first name
</ParamField>

<ParamField body="last_name" type="string" required>
  Recipient's last name
</ParamField>

<ParamField body="email" type="string" required>
  Recipient's email registered with Interac
</ParamField>

<ParamField body="phone_number" type="string">
  Recipient's phone number (optional)
</ParamField>

<ParamField body="question" type="string" required>
  Security question for manual deposits
</ParamField>

<ParamField body="answer" type="string" required>
  Answer to security question
</ParamField>

### Example Request

```json theme={null}
{
  "type": "interac",
  "currency": "CAD",
  "beneficiary_type": "personal",
  "first_name": "Alice",
  "last_name": "Smith",
  "email": "alice@example.com",
  "question": "What is your pet's name?",
  "answer": "Fluffy",
  "phone_number": "1234567890"
}
```

## Create Crypto Address Beneficiary

### Request Parameters

<ParamField body="type" type="string" required>
  Must be "crypto\_address"
</ParamField>

<ParamField body="label" type="string" required />

<ParamField body="currency" type="string" required>
  Must be one of `USDC`, `USDT`
</ParamField>

<ParamField body="chain" type="string" required>
  Multiple chains such as AVAX, ETH, TRX, DOGE, ADA, SOL are supported
</ParamField>

<ParamField body="address" type="string" required>
  Must be a supported crypto address based on the currency and chain
</ParamField>

### Example Request

```json theme={null}
{
  "type": "crypto_address",
  "label": "Test wallet",
  "currency": "USDC|USDT",
  "chain": "ETH|TRX|DOGE|ADA|SOL|AVAX",
  "address": "0x..."
}
```

## Response Format

<ResponseField name="data" type="object">
  Created beneficiary details

  <Expandable title="Response Fields">
    <ResponseField name="id" type="string">
      Unique beneficiary identifier
    </ResponseField>

    <ResponseField name="type" type="string">
      Beneficiary type
    </ResponseField>

    <ResponseField name="currency" type="string">
      Currency code
    </ResponseField>

    <ResponseField name="account_name" type="string">
      For bank accounts: Account holder name
    </ResponseField>

    <ResponseField name="account_number" type="string">
      For bank accounts: Account number
    </ResponseField>

    <ResponseField name="account_type" type="string">
      For bank accounts: Account type
    </ResponseField>

    <ResponseField name="bank_name" type="string">
      For bank accounts: Bank name
    </ResponseField>

    <ResponseField name="bank_code" type="string">
      For bank accounts: Bank code
    </ResponseField>

    <ResponseField name="routing_number" type="string">
      For USD accounts: ABA routing number
    </ResponseField>

    <ResponseField name="user_id" type="string">
      ID of creating user
    </ResponseField>
  </Expandable>
</ResponseField>

### Success Response Example

```json theme={null}
{
  "data": {
    "account_name": "Michael Asaju",
    "account_number": "8036120312",
    "account_type": "savings",
    "address": null,
    "bank_address": null,
    "bank_code": "100004",
    "bank_id": null,
    "bank_name": "OPAY",
    "bic": null,
    "currency": "NGN",
    "id": "d71efb6e-b7f5-4acd-a729-3da08e36eaed",
    "lifetime": "permanent",
    "routing_number": null,
    "sort_code": null,
    "type": "bank_account",
    "user_id": "c545cbc5-9915-4bfb-98ee-3759894feac2",
    "virtual": false
  }
}
```

## Error Handling

<AccordionGroup>
  <Accordion title="400 - Invalid Request">
    ```json theme={null}
    {
      "error": {
        "code": "invalid_request",
        "message": "Invalid parameters provided",
        "details": {
          "account_number": ["Invalid account number format"]
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="422 - Validation Error">
    ```json theme={null}
    {
      "error": {
        "code": "validation_error",
        "message": "Invalid beneficiary details",
        "details": {
          "routing_number": ["Must be 9 digits for US banks"]
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="409 - Duplicate Error">
    ```json theme={null}
    {
      "error": {
        "code": "duplicate_beneficiary",
        "message": "A beneficiary with these details already exists"
      }
    }
    ```
  </Accordion>
</AccordionGroup>

## Validation Rules

1. **NGN Bank Accounts**

   * Account numbers must be 10 digits

   * Bank code must be valid

   * Account name must match bank records

2. **USD Bank Accounts**

   * Routing numbers must be 9 digits

   * Valid US state codes required

   * ZIP codes must match state

3. **Interac e-Transfer**

   * Valid Canadian email required

   * Security question required if auto-deposit not enabled

   * Phone number must be Canadian format

<Card title="Need Help?">
  For additional assistance:

  * Check our [API Reference](/api-reference/overview)

  * Contact [Support](mailto:support@juicyway.com)

  * Review our [Error Handling Guide](/errors)
</Card>
