QontoCtl

CLI and MCP server for the Qonto business banking API — manage transactions, invoices, clients, transfers, and more

QontoCtl: The Complete CLI & MCP for Qonto

CI Codecov npm version npm downloads GitHub Repo stars License

CLI and MCP server for the Qonto banking API.

This project is brought to you by Alexey Pelykh.

What It Does

QontoCtl lets AI assistants (Claude, etc.) interact with Qonto through the Model Context Protocol. It can:

  • Organizations — retrieve organization details and settings
  • Accounts — list, create, update, close bank accounts; download IBAN certificates
  • Transactions — list, search, filter bank transactions; manage transaction attachments
  • Bank Statements — list, view, and download bank statements
  • Labels — manage transaction labels and categories
  • Memberships — view team members, show current membership, invite new members
  • SEPA Beneficiaries — list, add, update, trust/untrust SEPA beneficiaries
  • SEPA Transfers — list, create, cancel transfers; download proofs; verify payees
  • Internal Transfers — create transfers between accounts in the same organization
  • Bulk Transfers — list and view bulk transfer batches
  • Recurring Transfers — list and view recurring transfers
  • Clients — list, create, update, delete clients
  • Client Invoices — full lifecycle: create, update, finalize, send, mark paid, cancel, upload files
  • Quotes — create, update, delete, send quotes
  • Credit Notes — list and view credit notes
  • Supplier Invoices — list, view, and bulk-create supplier invoices
  • Requests — list organization requests
  • Attachments — upload and view attachments
  • E-Invoicing — retrieve e-invoicing settings

Prerequisites

  • Node.js >= 24
  • A Qonto business account with API access

Installation

npm install -g qontoctl

Or run directly with npx:

npx qontoctl --help

Or install via Homebrew:

brew install qontoctl/tap/qontoctl

Quick Start

# 1. Install
npm install -g qontoctl

# 2. Create a profile with your Qonto API credentials
qontoctl profile add mycompany

# 3. Test the connection
qontoctl profile test --profile mycompany

# 4. List your accounts
qontoctl account list --profile mycompany

MCP Integration

QontoCtl implements the Model Context Protocol (MCP), letting AI assistants interact with your Qonto account through natural language.

MCP Client Configuration

Claude Desktop

Add to your Claude Desktop configuration (claude_desktop_config.json):

{
    "mcpServers": {
        "qontoctl": {
            "command": "npx",
            "args": ["qontoctl", "mcp"]
        }
    }
}
Claude Code
claude mcp add qontoctl -- npx qontoctl mcp
Cursor

Add to .cursor/mcp.json in your project root:

{
    "mcpServers": {
        "qontoctl": {
            "command": "npx",
            "args": ["qontoctl", "mcp"]
        }
    }
}
Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
    "mcpServers": {
        "qontoctl": {
            "command": "npx",
            "args": ["qontoctl", "mcp"]
        }
    }
}

Available MCP Tools

