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

# Personal Accounts

## Overview

The **Personal Business Crossover** feature allows small business owners to efficiently manage the separation between personal and business finances. Many small business owners use personal accounts for business transactions, which can lead to financial tracking issues, tax complications, and bookkeeping overhead.

This functionality provides a structured way to:

* Connect personal accounts through Plaid or manually
* Mark personal transactions as business when necessary
* Automatically generate journal entries with appropriate ledger mappings
* Revert business transactions back to personal when needed

## Key Concepts

### Personal External Accounts

**Personal External Accounts** are financial accounts that belong to the business owner but are not primarily designated for business use. Common examples include:

* Personal bank accounts
* Personal credit cards
* Personal savings accounts

When connecting an external account, users must designate it as either **Personal** or **Business**. This designation determines how associated transactions will be treated.

### Ledger Mapping

Each Personal External Account requires specific ledger mappings:

1. **Contribution Ledger**: Used when expenses are paid from a personal account
2. **Distribution Ledger**: Used when revenue is received in a personal account

<Note> Even though the API schema does not mark these ledger IDs as strictly required, our system requires both `contribution_ledger_id` and `distribution_ledger_id` for any **Personal** external account. Without these, we cannot track contributions or distributions accurately. </Note>

## How It Works

### Connecting Personal External Accounts

Personal external accounts can be connected in two ways:

#### 1. Plaid Integration

1. The user selects their accounts through the Plaid Link component.
2. In the confirmation screen, they designate the account as **Personal**.
3. They select appropriate ledgers for Contributions and Distributions.

#### 2. Manual Creation

Users can manually create a personal external account by calling the **[Create an External Account](/api-reference/transaction/create-an-external-account)** endpoint:

```
POST /v0/business/{business_id}/external-account
```

Providing:

* Designation as `"type": personal`
* Ledger IDs for `contribution_ledger_id` and `distribution_ledger_id`

Example request:

```json theme={null}
{
  "name": "Personal Bank Account",
  "mask": "1234",
  "type": "personal",
  "source": "manual",
  "contribution_ledger_id": "ldg_123456",
  "distribution_ledger_id": "ldg_789012"
}
```

### Managing Personal Transactions

All transactions from personal accounts are automatically created with `"type": "personal"`. These transactions:

* Do not affect the business books until marked as business
* Can be filtered in the UI or API with `"type": "personal"`
* Appear in the "Personal Review" page for processing

### Marking Transactions as Business

When a personal transaction should be treated as business:

1. The user marks the transaction as business through the UI or API by calling the **[Update Transactions for a Business](/api-reference/transaction/update-transactions-for-a-business)** endpoint:

   ```
   PATCH /v0/business/{business_id}/transactions
   ```

   Example request:

   ```json theme={null}
   [
     {
       "transaction_id": "txn_WQMDNUHpBThYSNh4AprDBo",
       "type": "business"
     },
     {
       "transaction_id": "txn_ZXMPQRSfLmOaNBc5DqrEFp",
       "type": "business"
     }
   ]
   ```

2. The system automatically **generates a journal entry** to reflect the transaction on the books.

   * **For expenses paid from a personal account**:
     * **Debit**: Expense ledger (e.g., Meals, Office supplies)
     * **Credit**: Contribution ledger (representing the owner’s money contributed)

   * **For revenue received in a personal account**:
     * **Debit**: Distribution ledger (representing funds drawn by the owner)
     * **Credit**: Revenue ledger (e.g., Sales Revenue)

   From an accounting perspective:

   * Paying for a business expense from personal funds increases the business’s expenses, offset by an equity contribution.
   * Receiving business revenue in a personal account increases the business’s revenue, offset by an equity distribution (or “owner’s draw”).

### Reverting to Personal

If a transaction previously marked as business needs to be reverted:

1. The user updates the transaction’s type from `"business"` back to `"personal"` through the UI or API by calling the **[Update Transactions for a Business](/api-reference/transaction/update-transactions-for-a-business)** endpoint:

   ```
   PATCH /v0/business/{business_id}/transactions
   ```

   ```json theme={null}
   [
     {
       "transaction_id": "txn_abc123",
       "type": "personal"
     }
   ]
   ```

2. The system automatically **deletes** the associated journal entry, removing its impact on the books.

## Common Use Cases

### Case 1: Business Expenses on Personal Credit Card

A business owner pays \$100 for office supplies using their personal credit card:

1. The transaction appears as `personal` in the review page.
2. The owner marks the transaction as `business`.
3. The system creates a journal entry:
   * **Debit**: Office Supplies \$100
   * **Credit**: Owner’s Contribution \$100

### Case 2: Business Revenue in Personal Bank Account

A customer pays \$500 to the owner’s personal bank account:

1. The transaction appears as `personal` in the review page.
2. The owner marks the transaction as `business`.
3. The system creates a journal entry:
   * **Debit**: Owner’s Distribution \$500 (or “Owner’s Draw”)
   * **Credit**: Sales Revenue \$500

<Note>
  Questions? Reach out via our [Contact form](https://www.getasset.com/get-in-touch).
</Note>

<Accordion title="API Examples">
  ### Creating a Personal External Account

  Call the **[Create an External Account](/api-reference/transaction/create-an-external-account)** endpoint:

  ```
  POST /v0/business/{business_id}/external-account
  ```

  Example request:

  ```json theme={null}
  {
    "name": "Personal Bank Account",
    "mask": "1234",
    "type": "personal",
    "source": "manual",
    "contribution_ledger_id": "ldg_123456",
    "distribution_ledger_id": "ldg_789012"
  }
  ```

  ### Creating Personal Transactions

  Call the **[Create Transactions](/api-reference/transaction/create-transactions)** endpoint:

  ```
  POST /v0/business/{business_id}/transactions
  ```

  Transactions for personal external accounts are automatically marked `"personal"`.

  ### Listing Personal Transactions

  Call the **[List Transactions for a Business](/api-reference/transaction/list-transactions-for-a-business)** endpoint, filtering by type:

  ```
  GET /v0/business/{business_id}/transactions?type=personal&reviewed=false
  ```

  ### Converting Personal Transactions to Business

  Call the **[Update Transactions for a Business](/api-reference/transaction/update-transactions-for-a-business)** endpoint:

  ```
  PATCH /v0/business/{business_id}/transactions
  ```

  ```json theme={null}
  [
    {
      "transaction_id": "txn_WQMDNUHpBThYSNh4AprDBo",
      "type": "business"
    },
    {
      "transaction_id": "txn_ZXMPQRSfLmOaNBc5DqrEFp",
      "type": "business"
    }
  ]
  ```

  ### Marking Transactions as Reviewed

  Call the same **[Update Transactions for a Business](/api-reference/transaction/update-transactions-for-a-business)** endpoint, specifying `"reviewed": true`:

  ```
  PATCH /v0/business/{business_id}/transactions
  ```

  ```json theme={null}
  [
    {
      "transaction_id": "txn_WQMDNUHpBThYSNh4AprDBo",
      "reviewed": true
    },
    {
      "transaction_id": "txn_ZXMPQRSfLmOaNBc5DqrEFp",
      "reviewed": true
    }
  ]
  ```

  ### Disconnecting Personal External Accounts

  Call the **[Update External Account](/api-reference/transaction/update-external-account)** endpoint:

  ```
  PATCH /v0/business/{business_id}/external-account/{external_account_id}
  ```

  ```json theme={null}
  {
    "status": "disconnected"
  }
  ```

  <Note> (While the API also supports an `untracked` status, it is generally unused for the personal-business crossover use case.) </Note>
</Accordion>
