Skill detail
open-accounting
Supports invoices, bills, journals, charts of accounts, taxes, and accounting reports.
Inspect before use
Automated review checks relevance, not safety or endorsement. Read the source instructions before using this skill.
SKILL.md
The saved excerpt is a snapshot from review. The external source remains the complete and most current version.
---
name: open-accounting
description: |
Open Accounting integration. Manage data, records, and automate workflows. Use when the user wants to interact with Open Accounting data.
compatibility: Requires network access and a valid Membrane account (Free tier supported).
license: MIT
homepage: https://getmembrane.com
repository: https://github.com/membranedev/application-skills
metadata:
author: membrane
version: "1.0"
categories: ""
---
# Open Accounting
Open Accounting is a SaaS app that provides accounting and bookkeeping solutions. It's designed for small to medium-sized businesses to manage their finances, track expenses, and generate reports. Accountants and business owners are the primary users.
Official docs: https://www.openaccounting.org/docs/
## Open Accounting Overview
- **Customer**
- **Invoice**
- **Invoice Line**
- **Bill**
- **Bill Line**
- **Vendor**
- **Chart of Accounts**
- **Account**
- **Journal Entry**
- **Journal Line**
- **Tax Rate**
- **Payment**
- **Product**
- **Company**
- **Credit Note**
- **Debit Note**
- **Currency**
- **Budget**
- **Transfer**
- **Report**
- **User**
- **Role**
- **Session**
- **Attachment**
- **Item**
Use action names and parameters as needed.
## Working with Open Accounting
This skill uses the Membrane CLI to interact with Open Accounting. Membrane handles authentication and credentials refresh automatically — so you can focus on the integration logic rather than auth plumbing.
### Install the CLI
Install the Membrane CLI so you can run `membrane` from the terminal:
```bash
npm install -g @membranehq/cli@latest
```
### Authentication
```bash
membrane login --tenant --clientName=<agentType>
```
This will either open a browser for authentication or print an authorization URL to the console, depending on whether interactive mode is available.
**Headless environments:** The command will print an authorization URL. Ask the user to open it in a browser. When they see a code after completing login, finish with:
```bash
membrane login complete <code>
```
Add `--json` to any command for machine-readable JSON output.
**Agent Types** : claude, openclaw, codex, warp, windsurf, etc. Those will be used to adjust tooling to be used best with your harness
### Connecting to Open Accounting
Use `membrane connection ensure` to find or create a connection by app URL or domain:
```bash
membrane connection ensure "https://openaccounting.io/" --json
```
The user completes authentication in the browser. The output contains the new connection id.
This is the fastest way to get a connection. The URL is normalized to a domain and matched against known apps. If no app is found, one is created and a connector is built automatically.
If the returned connection has `state: "READY"`, skip to **Step 2**.
#### 1b. Wait for the connection to be ready
If the connection is in `BUILDING` state, poll until it's ready:
```bash
npx @membranehq/cli connection get <id> --wait --json
```
The `--wait` flag long-polls (up to `--timeout` seconds, default 30) until the state changes. Keep polling until `state` is no longer `BUILDING`.
The resulting state tells you what to do next:
- **`READY`** — connection is fully set up. Skip to **Step 2**.
- **`CLIENT_ACTION_REQUIRED`** — the user or agent needs to do something. The `clientAction` object describes the required action:
- `clientAction.type` — the kind of action needed:
- `"connect"` — user needs to authenticate (OAuth, API key, etc.). This covers initial authentication and re-authentication for disconnected connections.
- `"provide-input"` — more information is needed (e.g. which app to connect to).
- `clientAction.description` — human-readable explanation of what's needed.
- `clientAction.uiUrl` (optional) — URL to a pre-built UI where the user can complete the action. Show this to the user when present.
- `clientAction.agentInstructions` (optional) — instructions for the AI agent on how to proceed programmaticaRead the full source on GitHub (opens external page)