| name | create_dimension_and_entry |
| tier | 2 |
| task | T17 |
| description | This skill should be used when the task asks to "create an accounting dimension", "create a custom dimension", "cree una dimensión contable", "opprett ein rekneskapsdimensjon", "créer une dimension comptable", "criar uma dimensão contábil", "Buchungsdimension erstellen", or involves creating custom accounting dimensions with values and registering journal entries (vouchers) linked to those dimensions. |
Create Custom Accounting Dimension + Journal Entry
5 calls, 3 turns. Do NOT search for existing dimensions — always create.
Turn 1: Create Dimension + Get Accounts (parallel — 2 calls)
POST /ledger/accountingDimensionName
{"dimensionName": "<dimension name from prompt>", "active": true}
Save the dimensionIndex from the response.
GET /ledger/account?number=<expense_account>,1920&fields=id,number,name
Both calls in parallel. They are independent.
Turn 2: Create BOTH Dimension Values (parallel — 2 calls)
POST /ledger/accountingDimensionValue
{"dimensionIndex": <index_from_turn1>, "displayName": "<value1>", "active": true, "showInVoucherRegistration": true}
POST /ledger/accountingDimensionValue
{"dimensionIndex": <index_from_turn1>, "displayName": "<value2>", "active": true, "showInVoucherRegistration": true}
Both calls in parallel. Both need only dimensionIndex from Turn 1. Save the id of the value that the prompt says to link to the journal entry.
Turn 3: Create Journal Entry (1 call)
POST /ledger/voucher
{
"date": "2026-03-21",
"description": "<expense description>",
"postings": [
{
"date": "2026-03-21",
"account": {"id": <expense_account_id>},
"amountGross": <amount>,
"amountGrossCurrency": <amount>,
"description": "<expense description>",
"row": 1,
"freeAccountingDimension1": {"id": <dimension_value_id>}
},
{
"date": "2026-03-21",
"account": {"id": <bank_1920_id>},
"amountGross": -<amount>,
"amountGrossCurrency": -<amount>,
"description": "Payment",
"row": 2
}
]
}
Total: 5 calls, 0 errors, 3 turns.
STRICT RULES
- Do NOT search for existing dimensions — ALWAYS create. Competition sandboxes are fresh.
- Dimension name field is
dimensionName — NOT name
- Dimension value field is
displayName — NOT name
- Values need
dimensionIndex (integer from parent dimension response)
- Link to voucher via
freeAccountingDimension1: {"id": <value_id>} — use the value mentioned in the prompt
- Postings must balance (debits + credits = 0)
- Both
amountGross AND amountGrossCurrency required on every posting
row starts from 1 (row 0 is system-reserved)
- Maximize parallelism: Turn 1 (2 parallel) → Turn 2 (2 parallel) → Turn 3 (1 call)