---
updatedAt: 2025-09-25T11:48:24.000Z
agentTools:
  projectIndex: https://developers.berkeleypayment.com/llms.txt
---

# E-Transfer Push Payments

**Step 1:** Create Account Holder

POST `{{teller_domain}}/api/v1/account_holders`

```json
{
  "type": "individual",
  "email": "john-smith1@pungle.ca",
  "first_name": "John",
  "last_name": "Smith"
}
```

**Step 2:** Tokenize Customer information

POST `{{teller_domain}}/api/v1/tokens` or `{{teller_domain}}/api/v2/tokens`

|               |          |              |                                                                                                                                                                                                                |
| ------------- | -------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Field**     | **Type** | **Required** | **Details**                                                                                                                                                                                                    |
| name          | string   | yes          | name of the person or business<br/><br/>max 60 characters                                                                                                                                                      |
| email         | string   | conditional  | email of the person or business<br/><br/>**required** for e-transfer `email` notifications                                                                                                                     |
| phone\_number | string   | conditional  | phone number of person or business<br/><br/>10 digits in length<br/><br/>do not include dashes or spaces<br/><br/>includes area code and phone number<br/><br/>**required** for e-transfer `sms` notifications |

If notification choice is **email**, the payload for tokenization looks as follows:

```json
{
  "etransfer": {
    "name": "John Smith",
    "email": "john@email.com"
  }
}
```

If notification choice is **SMS**, the payload for tokenization looks as follows:

```json
{
  "etransfer": {
    "name": "John Smith",
    "phone_number": "1234567890"
  }
}
```

**Step 3:** Create Financial Account with created token for Account Holder

POST `{{teller_domain}}/api/v1/account_holders/:id/financial_accounts`

```json
{
  "token": "ettk_BY-HbLvFocbzF8O23EF4E37121688FE9D"
}
```

**Step 4:** Create transaction with created Financial Account

Push Transaction

POST `{{teller_domain}}/api/v1/transactions/push`

|                            |          |              |                                                                                                      |
| -------------------------- | -------- | ------------ | ---------------------------------------------------------------------------------------------------- |
| **Field**                  | **Type** | **Required** | **Details**                                                                                          |
| amount                     | number   | yes          | in cents the amount you wish to send                                                                 |
| currency                   | string   | yes          | currency of the transaction                                                                          |
| product                    | string   | yes          | product of the transaction                                                                           |
| financial\_account         | string   | yes          | financial account to which you wish to send money                                                    |
| security\_question         | string   | yes          | question to answer for e-transfer payment                                                            |
| security\_question\_answer | string   | yes          | answer to the security\_question provided<br/><br/>must be between 3 to 25 characters with no spaces |

```json
{
  "amount": 2000, 
  "currency": "CAD",
  "product": "disbursements",
  "financial_account": "etransfer_136_ettk_BG-HbLvFocbzF8O33EF4E37151688FD9D",
  "security_question": "Mother's maiden name",
  "security_question_answer": "Doe"
}
```

> 📘 Related pages:
>
> [API Flows](https://bps.readme.io/reference/api-flows)\
> [Tokenization JS Library](https://bps.readme.io/reference/tokenization-js-library)\
> [E-transfer Flow](https://dash.readme.com/project/bps/v1.0/docs/e-transfer-flow)