# TransactionSplitStore

Type: object

Schema: [TransactionSplitStore](https://sourcey-firefly.pages.dev/api/models/transactionsplitstore/index.md)

- `type` (required)
  Reference: [TransactionTypeProperty](https://sourcey-firefly.pages.dev/api/models/transactiontypeproperty/index.md); Type: string, string
  
  enum: ["withdrawal","deposit","transfer","reconciliation","opening balance"]
  
  Example:
  
  ```json
  "withdrawal"
  ```

- `date` (required)
  Type: string, date-time
  
  Date of the transaction
  
  Example:
  
  ```json
  "2026-10-01T00:00:00+00:00"
  ```

- `amount` (required)
  Type: string, amount
  
  Amount of the transaction.
  
  Example:
  
  ```json
  "123.45"
  ```

- `description` (required)
  Type: string, string
  
  Description of the transaction.
  
  Example:
  
  ```json
  "Vegetables"
  ```

- `order` (optional)
  Type: integer, int32; nullable
  
  Order of this entry in the list of transactions.
  
  Example:
  
  ```json
  0
  ```

- `currency_id` (optional)
  Type: string, string; nullable
  
  Currency ID. Default is the source account's currency, or the user's financial administration's currency. The value you submit may be overruled by the source or destination account.
  
  Example:
  
  ```json
  "12"
  ```

- `currency_code` (optional)
  Type: string, string; nullable
  
  Currency code. Default is the source account's currency, or the user's financial administration's primary currency. The value you submit may be overruled by the source or destination account.
  
  Example:
  
  ```json
  "EUR"
  ```

- `foreign_amount` (optional)
  Type: string, amount; nullable
  
  The amount in a foreign currency.
  
  Example:
  
  ```json
  "123.45"
  ```

- `foreign_currency_id` (optional)
  Type: string, string; nullable
  
  Currency ID of the foreign currency. Default is null. Is required when you submit a foreign amount.
  
  Example:
  
  ```json
  "17"
  ```

- `foreign_currency_code` (optional)
  Type: string, string; nullable
  
  Currency code of the foreign currency. Default is NULL. Can be used instead of the foreign_currency_id, but this or the ID is required when submitting a foreign amount.
  
  Example:
  
  ```json
  "USD"
  ```

- `budget_id` (optional)
  Type: string, string; nullable
  
  The budget ID for this transaction.
  
  Example:
  
  ```json
  "4"
  ```

- `budget_name` (optional)
  Type: string, string; nullable
  
  The name of the budget to be used. If the budget name is unknown, the ID will be used or the value will be ignored.
  
  Example:
  
  ```json
  "Groceries"
  ```

- `category_id` (optional)
  Type: string, string; nullable
  
  The category ID for this transaction.
  
  Example:
  
  ```json
  "43"
  ```

- `category_name` (optional)
  Type: string, string; nullable
  
  The name of the category to be used. If the category is unknown, it will be created. If the ID and the name point to different categories, the ID overrules the name.
  
  Example:
  
  ```json
  "Groceries"
  ```

- `source_id` (optional)
  Type: string, string; nullable
  
  ID of the source account. For a withdrawal or a transfer, this must always be an asset account. For deposits, this must be a revenue account.
  
  Example:
  
  ```json
  "2"
  ```

- `source_name` (optional)
  Type: string, string; nullable
  
  Name of the source account. For a withdrawal or a transfer, this must always be an asset account. For deposits, this must be a revenue account. Can be used instead of the source_id. If the transaction is a deposit, the source_name can be filled in freely: the account will be created based on the name.
  
  Example:
  
  ```json
  "Checking account"
  ```

- `destination_id` (optional)
  Type: string, string; nullable
  
  ID of the destination account. For a deposit or a transfer, this must always be an asset account. For withdrawals this must be an expense account.
  
  Example:
  
  ```json
  "2"
  ```

- `destination_name` (optional)
  Type: string, string; nullable
  
  Name of the destination account. You can submit the name instead of the ID. For everything except transfers, the account will be auto-generated if unknown, so submitting a name is enough.
  
  Example:
  
  ```json
  "Buy and Large"
  ```

- `reconciled` (optional)
  Type: boolean
  
  If the transaction has been reconciled already. When you set this, the amount can no longer be edited by the user.
  
  Example:
  
  ```json
  false
  ```

- `piggy_bank_id` (optional)
  Type: integer, int32; nullable
  
  Optional. Use either this or the piggy_bank_name
  
  writeOnly: true

- `piggy_bank_name` (optional)
  Type: string, string; nullable
  
  Optional. Use either this or the piggy_bank_id
  
  writeOnly: true

- `bill_id` (optional)
  Type: string, string; nullable
  
  Optional. Use either this or the bill_name
  
  Example:
  
  ```json
  "112"
  ```

- `bill_name` (optional)
  Type: string, string; nullable
  
  Optional. Use either this or the bill_id
  
  Example:
  
  ```json
  "Monthly rent"
  ```

- `tags` (optional)
  Type: array; nullable
  
  Array of tags.
  
  Example:
  
  ```json
  null
  ```
  
  Items:
    Type: string, string
    
    Tag.
    
    Example:
    
    ```json
    "Barbecue preparation"
    ```

- `notes` (optional)
  Type: string, string; nullable
  
  Example:
  
  ```json
  "Some example notes"
  ```

- `internal_reference` (optional)
  Type: string, string; nullable
  
  Reference to internal reference of other systems.

- `external_id` (optional)
  Type: string, string; nullable
  
  Reference to external ID in other systems.

- `external_url` (optional)
  Type: string, string; nullable
  
  External, custom URL for this transaction.

- `sepa_cc` (optional)
  Type: string, string; nullable
  
  SEPA Clearing Code

- `sepa_ct_op` (optional)
  Type: string, string; nullable
  
  SEPA Opposing Account Identifier

- `sepa_ct_id` (optional)
  Type: string, string; nullable
  
  SEPA end-to-end Identifier

- `sepa_db` (optional)
  Type: string, string; nullable
  
  SEPA mandate identifier

- `sepa_country` (optional)
  Type: string, string; nullable
  
  SEPA Country

- `sepa_ep` (optional)
  Type: string, string; nullable
  
  SEPA External Purpose indicator

- `sepa_ci` (optional)
  Type: string, string; nullable
  
  SEPA Creditor Identifier

- `sepa_batch_id` (optional)
  Type: string, string; nullable
  
  SEPA Batch ID

- `interest_date` (optional)
  Type: string, date-time; nullable

- `book_date` (optional)
  Type: string, date-time; nullable

- `process_date` (optional)
  Type: string, date-time; nullable

- `due_date` (optional)
  Type: string, date-time; nullable

- `payment_date` (optional)
  Type: string, date-time; nullable

- `invoice_date` (optional)
  Type: string, date-time; nullable