ToolDescription
Organization
org_showShow organization details including name, slug, and bank accounts
Accounts
account_listList all bank accounts for the organization
account_showShow details of a specific bank account
account_iban_certificateDownload IBAN certificate PDF for a bank account
account_createCreate a new bank account
account_updateUpdate an existing bank account
account_closeClose a bank account
Transactions
transaction_listList transactions for a bank account with optional filters
transaction_showShow details of a specific transaction
transaction_attachment_listList attachments for a transaction
transaction_attachment_addAttach a file to a transaction
transaction_attachment_removeRemove attachment(s) from a transaction
Statements
statement_listList bank statements with optional filters
statement_showShow details of a specific bank statement
Labels
label_listList all labels in the organization
label_showShow details of a specific label
Memberships
membership_listList all memberships in the organization
membership_showShow the current authenticated user's membership
membership_inviteInvite a new member to the organization
SEPA Beneficiaries
beneficiary_listList SEPA beneficiaries in the organization
beneficiary_showShow details of a specific SEPA beneficiary
beneficiary_addCreate a new SEPA beneficiary
beneficiary_updateUpdate an existing SEPA beneficiary
beneficiary_trustTrust one or more SEPA beneficiaries
beneficiary_untrustUntrust one or more SEPA beneficiaries
SEPA Transfers
transfer_listList SEPA transfers with optional filters
transfer_showShow details of a specific SEPA transfer
transfer_createCreate a SEPA transfer
transfer_cancelCancel a pending SEPA transfer
transfer_proofDownload SEPA transfer proof PDF
transfer_verify_payeeVerify a payee (Verification of Payee / VoP)
transfer_bulk_verify_payeeBulk verify payees (VoP)
Internal Transfers
internal_transfer_createCreate an internal transfer between two bank accounts
Bulk Transfers
bulk_transfer_listList bulk transfers
bulk_transfer_showShow details of a specific bulk transfer
Recurring Transfers
recurring_transfer_listList recurring transfers
recurring_transfer_showShow details of a specific recurring transfer
Clients
client_listList clients with optional pagination
client_showShow details of a specific client
client_createCreate a new client
client_updateUpdate an existing client
client_deleteDelete a client
Client Invoices
client_invoice_listList client invoices with optional filters
client_invoice_showShow details of a specific client invoice
client_invoice_createCreate a draft client invoice with client and line items
client_invoice_updateUpdate a draft client invoice
client_invoice_deleteDelete a draft client invoice
client_invoice_finalizeFinalize a client invoice (assign number)
client_invoice_sendSend a client invoice to the client via email
client_invoice_mark_paidMark a client invoice as paid
client_invoice_unmark_paidUnmark a client invoice paid status
client_invoice_cancelCancel a finalized client invoice
client_invoice_uploadUpload a file to a client invoice
client_invoice_upload_showShow upload details for a client invoice
Quotes
quote_listList quotes with optional filters
quote_showShow details of a specific quote
quote_createCreate a new quote with client and line items
quote_updateUpdate an existing quote
quote_deleteDelete a quote
quote_sendSend a quote to the client via email
Credit Notes
credit_note_listList credit notes in the organization
credit_note_showShow details of a specific credit note
Supplier Invoices
supplier_invoice_listList supplier invoices with optional filters
supplier_invoice_showShow details of a specific supplier invoice
supplier_invoice_bulk_createCreate supplier invoices by uploading files
Requests
request_listList all requests in the organization
Attachments
attachment_uploadUpload an attachment file (PDF, JPEG, PNG)
attachment_showShow details of a specific attachment
E-Invoicing
einvoicing_settingsRetrieve e-invoicing settings for the organization

Example Prompts

Once configured, you can ask your AI assistant things like:

  • "Show my Qonto account balances"
  • "List recent transactions over 1000 EUR"
  • "What were last month's card payments?"
  • "Show all team members in my organization"
  • "List bank statements for January 2026"
  • "Create a summary of this week's debits"

CLI Usage

Commands

CommandDescription
org showShow organization details
account listList bank accounts
account show <id>Show bank account details
account iban-certificate <id>Download IBAN certificate PDF
account createCreate a new bank account
account update <id>Update a bank account
account close <id>Close a bank account
transaction listList transactions with filters
transaction show <id>Show transaction details
transaction attachment list <id>List attachments for a transaction
transaction attachment add <id> <file>Attach a file to a transaction
transaction attachment remove <id> [att-id]Remove attachment(s) from a transaction
statement listList bank statements
statement show <id>Show statement details
statement download <id>Download statement PDF
label listList all labels
label show <id>Show label details
membership listList organization memberships
membership showShow current user's membership
membership inviteInvite a new member
beneficiary listList SEPA beneficiaries
beneficiary show <id>Show beneficiary details
beneficiary addCreate a new beneficiary
beneficiary update <id>Update a beneficiary
beneficiary trust <id...>Trust one or more beneficiaries
beneficiary untrust <id...>Untrust one or more beneficiaries
transfer listList SEPA transfers
transfer show <id>Show SEPA transfer details
transfer createCreate a SEPA transfer
transfer cancel <id>Cancel a pending SEPA transfer
transfer proof <id>Download SEPA transfer proof PDF
transfer verify-payeeVerify a payee (VoP)
transfer bulk-verify-payeeBulk verify payees from CSV
internal-transfer createCreate an internal transfer
bulk-transfer listList bulk transfers
bulk-transfer show <id>Show bulk transfer details
recurring-transfer listList recurring transfers
recurring-transfer show <id>Show recurring transfer details
client listList clients
client show <id>Show client details
client createCreate a new client
client update <id>Update a client
client delete <id>Delete a client
client-invoice listList client invoices
client-invoice show <id>Show client invoice details
client-invoice createCreate a draft client invoice
client-invoice update <id>Update a draft client invoice
client-invoice delete <id>Delete a draft client invoice
client-invoice finalize <id>Finalize client invoice and assign number
client-invoice send <id>Send client invoice to client via email
client-invoice mark-paid <id>Mark client invoice as paid
client-invoice unmark-paid <id>Unmark client invoice paid status
client-invoice cancel <id>Cancel a finalized client invoice
client-invoice upload <id> <file>Upload a file to a client invoice
client-invoice upload-show <id> <upload-id>Show upload details for a client invoice
quote listList quotes
quote show <id>Show quote details
quote createCreate a new quote
quote update <id>Update a quote
quote delete <id>Delete a quote
quote send <id>Send quote to client via email
credit-note listList credit notes
credit-note show <id>Show credit note details
supplier-invoice listList supplier invoices
supplier-invoice show <id>Show supplier invoice details
supplier-invoice bulk-createCreate supplier invoices from files
einvoicing settingsShow e-invoicing settings
request listList all requests
attachment upload <file>Upload an attachment file
attachment show <id>Show attachment details
auth setupConfigure OAuth client credentials
auth loginStart OAuth login flow
auth statusDisplay OAuth token status
auth refreshRefresh the OAuth access token
auth revokeRevoke OAuth consent and clear tokens
profile add <name>Create a named profile
profile listList all profiles
profile show <name>Show profile details (secrets redacted)
profile remove <name>Remove a named profile
profile testTest credentials
completion bashGenerate bash completions
completion zshGenerate zsh completions
completion fishGenerate fish completions
mcpStart MCP server on stdio

