# Step 1: Create a Primary Journal

Before we begin designing accounts, we need to define a journal within which to organize transactions.

Source: https://www.twisp.com/docs/tutorials/twisp-101/step-1

In most cases, a single [Journal](/docs/reference/graphql/types/object#journal) is enough. For Zuzu, we'll create a single "General Ledger" journal which will record all transactions.

**Request**

```graphql
mutation CreateGeneralLedger {
  createJournal(
    input: {
      journalId: "822cb59f-ce51-4837-8391-2af3b7a5fc51"
      name: "General Ledger"
      description: "Primary journal for Zuzu."
    }
  ) {
    journalId
    name
    description
    status
  }
}
```
**Response**

```json
{
  "data": {
    "createJournal": {
      "journalId": "822cb59f-ce51-4837-8391-2af3b7a5fc51",
      "name": "General Ledger",
      "description": "Primary journal for Zuzu.",
      "status": "ACTIVE"
    }
  }
}
```

> **Note:**
>
> Note that Twisp ledgers come with a pre-built "Default" journal, which is ideal for single-journal ledgers. For the purposes of illustration, we'll be using a custom Journal in this tutorial.

Now that we have a journal, we can start building the components needed to support the core use cases. Let's start by modeling **deposits** and **withdrawals**.
