- Brand
- Unknown
- Category
- Pending
- Primary Subcategory
- Accounting & Bookkeeping
Integration details
Description
Ledg is bookkeeping for Canadian solo businesses and small corporations. Connect your Ledg account to ask about your books and to prepare the everyday work that keeps them current. Ask about sales, expenses, GST/HST and PST collected, account balances, transactions by date, amount or supplier, entries still waiting for a category, and upcoming tax deadlines. For a business that is not incorporated, you can also see a T2125 preview built from confirmed entries. Figures such as the T2125 preview are worked out from your books by fixed rules; they are not tax advice, and you or your accountant decide what to claim. Prepare work for your review: save receipts, invoices and bills so Ledg links each one to its bank transaction, record a purchase you made with your own money, add a receipt's supplier, tax and items to a transaction, set categories, record money between you and the business as personal, and add the lines of a bank or credit card statement after Ledg checks them against the opening and closing balances printed on it. Entries prepared this way wait in Stage, Ledg's review queue, and count toward your statements and sales tax totals only after you confirm them in Ledg. A saved receipt waits for its bank transaction and is linked to it when it arrives. With the settings permission, which Ledg's consent screen lists on its own line, it can also update business settings such as province, year end and sales tax registration, set a revenue goal and, for a business that is not incorporated, update the T2125 details you keep in Ledg, such as kilometres, home office and your other income. Those changes apply right away, as if you made them in Ledg. Ledg cannot confirm an entry for you, move money, or file anything with the CRA or a province. Requires a Ledg account with AI agent access for your business.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Accounting & Bookkeeping
- Secondary Subcategories
- None listed
- Brand
- Unknown
- Access
- Account required
- First tracked
- 2026-10-29
- Tool count
- 37
- Market
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Ledg
Get updates when Ledg’s Discoverability Score or category rank changes.
Competing in ChatGPT Accounting & Bookkeeping
View Category37 tools agents can invoke
Leaves a short note on one entry for the owner and their accountant to read: why a category was chosen, what is missing, such as a receipt, or a question. Works on an entry waiting in Stage and on a confirmed entry in the Ledger, because a note is kept beside the entry and never changes it: the amount, date, supplier, category, tax, status and every total stay as they are. The note shows in the entry's Notes in Ledg, marked as written by an AI agent under this connection's name. A note does not hold the entry in Stage or wait for an answer; a question that has to hold a Stage entry until the owner answers it goes in noteForOwner on record_expense or record_receipt_detail. Takes an entry id from find_transactions, find_uncategorized_transactions or list_entry_notes; a transaction with status in_bank_list in find_transactions is still in the owner's bank list, not an entry, and is refused. Refuses an empty note, one over 1000 characters, an entry that does not belong to the connected user, and a business on the Free plan. The same words already left on the entry by this connection are not added again, and alreadyOnEntry says so. Returns noteId, entryId, author, note as saved, createdAt and notesOnEntry, how many notes the entry has now. A note by an AI agent never keeps a charge the bank no longer lists out of Ledg's leave-out.
add_entry_note
Adds every line of one bank or credit card statement, as read by the caller, to the owner's Stage. Ledg does not read statement files itself. First, the lines added to the opening balance must land exactly on the closing balance, and each line sent with a running balance must agree with the line before it. Otherwise nothing is written, and the reply gives the reason and, where it can, the first line that disagrees. Balances must be as printed: one worked out from the amounts always agrees and would hide a missed line. The statement is filed to the account whose last four digits match accountLast4; an accountId whose digits differ from the statement's is refused. With a connected bank, one sent with neither accountLast4 nor accountId is refused, since lines on no account never meet the bank's copies; noAccountNumberPrinted true files a statement that prints no number. Lines already in the books (bank feed or an earlier statement) are skipped, so sending a statement twice adds nothing twice. A line matching a transaction waiting in the owner's bank list is paired with it. Added lines have no tax (a statement shows none) and no category unless an owner's vendor rule sets one. Nothing is committed. A statement filed by mistake is taken back out whole with undo_bank_statement. Returns statementId, added, alreadyInBooks, matchedBankTransactions, lines, period, filedToAccount, everyLineCheckedAgainstARunningBalance and closedPeriods (lines in periods the owner closed).
record_bank_statement
Changes the T2125 details of a business that is not incorporated, kept under Settings, Tax profile: industryCode, mainProductOrService, incomeType, businessProvince, firstT2125Year, the monthly lease payment, class balances from before Ledg, and for one taxYear the kilometres, the home office, a partnership's share, partners and T5013 answers, the owner's pay from a job, other income, deductions, which CRA instalment reminders came with their amounts, where the owner lived on December 31 and the Quebec answers, and, after the owner says so, which instalments are paid. A Capital Asset's class, vehicle kind and business use are set by categorize_entries in Stage and by the owner in Ledg, not here. Fields left out stay; null clears one. profileVersion and yearVersion, as get_tax_profile returned them, are required with the fields they guard. The rules are Settings' own: a call with anything invalid changes nothing and names every problem. Everything is written in one step and listed in the owner's Activity under this connection's name. Refuses a corporation, another user's or a Free plan business, and a version that is no longer current (changed_meanwhile). Returns changed (field, taxYear, before, after), unchanged, effects (lines 9945, 9281 and 9936 and the GST/HST credits for taxYear, before and after) and unanswered. Its effects come from the owner's books and answers by fixed rules and are not tax advice; the owner or their accountant decides what to claim and file.
update_tax_profile
Changes settings of one business in Ledg: province, fiscalYearEnd, incorporationDate, businessNumber, gstRegistered, gstRegisteredSince, gstFilingFrequency, gstQuickMethod, pstRegistered, pstFilingFrequency, pstPeriodEndMonth, hasPayroll and takesDividends. Settings left out stay as they are. null for a filing frequency or pstPeriodEndMonth means not known. name, entityType and businessKind are changed by the owner in Ledg under Settings. A call with anything invalid changes nothing and names every problem: a business that is not incorporated keeps a December 31 year end and pays no dividends; dates are real, gstRegisteredSince not in the future; PST, RST or QST registration exists only in BC, MB, SK and QC, with a frequency that province assigns (none in Quebec with GST/HST registration) and, in BC only, pstPeriodEndMonth; the GST/HST registration date, frequency and Quick Method need GST/HST registration. Turning GST/HST or PST off clears the settings that depend on it, and replacing a PST frequency clears pstPeriodEndMonth unless it is sent. Only settings that differ from what is on file are written, and the change is recorded in the owner's Activity under this connection's name. Refuses a business that is not the connected user's or is on the Free plan. Returns changed (field, before, after, and followsFrom for a setting another one changed), unchanged (settings sent that already held it), deadlines (ids added, removed and moved) and unanswered, the facts still missing.
update_business_profile
Searches the transactions of one business by date, amount or supplier. For a receipt, invoice or bill: record_receipt_detail writes it onto a result; record_expense saves one with no result yet. Covers every entry whatever its status (waiting, categorized, confirmed, or left_out: left out of the books by the owner, inBooks false, outOfBooks says why), and posted bank transactions waiting in the owner's bank list (status in_bank_list, inBooks false). New bank transactions usually move into Stage on their own. Pending charges, and bank transactions the owner left out (leftOut true lists them) or that are flagged as a possible match for an entry, are not listed from the bank list. A bank's date can be a few days after the receipt's, and a purchase in another currency carries the converted amount. With date, results are ordered closest to it first; otherwise newest first. Needs one of date, periodStart, periodEnd, amount or vendor. Refuses a date that does not exist, and an amount, amountTolerance or windowDays that is not a number. Returns up to limit transactions, each with id, date, vendor, bankDescriptor, amount, status, category, displayLabel (the category as the owner sees it), inBooks, fromBankFeed, enteredByAssistant (an AI agent typed it), hasReceiptDetail and canRecordReceiptDetail, and more when further matches were not listed. record_receipt_detail takes the id of any result whose canRecordReceiptDetail is true; committed and left-out entries have it false.
find_transactions
Lists entries of one business that are waiting in Stage (status waiting) or have no category, most recent first, up to 100. Entries a vendor rule already categorized are not in this list, nor is a statement or file line the owner left out of the books as dated before they start; find_transactions searches every entry. A committed entry with no category can appear, with canCategorize false. Returns count, total (every matching entry), hasMore when more than 100 match, and for each entry: id, date, vendor, description, amount, status, category, displayLabel (how Ledg shows the category to the owner, such as Owner Draw for a sole proprietor's Owner Withdrawal), gst and pst (null means not known yet) and canCategorize. canCategorize is true when categorize_entries can set the entry's category from this connection: the connection can write, the entry is not committed, and its category was not chosen by the owner. Entries leave this list once categorized, so a later call reaches older ones.
find_uncategorized_transactions
Lists committed (confirmed) money-out entries between two dates that have no PST recorded, for a business in a province with PST, RST or QST (BC, MB, SK, QC). They are candidates to review for PST self-assessment, for example goods bought from a supplier outside the province. Not every candidate owes PST: bank fees, wages, rent, interest and many services usually do not. For a business in QC the answer carries a note: one registered for QST claims QST back as input tax refunds and self-assesses only property it does not use only in its commercial activities, so there a candidate is mostly QST a receipt shows that the books do not have yet. Owner withdrawals, loan repayments, transfers, tax remittances, owner deposits and loan proceeds are left out; capital asset purchases are kept. Entries still in Stage are not included. For a business in another province, returns no candidates and says why. Refuses a date that does not exist and a periodStart after periodEnd. Returns candidateCount (every candidate), truncated, and up to the oldest 200 candidates, each with id, date, vendor, description, amount, gst and category; when truncated is true, next says which periodStart lists the rest.
find_purchases_without_pst
Returns the T2125 details of a business that is not incorporated, in Settings, Tax profile. profile: industryCode with its NAICS Canada 2022 title, mainProductOrService, incomeType, businessAddress, firstT2125Year, vehicleLeaseMonthly and profileVersion. For taxYear: the kilometres (business, total, through for a figure so far), the home office (used, qualifies, livedIn, hours, days, months, floor areas, home costs, carryforward), the business-use share each gives, carriedOver for figures copied before October 2026 and not yet confirmed, residence (the province on December 31 and what it decides) and yearVersion. vehicles lists Capital Asset entries that are vehicles; capitalAssets lists Capital Asset entries with class, vehicle kind, business use when bought, committed and closedPeriod; balancesBeforeLedg lists saved class balances and versions. For a partnership, partnership holds the owner's share, the other partners, the T5013 answers and slip, who pays the home costs and its end date. personalTax holds the owner's other income and instalment answers (CRA, and Revenu Québec in Quebec), the estimate or why there is none, and the instalments of taxYear and this year. unanswered lists what the T2125 for taxYear still needs. Its figures come from the owner's books and answers by fixed rules and are not tax advice; the owner or their accountant decides what to claim and file. Refuses a corporation, another user's or a Free plan business, and a year outside 2000 to this year.
get_tax_profile
Works out the balance of one financial account at the end of a given date: the account's opening balance minus the sum of committed (confirmed) entries on that account dated from its opening balance date through asOf. Entries store money out as positive and money in as negative, so money out lowers the balance and money in raises it. Entries still in Stage are not included, so the result can differ from the bank's balance until they are committed. Refuses an accountId that is not an account of this business and a date that does not exist. Returns openingBalance, openingBalanceDate, movement (money in minus money out) and balance, in CAD, and closedThrough: the day through which the owner has closed this account's books against the bank, or null. When committed entries in the range are ones the bank no longer lists on their account, bankNoLongerLists names them and the totals include them.
get_account_balance
Returns the revenue goal of one business and how its books stand against it, the reading the owner's Overview in Ledg shows. goal is null when none is set. Otherwise it holds cadence (month: a monthly amount to reach by targetDate; year: a total for the fiscal year targetDate falls in), targetCents, targetDate, targetLine (such as $3,000 a month by Dec 31), setBy, and plan: the owner's working back from the target, with its chain in words, its total, and whether that total matches the target. Revenue is money in from customers as the income statement counts it, from committed entries only: never owner deposits, loans or transfers. standing gives revenue by month, with booksNote when later months are not complete yet, and, with a goal, a verdict: ahead (projected at least 110% of the target), on-pace or behind, with statusLine and numberLine. The projection is a least-squares line through the last 3 to 6 complete months, or the average of 1 or 2. While the books are not complete through the end of last month (an entry waiting in Stage holds the date back), verdict is not-judged, with mustReach, the date the books must reach, and why. Once the target month has ended the verdict is final and reads the books alone. set_business_goal sets a goal, on a connection the owner approved to change settings.
get_business_goal
Returns one business's settings as Ledg has them, which its deadlines are worked out from. profile holds name, entityType, businessKind, province, fiscalYearEnd (month-day, such as 12-31), incorporationDate (the start date for a business that is not incorporated), businessNumber, gstRegistered, gstRegisteredSince, gstFilingFrequency, gstQuickMethod, pstRegistered, pstFilingFrequency, pstPeriodEndMonth, hasPayroll and takesDividends; null means not known. unanswered lists the facts Ledg lacks, assumes or doubts, each with field, question, why (what the answer changes, with what is on file), choices where the answer is one of a set, and tool: the tool that records it, or null with settingsUrl when this connection cannot. Examples: a PST frequency or the month a BC PST period ends in; a GST/HST frequency assumed yearly; a start date that is the day the business joined Ledg. For a business that is not incorporated it also lists, with taxYear, where the owner lived on December 31, the Quebec questions it raises, and what the T2125 needs: industry code, home office, kilometres, each Capital Asset's class and business use. documents lists the minute book's documents (id, section, title, filename, mimeType, uploadedAt) for read_minute_book_document. deadlines lists the deadlines these settings produce now, each with id, name and dueDate. update_business_profile takes every setting here except name, entityType and businessKind, on a connection the owner approved to change settings.
get_business_profile
Totals the sales tax recorded on money a business received between two dates, inclusive, on the sales get_sales counts. Committed (confirmed) entries only. Money received counts under a revenue category, a custom category or none; owner deposits, loan proceeds and other balance-sheet categories are left out. taxType gst reads the GST/HST column, pst the PST column (also RST and QST); hst is read as gst and qst or rst as pst, with a taxTypeNote. Refuses another taxType, a date that does not exist and a periodStart after periodEnd. Returns taxType, totalCollected in CAD, entryCount and entries (oldest first, up to 100, with truncated when there are more: id, date, vendor, amount, tax). Tax on money paid back to a customer is not taken off totalCollected: it is refundedToCustomers, with refundCount (line 107 of the GST/HST return, Box I of a BC PST return). For gst of a registered business, gstReturn gives the return's lines for the period (see taxType). The totals are what the books hold, not a filed return. When committed entries in the range are ones the bank no longer lists on their account, bankNoLongerLists names them and the totals include them.
get_sales_tax_collected
Totals a business's expenses between two dates, inclusive, as its income statement counts them. Counts committed (confirmed) entries only; entries still in Stage are not included. Without category: every expense category, and money out with no category or a custom one. Money back from a supplier under an expense category is a refund and is subtracted; a category can total below zero when refunds are more than its costs. For a business registered for GST/HST on the regular method the GST/HST paid is left out, since it is claimed back as an input tax credit, and so is QST paid by a Quebec QST registrant; on the Quick Method, or with no registration, it stays in. Meals keep half that tax, and a purchase before the GST/HST registration date keeps all of it. Balance-sheet categories (owner withdrawals, loans, transfers, tax remittances, capital assets) are left out and counted in excludedNonPlCount; byCategory breaks the total down, entries with no category under (uncategorized). With category: only entries with exactly that label; a label that is not an expense category totals the money out under it as recorded. Amounts are before any deduction limit (the 50% on meals). Refuses a category not among this business's labels (one differing only in case is named), a date that does not exist, and a periodStart after periodEnd. Returns totalExpenses in CAD, entryCount, refundCount, excludedNonPlCount and taxBasis, a sentence saying which tax the total leaves out.
get_expenses
Totals a business's sales between two dates, inclusive, as its income statement counts them. Counts committed (confirmed) entries only; entries still in Stage are not included. Counts entries with a revenue category, and money in with no category or a custom one. Money paid back to a customer under a revenue category is a refund and is subtracted. For a business registered for GST/HST on the regular method the GST/HST collected is left out, and for a PST or RST registrant, or a QST registrant off the Quick Method, the PST collected is left out too; get_sales_tax_collected totals that tax on the same sales, and returns the tax on refunds paid to customers separately. On the Quick Method, or with no registration, the GST/HST (and a Quebec business's QST) stays in. Owner deposits, loan proceeds, transfers and other balance-sheet categories are left out and counted in excludedNonRevenueCount. Refuses a date that does not exist and a periodStart after periodEnd. Returns totalSales in CAD, entryCount, refundCount, excludedNonRevenueCount and taxBasis, a sentence saying which tax the total leaves out. When committed entries in the range are ones the bank no longer lists on their account, bankNoLongerLists names them and the totals include them.
get_sales
Links a payment from a corporation's or partnership's account to the purchases it pays the owner back for: purchases recorded with record_expense paidPersonally. The payment is money out to the owner (a transfer to their own account, cash or a cheque) or a payment on the owner's own card that is not in Ledg, in Stage or still in the owner's bank list (find_transactions), which moves it into Stage. Its category becomes Owner Withdrawal. purchases lists entry ids, each with an optional amount, and replaces the payment's links; an empty list removes them; left out, the payment keeps its links and the oldest purchases still owed are added, up to the payment. A purchase is owed its business part: a partly personal cost only the share for the business. The GST/HST and QST on a linked purchase come back on the return for the payment's period once both are committed and, for a corporation, once the owner has said in Ledg whether it pays them a salary or director's fees. Refuses links for a sole proprietorship (an empty list still unlinks), a committed payment, one left out of the books, a merchant purchase, a payment to a card or account in Ledg, money in, a purchase named twice, and a purchase dated after the payment or not paid personally. Writes to Stage only and never commits. Each call is logged in the owner's Activity first; if that fails, nothing changes. Returns linked, leftAsWithdrawal, owedToOwner and gst.
link_owner_pay_back
Lists bank and credit card statement PDFs the owner added in Ledg on the web for an AI agent to read, oldest first. A PDF leaves the list once record_bank_statement accepts the lines read from it with its statementUploadId; a refused reading leaves it waiting. Use when the owner asks to go through their waiting statements. read_statement_file takes the statementUploadId and returns the statement's text. Refuses a business that does not belong to the connected user or is on the Free plan. Returns pending, each with statementUploadId, fileName, uploadedAt, sizeBytes and the account the owner added it under (accountId, label, lastFour) or null, and hasMore when more are waiting than the limit. An empty list means nothing is waiting.
list_pending_statements
Lists every business the connected user owns: incorporated CCPCs (entityType corp) and businesses that are not incorporated (entityType sole_prop). Takes no arguments. Returns for each business: id, name, entityType, businessKind (what the owner calls it: sole_proprietorship or partnership for sole_prop; corporation, professional_corporation or holding_company for corp), plan, mcpAccess, province, fiscalYearEnd, incorporationDate (the business start date for a sole proprietorship), businessNumber, GST and PST registration and filing frequency, hasPayroll and takesDividends. mcpAccess is false for a business on the Free plan, and every other tool refuses such a business. The id is the corporationId that every tool working on a whole business takes; list_entry_attachments, read_receipt_file and record_receipt_detail take an entry or attachment id instead. entityType decides which forms apply: T2 for a corp, T1 with T2125 for a sole proprietorship, plus Quebec's TP-1 with TP-80 when its owner lived in Quebec on December 31 or it had a fixed place of business there.
list_corporations
Lists every category an entry of one business can have, grouped by section: revenue, expense, capital_asset, capital_inflow, capital_outflow, transfer, tax_remittance and custom (the business's own). Returns for each: label and displayLabel. For a corporation (entityType corp), also the GIFI code, section and description where one applies. For a sole proprietorship or partnership (entityType sole_prop), which reports on a T2125, instead t2125Line, the T2125 line an entry under the label lands on in get_t2125_preview (null when there is none, such as for a sale, which adds up in Part 3, or a loan), t2125Part, and t2125Note, what the label holds for such a business: its owner's own pay is Owner Withdrawal, never Salaries & Wages, and the owner's own income tax, CPP and instalments paid from the business are Personal Income Tax, never Tax Remittance. label is the exact, case-sensitive text that get_expenses, record_expense, record_receipt_detail and categorize_entries take. displayLabel is how Ledg shows the label for this entity type (a sole proprietor sees Owner Draw for Owner Withdrawal); those tools do not accept it. sides says whether the label fits money in and money out, as its own side (native) or as money back on it (refund: a supplier's refund under an expense, a refund to a customer under a sale), with refundNote on a refund side.
list_categories
Lists the periods the owner closed in Ledg for one business, account by account. A period is an account's statement period, or a calendar month where no statement covers it. The owner closes one on the Bank statements page once its books meet the bank's closing balance to the cent; its committed entries are then locked until the owner reopens it with a reason, and an entry added to Stage dated inside it waits there until then. Reopened closes are listed too. accountId narrows the list to one account. Refuses an accountId that is not an account of this business. Returns for each account: accountId, label, type, closedThrough (the day through which its books are closed, counting from its first period, or null) and closes, oldest first, each with closeId, periodStart, periodEnd, period (in words), openingBalance and bankClosing in dollars as the account stores them (a card's balance owed is negative), bankClosingWords, closedFrom (statement or typed), closedAt, closedBy, and reopened (at, by and reason) or null. Closing and reopening happen in Ledg; this tool changes nothing.
get_closed_periods
Lists the files attached to one entry, such as receipt photos and PDFs the owner uploaded, newest first. Returns for each file: id, filename, mimeType, fileSizeBytes, uploadedAt and webUrl, a Google Drive link that opens for the owner in their own Drive; it is not a public link. read_receipt_file takes the id and returns the file as an image. Refuses an entry that does not belong to the connected user, and one whose business is on the Free plan.
list_entry_attachments
Lists the financial accounts of one business: chequing, savings, credit cards and any others the owner added. Returns for each account: id, label, type, institution, lastFour, isDefault, openingBalance, openingBalanceDate and closedThrough, the day through which the owner has closed the account's books against the bank (null when none is closed); committed entries in a closed period are locked. The id is the accountId that get_account_balance, get_closed_periods and record_expense take, and that record_bank_statement accepts. paidPersonally summarizes purchases paid in cash or with a card or account not in Ledg; it is not an account and has no id.
list_accounts
Lists the minute book documents of one corporation, newest first: articles of incorporation, bylaws, director resolutions, share and shareholder registers, annual meeting minutes and others. A sole proprietorship has no minute book, so for one this returns an empty list with a message saying so. Refuses a section that is not one of the listed ids, and names the valid ones. Returns for each document: id, section, title, description, filename, mimeType, fileSizeBytes, uploadedAt and webUrl, a Google Drive link that opens for the owner in their own Drive. read_minute_book_document takes the id and returns the document's text, or an image of its first page.
list_minute_book
Lists the notes left on entries by the owner, their accountant and AI agents. With entryId: every note on that entry, oldest first, up to 200. With corporationId and no entryId: the 50 newest notes across that business, newest first, each with its entry's date, vendor, amount and status. Returns for each note: id, entryId, author (a name and a role, such as Dana Kim (owner), Lee Accounting (accountant) or Claude (AI agent)), byAiAgent, note and createdAt, and more when older notes were not listed. A note is kept beside its entry and is not part of the books: no total, report or tax figure reads it. An AI agent's question that holds a Stage entry for the owner (noteForOwner) is not listed here, though the entry's Notes in Ledg show it once the owner has closed it or the entry is in the Ledger. Refuses a call with neither id, an entry or business that does not belong to the connected user, an entryId from another business than corporationId, and a business on the Free plan.
list_entry_notes
List saved receipt readings and whether they have linked to a transaction. Includes receipts waiting internally for a purchase to arrive; these are not expenses or Stage entries. Use this when the owner asks where a submitted receipt went. Pending receipts do not need an account assigned or resubmission. This is separate from list_pending_receipts, which lists uploaded files awaiting a first reading. A receipt whose payment method says cash or a personal card never links to a bank transaction; mayBePaidPersonally marks it.
list_saved_receipts
Lists the tax deadlines of one business from its filing profile. A corp gets T2, T4, T5, GST/HST, PST and the BC annual report where they apply (in Quebec the QST is on the GST/HST return rows, with QST instalments of its own; a business registered for QST alone has those rows for its QST); a sole proprietorship gets T1 with T2125 (payment April 30, filing June 15) and its owner's tax instalments once the owner says which CRA reminders came for the year, T4 when it has payroll, GST/HST and PST, and Quebec's TP-1 rows when its owner files in Quebec; a Quebec partnership gets its TP-600. Deadlines that do not apply to the business's registrations, payroll or dividends are left out. By default covers 30 days ago through 12 months ahead, so a fiscal year that crosses the calendar year is covered; referenceYear lists one calendar year instead. Refuses a referenceYear outside 2000 to two years from now. Returns for each deadline: id, name, description, dueDate, category, filingUrl, status (upcoming, due-soon, overdue, filed or not-needed), filed, which the owner marks in Ledg, and paid. unanswered lists what Ledg does not know that decides these dates, such as a PST filing frequency or the month a BC PST period ends in, without which no PST returns are listed, or a GST/HST frequency, assumed yearly. A partnership gets a T5013 row once its answers for the year say it files one; until then get_business_profile asks the questions. Ledg lists deadlines; it does not file returns.
list_deadlines
Lists uploaded receipt originals awaiting a first reading, oldest first. Files may belong to saved receipts before any transaction exists, or to unconfirmed entries. Returns attachmentId, receiptId or entryId, filename, uploadedAt, available receipt or transaction context and hasMore. read_receipt_file returns the original. record_expense with receiptId saves its first reading for automatic matching; record_receipt_detail with entryId adds it to an existing entry when there is no receiptId. Already read files and confirmed entry originals are excluded.
list_pending_receipts
Builds a preview of form T2125 (Statement of Business or Professional Activities) for a sole proprietorship for one calendar year, from committed (confirmed) entries only, with the same figures as the T2125 page in Ledg. Returns every populated line: identification, income, expenses, net income, business-use-of-home, equity, capital cost allowance (Area A) and the motor vehicle charts, plus warnings about missing information such as an asset with no capital cost allowance class. For a partnership it also returns Part 8 (the other partners, each with their share of line 9369) and whether the partnership files a T5013. When the owner files in Quebec, quebec is the same books on Revenu Québec's form TP-80, with where it differs from the T2125. A preview is not a filed return; Ledg does not file T1, TP-1, T2125 or TP-80 returns. Its figures come from the owner's books and answers by fixed rules and are not tax advice; the owner or their accountant decides what to claim and file. The kilometres and home office come from the tax profile, as get_tax_profile returns them. Refuses a corporation (T2 is not previewed here), a year outside 2000 to two years from now, and a format other than summary or detail. Over 100 KB, detail falls back to summary; a summary over 100 KB is an error and the preview is on the T2125 page in Ledg. When committed entries in the range are ones the bank no longer lists on their account, bankNoLongerLists names them and the totals include them.
get_t2125_preview
Returns one minute book document from the owner's Google Drive so what it says can be read: a certificate or articles of incorporation, a register, a resolution, or a letter from CRA or the province. Takes a document id from list_minute_book or get_business_profile. A PDF with a text layer comes back as its text, cut at 60,000 characters with truncated true. A file with no text to read (a scan, a photo, a Word file, a password protected PDF, or a PDF over 10 MB or 60 pages) comes back as Drive's image of its first page only, with a note saying the text could not be read; when Drive has no page image, or it is over about 3.3 MB, a Google Drive link the owner can open comes back instead. Ledg does not interpret the document; it fetches it from the owner's Drive when this tool is called and returns it as it is. Refuses a document that does not belong to the connected user, one whose business is on the Free plan, and one of a sole proprietorship, which has no minute book. Returns an error when Google Drive is not connected or cannot be reached, or when the file is no longer in the owner's Drive. Returns documentId, corporationId, section, sectionTitle, title, description, filename, uploadedAt, webUrl and content (text, image or link); with text, also text, truncated, characters and pages; otherwise a note.
read_minute_book_document
Returns the text of one bank or credit card statement PDF the owner added in Ledg, with the account the owner added it under. Takes a statementUploadId from list_pending_statements. Ledg pulls the text out of the PDF on its own servers and sends the file to no one else; it does not read the figures itself. The text has the words and figures as the bank set them, though columns can run together. A long statement comes in parts of about 50,000 characters: nextFromCharacter says where the next part starts, and fromCharacter takes it. A scan or photo has no text and is refused, as are a password-protected file and one over 60 pages. record_bank_statement takes the period, the opening and closing balances and every line as printed, with the same statementUploadId, which files this PDF as the statement's original once its lines are accepted. Refuses a PDF that does not belong to the connected user, and one whose business is on the Free plan. Returns statementUploadId, corporationId, fileName, uploadedAt, status (waiting or read), account (accountId, label, institution, lastFour, type) or null, pages, characters, fromCharacter, nextFromCharacter (null at the end), truncated and text.
read_statement_file
Saves a receipt, invoice or bill as evidence and links it to its bank or statement transaction when exactly one has the same amount within 4 days, the same currency (any when unknown) and an agreeing supplier name. Otherwise it waits and is retried as transactions arrive; it creates no expense and needs no account. Returns receiptId, matched or awaiting_transaction status, matched transaction ids, transactionCreated false and, when not linked, possibleMatches: open transactions near the date with the same amount (another currency: the same supplier). record_receipt_detail takes one of those ids with the reading and this receiptId. receiptId adds a first reading to an uploaded original. Currency stays as printed, or XXX when unknown. Optional receiptFile (ChatGPT download URL) or attachment (original bytes) files the original in Google Drive in this call. A failed transfer keeps the details and returns a retry link when Drive is connected. Only createTransaction true with a real accountId and CAD, or paidPersonally true, creates a Stage expense, for a purchase that will not arrive from the bank; notInBooks alone never does. Refuses an invalid date, nonpositive amount, unknown category, foreign account, malformed items or tax above the total; unusually high tax is held for the owner. Tax provenance and owner review notes are kept. Nothing is confirmed automatically. A supplier's refund receipt goes on the money-in line it arrived on, with record_receipt_detail and refund: true.
record_expense
Writes what a receipt says onto a transaction that already exists: an entry in Stage, or a transaction waiting in the owner's bank list, which it first moves into Stage with the bank's date and amount. Use for a find_transactions match, a record_expense possibleMatches id (with its receiptId), or a list_pending_receipts receipt. Overwrites supplied fields and replaces supplied lineItems. Receipt supplier names replace bank abbreviations, except names the owner chose. A category is not written (categoryNotChanged) over one the owner chose, when it is Owner Withdrawal or Owner Deposit (record_personal sets those), or when it would clear a business use the owner set. Never changes the date or amount of a transaction that has an amount; a differing receiptTotal comes back as totalMismatch. An entry with no amount yet (an uploaded photo) takes both from the receipt. Refuses a committed entry, a call with nothing to record, only a date or amount for a transaction that has one, a number sent as text, tax above the total, an unknown category, and a bank transaction that is pending, left out, or possibly already in the books. Unusually high tax is held for the owner. Optional receiptFile (ChatGPT download URL) or attachment (original bytes) files the original in Google Drive. Either alone attaches to a Stage entry without changing its figures. Returns recorded fields, stillNeeded, movedFromBankList, savedReceipt and original, or receiptUpload and why a file failed. A retry keeps it.
record_receipt_detail
Records transactions of one business as personal: money between the owner and the business, never income or a cost. Money out becomes Owner Withdrawal (a sole proprietor sees Owner Draw, T2125 line 9932). Money in becomes Owner Deposit (Owner Investment, line 9933), or Owner Withdrawal when it is money back on a personal purchase, which lowers the drawings. For a corporation both are the shareholder's account, settled as its accountant decides. A purchase that is only partly business keeps its business category, with its business share set through businessUsePercent on categorize_entries; an entry whose business use the owner set is refused (owner_chose). Writes to Stage only, never commits, never creates a rule. Some are held in Stage with a note; each result says which and why. Each call is logged in the owner's Activity first; if that fails, nothing changes.
record_personal
Only after read_statement_file shows this charge on that statement. For an entry whose bankTookBack is true in find_transactions or find_uncategorized_transactions, with statementToCheck set: the bank no longer lists the charge on its account, and an accepted statement of that account covers its day. When that statement prints it, this records that the statement shows it, so the entry can go into the books with the statement behind it; the owner commits it. The owner can undo it in Ledg (Statement does not show it). Refuses an entry the bank still lists or no longer holds (not_withdrawn), a statement that does not cover the entry's day or is not of its account (statement_does_not_cover), and a token that cannot write. Returns entryId, statementImportId and outcome.
record_statement_shows_charge
Sets the revenue goal of one business in Ledg, replacing the one there; a business has one goal, and the owner's Overview shows the books against it. Revenue is money in from customers as the income statement counts it. Takes cadence (month: a monthly amount to reach by targetDate; year: a total for the fiscal year targetDate falls in), targetCents, targetDate and an optional plan: the owner's own arithmetic worked back from the target, such as 10,000 active users, 10% pay, so 1,000 subscribers, 500 at $2 a month and 500 at $4, so $3,000 a month. With a plan, targetCents may be left out, and the target is then what the plan makes in the goal's cadence (a monthly plan makes 12 times as much in a year). A plan whose steps do not compute is refused; a plan that makes a different amount from targetCents is saved, and the result says by how much. Counts in a plan are the owner's figures; Ledg does not track users or subscribers. A call with anything invalid changes nothing and names every problem, and a goal that already holds the values sent is not written again. Refuses a business that is not the connected user's or is on the Free plan. Returns goal as saved, with its plan worked through, and previous, the goal it replaced or null. The goal records this connection's name as who set it.
set_business_goal
Sets the category, and optionally the GST and PST a receipt shows, on up to 50 entries of one business that are in Stage, not committed; for a business that is not incorporated, also a Capital Asset's CCA class, vehicle kind and business use when bought, and an expense's business use. For entries that arrived without a category, or to correct one. find_uncategorized_transactions and find_transactions return the ids; list_categories returns the labels. Labels fit the entry's direction as list_categories says. A payment to or from a tax authority, or government money filed as income, of a business that is not incorporated waits in Stage for the owner (waitsForOwner; see ownerAnswer). Refuses, per entry: a committed entry; a category or business use the owner chose themselves (owner_chose); an unknown label or one that does not fit the direction; tax on a balance-sheet label, where the business is not registered for it, or above the total; and an entry changed, committed or deleted during the call (changed_meanwhile). Unusually high tax is held for the owner. A refused entry stays unchanged. Never changes the amount, date, account or supplier, never creates a vendor rule, never commits. Clears tax only for Personal. Each call is first logged in the owner's Activity under this connection's name; if that fails, nothing changes. Returns, per entry, updated, unchanged or refused with a reason, its Stage tab now, and closedPeriod when its date is in a closed period.
categorize_entries
Takes one bank or credit card statement back out of the owner's books whole: every line it added to Stage comes out, as if it had never been filed. For a statement filed to the wrong account or business, misread, or read twice in different ways. A personal purchase on a right statement is recorded with record_personal instead. Takes statementId, which record_bank_statement and find_transactions return, or entryId, any line from the statement. Without confirmToken nothing changes: the reply says what the undo would do and gives a confirmToken. With it, the undo runs, all or nothing, and replies changed with a new confirmToken when anything moved since. Readings that only sent the same statement again go with it. Committed lines and closed months are the owner's to move back or reopen in Ledg first; the call is refused and says which. When the owner worked on its lines, nothing is undone: the reply is requested, and the owner decides in the Inbox. Bank transactions its lines were matched to wait in the owner's bank list; receiptsKept lists the receipts kept, for record_receipt_detail on the right transaction. putBack takes the undoId of an undo made through this tool and puts it back exactly while nothing has changed since. A CSV file the owner imported is undone by the owner in Ledg. Returns undoId, linesRemoved, receiptsKept, bankTransactionsReturned and, when Ledg has the statement's lines, refile: the same lines in record_bank_statement's form.
undo_bank_statement
Returns an uploaded receipt from the owner's Google Drive as an image, with its receiptId or entryId and available date, supplier, amount and status. Takes an attachmentId from list_pending_receipts, list_saved_receipts or list_entry_attachments. Uses Drive's rendered image (first PDF page), or the original JPEG, PNG, GIF or WebP. Unsupported or oversized files return the owner's Drive link. record_expense with receiptId adds a saved original's first reading; record_receipt_detail with entryId writes onto an existing transaction when there is no receiptId. Receipt currency and total are evidence, not a bank amount. Refuses another owner's attachment or an unavailable Drive connection.
read_receipt_file
Ledg ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Ledg's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Ledg alternatives on ChatGPT?
As of 2026-10-29, Ledg competes with Accountable, Agenix Invoice, AgentCollect, Aikount, Akaunting, AuntBird Practice Management, B2B.nu, Bankstatemently and 75 more in ChatGPT Accounting & Bookkeeping, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.