Global Options

OptionDescription
-p, --profile <name>Configuration profile to use
-o, --output <format>Output format: table (default), json, yaml, csv
--page <number>Fetch a specific page of results
--per-page <number>Results per page
--no-paginateDisable auto-pagination
--verboseEnable verbose output
--debugEnable debug output (implies --verbose)

Configuration

QontoCtl supports two authentication methods:

  • API Key — read-only access using your organization slug and secret key
  • OAuth 2.0 — full access including write operations and SCA; see the OAuth App Setup Guide

Profile Format

All configuration files use the same YAML format:

# API Key authentication
api-key:
    organization-slug: acme-corp-4821
    secret-key: your-secret-key

# OAuth 2.0 authentication (see docs/oauth-setup.md)
oauth:
    client-id: your-client-id
    client-secret: your-client-secret

Resolution Order

Without --profile:

  1. QONTOCTL_* environment variables (highest priority)
  2. .qontoctl.yaml in current directory
  3. ~/.qontoctl.yaml (home default)

With --profile acme:

  1. QONTOCTL_ACME_* environment variables (highest priority)
  2. ~/.qontoctl/acme.yaml

Environment Variables

Environment variables override file values. Without --profile:

VariableDescription
QONTOCTL_ORGANIZATION_SLUGOrganization slug
QONTOCTL_SECRET_KEYAPI secret key
QONTOCTL_CLIENT_IDOAuth client ID
QONTOCTL_CLIENT_SECRETOAuth client secret
QONTOCTL_ACCESS_TOKENOAuth access token
QONTOCTL_REFRESH_TOKENOAuth refresh token
QONTOCTL_ENDPOINTCustom API endpoint
QONTOCTL_STAGING_TOKENStaging token (activates sandbox URLs)

With --profile <name>, prefix becomes QONTOCTL_{NAME}_ (uppercased, hyphens replaced with underscores). For example, --profile acme reads QONTOCTL_ACME_ORGANIZATION_SLUG.

Debug Mode

The --verbose and --debug flags enable wire-level logging to stderr:

qontoctl --verbose transaction list   # request/response summaries
qontoctl --debug transaction list     # full headers and response bodies

Security note: --debug logs full API response bodies. Known sensitive fields (IBAN, BIC, balance) are automatically redacted, but responses may still contain other financial data. Do not use --debug in shared environments or pipe debug output to files accessible by others.

Disclaimer

qontoctl is an independent project not affiliated with, endorsed by, or officially connected to Qonto or Qonto SAS.

Qonto is a trademark of Qonto SAS.

License

AGPL-3.0-only

What AGPL means for you

  • Using qontoctl as a CLI tool or MCP server does not make your code AGPL-licensed. Running the tool, scripting around it, or connecting it to your applications is normal use — no license obligations arise.
  • Using @qontoctl/core as a library (importing it into your code) means your combined work is covered by AGPL-3.0. If you distribute that combined work, you must make its source available under AGPL-compatible terms.
  • Modifying and distributing qontoctl itself requires you to share your changes under AGPL-3.0.
  • Commercial licensing is available if AGPL does not fit your use case — contact the maintainer.

関連サーバー