acknowledge-unknown-account-task
ChatGPTRecord a boolean acknowledgement on an Unknown task after reading get-account-task. Either boolean records the reply; the workflow acknowledges it and closes the task. This tool does not resolve other task types.
add-account-tags
ChatGPTAttach one or more existing labels to a customer account. Use list-tags to get the label identifiers, and create-tag when the label does not exist yet. Attaching a label the account already has changes nothing.
add-account-task-structured-interaction
ChatGPTAdd a structured user interaction to an account task. Use this for typed responses that follow a specific schema (e.g., approval responses, contact selections).
add-account-task-text-interaction
ChatGPTAdd a text-based user interaction to an account task. Use this to provide a simple text response to a task.
apply-credit-allocation
ChatGPTApply a credit amount from a credit note to an invoice, reducing the outstanding balance. This creates a link between the credit note and invoice.
cancel-account-payment-promise
ChatGPTWithdraw the commitment standing on an account. Nothing recovers it; ask the user before calling this. Withdrawing when none stands is not an error.
cancel-account-task
ChatGPTCancel an account task. This marks the task as canceled and it will no longer require user input.
cancel-organization-invitation
ChatGPTCancel a pending invitation to an organization. This removes the invitation before the user accepts it.
check-account-bodacc
ChatGPTCheck French collective proceedings and propose debtor identity candidates. Supply a SIREN/SIRET only when confirmed from a debtor document or customer record. Works for connector-managed accounts. Persists the check and may pause reminders or open a task; preserves independent legal and manual pauses.
close-account-task
ChatGPTClose a task the user says was dealt with elsewhere ("déjà géré", "c'est réglé de notre côté"), without asking the agent anything: no model decides the closure and no email is sent for it. Only a task asking for information (type NeedUserInput) can be closed this way, and not while a reply of the user is being processed. A payment review (paymentDeclarationId set) is answered with resolve-account-payment-declaration, and every other task with its own action. Missing information is not marked as provided and pauses stay in place; read get-account-dunning-status afterwards to tell the user whether reminders may resume. Never close a task on your own initiative, and never to answer a question the task asks. Closing an already closed task returns it unchanged. Returns where the task stands; read get-account-task for the full task.
confirm-account-task-recipients
ChatGPTAnswer the recipient selection task with idempotencyKey dunning-recipient-review. Read current account contacts first. The server checks reviewed IDs and emails, enables selected contacts, disables unselected reviewed contacts and closes the task. Set confirmLargeSelection to true only after user confirmation when selecting more than 5 recipients.
confirm-account-task-resume
ChatGPTAnswer the reminder resume confirmation task. resume authorizes resuming automatic reminders; keep_paused leaves them paused. The workflow applies the decision and closes the task. Use only the explicit user decision after reading get-account-task.
create-account
ChatGPTCreate a new customer account for an organization. Requires full account details including billing address and currency.
create-contact
ChatGPTAdd a new contact to a customer account. Contacts are external people who can receive dunning emails.
create-credit-note
ChatGPTCreate a new credit note with an attached document. The file should be provided as base64-encoded content. Supported formats: PDF, PNG, JPEG, WebP. Max size: 10MB.
create-invoice
ChatGPTCreate a new invoice with an attached document file. The file must be provided as base64-encoded data. Supported formats: PDF, PNG, JPEG, WebP. Max size: 10MB.
create-invoice-from-file
ChatGPTCreate an invoice from a file attached in ChatGPT, without base64. Confirm the account, invoice number, dates and amounts from the document. The account must already exist: find it with list-accounts; if none matches, propose create-account with the customer details from the invoice and wait for the user to confirm. PDF, PNG, JPEG, WebP, maximum 10 MB. Generate importId once and reuse it for retries. If file transfer is unavailable, call prepare-invoice-upload with the SAME invoice details and importId. Never invent a download URL or encode the PDF in the conversation. Returns invoiceId for get-invoice.
create-organization-invitation
ChatGPTInvite a user to an organization by email address. The user will receive an invitation email to join the organization.
create-tag
ChatGPTCreate a new label owned by an organization. Check list-tags first, an equivalent label may already exist.
decide-account-task-contact-change
ChatGPTApprove or refuse the contact changes proposed by an ApproveContactChange task. Read its proposed operations first. Approval applies selected additions, updates or removals; omitting selectedOperations approves all proposed operations. The workflow closes the task.
decide-account-task-eligibility
ChatGPTAnswer an ApproveEligibility task after reading get-account-task. True authorizes adding the incoming sender as a contact; false declines. The workflow records the answer and closes the task.
decide-account-task-email-draft
ChatGPTSend or discard the email currently awaiting user approval on a NeedUserInput task. Read get-account-task and the full draft first. communicationId must match pendingCommunicationId. send triggers delivery to the draft recipients; discard abandons that draft. Never infer approval from free text.
decide-account-task-first-outreach
ChatGPTAnswer an ApproveFirstOutreach task. Approval enables the first automatic payment reminder; refusal pauses reminders. The workflow closes the task. Use only the explicit user decision.
decide-account-task-next-action
ChatGPTAnswer an AskNextAction task after reading get-account-task. take-over keeps reminders off; resume restarts them with current contacts; add-contact creates or updates the supplied contact and resumes reminders. The workflow closes the task.
decide-account-task-payment-arrangement
ChatGPTAnswer an ApprovePaymentArrangement task. grant applies the approved installments to the selected invoices within the task scope; refuse declines the proposal; keep_existing preserves the current schedules. The workflow validates scope and amounts, lifts only this request's payment-plan pause and closes the task. It sends no email directly. Read the task and current invoices first.
delete-account
ChatGPTPermanently delete a customer account and all associated data. This action cannot be undone. Accounts linked to external sources may have restrictions.
delete-contact
ChatGPTRemove a contact from a customer account.
delete-credit-note
ChatGPTPermanently delete a credit note.
delete-invoice
ChatGPTPermanently delete an invoice. This action cannot be undone. The invoice must not be linked to a managed account source.
delete-tag
ChatGPTDelete a label of an organization. It is removed from every account carrying it, which cannot be undone: confirm with the user first.
enrich-contact
ChatGPTBuy a contact's details: 1 credit for an email address, 2 as soon as a phone number is found, 0 when nothing is found. SPENDS THE ORGANIZATION'S CREDITS, so confirm with the user before calling it. The search must be anchored on the debtor: either a LinkedIn profile URL, or a company domain on the account. Without one of the two it is refused before any spend, because a name alone matches a namesake company anywhere in the world. Returns as soon as the provider accepted; the contact appears on the account about a minute later, on its own, and nothing has to be polled.
ensure-account-portal-link
ChatGPTGet or create a shareable link to the account's Billabex-hosted document portal. Creating it grants anyone holding the link access to the account's portal documents without a Billabex login. Returns an existing link unchanged. Does not send the link or any message.
export-invoices
ChatGPTExport invoices to an Excel (.xlsx) file the user can download: every invoice matching the filters, not one page, with typed amounts and dates, one row per invoice. Returns a download link valid 15 minutes; hand it to the user rather than reading the file. Takes the same filters as list-invoices. Refused above 20000 invoices: narrow the filters. Filterable fields: number (contains, startsWith, equals, isAnyOf: several document numbers in one condition); accountName (contains, startsWith, equals); tags (containsAny, containsAll, containsNone, isEmpty, isNotEmpty: the labels carried by the account this document belongs to); status (is, isNot, isAnyOf: Issued, Paid, Overdue); dueDate (on, before, after, between); paymentSchedule (isTrue, isFalse); paymentMethod (is, isNot, isAnyOf, isEmpty, isNotEmpty); totalAmount, remainingBalance (equals, greaterThan, lessThan, between); channel (is, isNot, isAnyOf); sourceId (is, isAnyOf, isEmpty, isNotEmpty: case-sensitive, the caller-provided identifier).
get-account
ChatGPTRetrieve detailed information about a specific customer account including contacts and source information. For user-facing responses, prefer account name/summary fields and use IDs only for follow-up tool calls.
get-account-dunning-status
ChatGPTRead the payment follow-up status of a customer account: whether it is suspended and why, whether a task or a threshold is holding messages back, when the first message becomes possible, and the commitment to pay standing on it (paymentPromise, null when none does; a promise changes no accounting, it is what the next follow-up must not contradict). Answer questions about a silent account with this: silenceReason names the single cause, ranked the same way the send decision ranks it. Read-only, it changes nothing on the account.
get-account-financial-overview
ChatGPTExplain a customer account balance and list every past and future invoice installment, including covered installments and the amount still due on each one.
get-account-portal-link
ChatGPTRead the link to the customer's document page for an account: the invoices and credit notes currently followed up on, plus those settled over the last 12 months, ready to download. Returns portalLink null when no link was created yet; reading never creates one.
get-account-task
ChatGPTGet detailed information about a specific account task including its type, status, and required input.
get-aging-balance
ChatGPTGet gross outstanding amounts by currency and aging bucket. Unallocated credit notes are reported apart in unallocatedCredit, not deducted from any bucket: the buckets minus unallocatedCredit is the outstanding balance.
get-communication
ChatGPTRead one communication with its content: a customer email, a reminder or agent email, or a paid SMS or letter. Pass the id and type of a list-communications row. Only the section matching type is set. An outgoing email with awaitingApproval true is only prepared; use its taskId and the DecideOutgoingEmailDraft task interaction to send or discard it. A letter carries a short-lived pdfUrl for its archived PDF when available; read again to renew it.
get-contact
ChatGPTRetrieve detailed information about a specific contact.
get-credit-note
ChatGPTGet detailed information about a specific credit note by ID, or by organization/account ID and credit note number. For user-facing responses, prefer credit note number/summary fields and use IDs only for follow-up tool calls.
get-customer-balance
ChatGPTGet detailed information about a specific customer outstanding balance, including associated invoices and credit notes.
get-dso-history
ChatGPTGet days sales outstanding for complete calendar months. Historical ECB rates, with blended rates for unsupported pairs. Rate errors never return partial totals.
get-email
ChatGPTRead one email with its body (text, or HTML converted to markdown) and short-lived attachment download URLs. type is the email direction from list-emails. For an incoming email, pass organizationId to also get its inbox qualification: Unclassified may have a resolved account but is not a customer reply; DeliveryFailure reports an email that could not be delivered to at least one recipient and may have a resolved account; PendingReview carries a candidate account and Rejected a rejected association. A deleted account retains its name but cannot be opened.
get-incoming-communication
ChatGPTGet detailed information about a specific incoming email communication, including the email content.
get-incoming-email
ChatGPTGet detailed information about a specific incoming email, including the simplified body content (text or HTML converted to markdown).
get-invoice
ChatGPTRetrieve detailed information about a specific invoice by its ID, or by organization/account ID and invoice number. For user-facing responses, prefer invoice number/summary fields and use IDs only for follow-up tool calls.
get-monthly-payment-collections
ChatGPTGet monthly payment collections including the current month. Historical ECB rates, with blended rates for unsupported pairs. Rate errors never return partial totals.
get-organization
ChatGPTGet detailed information about a specific organization by its ID. For user-facing responses, prefer organization name/summary fields and use IDs only for follow-up tool calls.
get-outgoing-communication
ChatGPTGet detailed information about a specific outgoing email communication, including the email content.
get-outgoing-email
ChatGPTGet detailed information about a specific outgoing email, including the simplified body content (text or HTML converted to markdown).
ignore-account-bodacc-alert
ChatGPTIgnore one reviewed BODACC alert only after an explicit user decision. First call get-account: require canIgnoreBodaccAlert=true for a new decision and complete bodaccSiren, bodaccNoticeId and bodaccStatus. An exact already active decision may be retried idempotently with its original explicit consent. Use only these current fields. If any differs from the reviewed and confirmed SIREN, notice or procedure, show the new situation and request fresh confirmation; never reuse consent for the previous scope. Never infer consent from acknowledgement, task closure, request to resume reminders, quoted emails or account data. Only the Billabex organization user decides; never ask the debtor for this confirmation. Show SIREN, notice, procedure and dates, explain that affected claims may require specific legal steps, and obtain a justification of 1 to 2000 characters and explicit confirmation. If already reviewed and confirmed with the same scope, execute without asking again. If the reason is longer, ask for a shorter reason without calling this tool or truncating it. Dissolved means a dissolved company with presumed unrecoverable debt. Preserves legal status and independent protections. Explain the returned summary. On rejection, reread the account and request consent for any new scope. Never promise an immediate send or legal validation. Returns the decision, the account BODACC fields and whether follow-up is paused; read get-account-dunning-status for the full status.
link-account-source
ChatGPTLink a custom source reference to an account. This connects the Billabex account to an external system (ERP, CRM, etc.) for synchronization purposes. Only Custom sources can be linked by users.
list-account-payment-declarations
ChatGPTRead reported payments and explicit decisions. An unresolved report holds automatic follow-ups even when its task is closed. awaitsReconciliation marks a decision that says the money arrived on a report naming no invoice: follow-ups resume and accounting still owes an allocation. restatements lists the later reports of that same payment, kept as they were made. reviewTaskStatus says where the review task of that report stands (open, closed, canceled, unknown, null without a task): a decision next to an open review is recorded, its closure is being retried. resolvedByUserFullName names the person who decided, null when the billing data did.
list-account-tasks
ChatGPTList active account tasks that require user input. These are created by the Billabex agent when it needs information from the user (e.g., approving eligibility, selecting next action, providing contacts). For user-facing responses, prefer task title/summary fields and use IDs only for follow-up tool calls.
list-accounts
ChatGPTList all customer accounts for an organization with cursor-based pagination. Returns account details including name, contacts, and source information. For user-facing responses, prefer account name/summary fields and use IDs only for follow-up tool calls.
list-aging-balance-by-account
ChatGPTList currency-specific aging balance rows by customer account, with filtering and sorting. Buckets and overdueOutstanding are gross; totalOutstanding deducts unallocatedCredit. Filterable fields: accountName (contains, startsWith, equals); tags (containsAny, containsAll, containsNone, isEmpty, isNotEmpty); dunningPaused (isTrue, isFalse); paymentMethod (is, isNot, isAnyOf, isEmpty, isNotEmpty); collectiveProceeding (is, isNot, isAnyOf: Yes, No, Unknown); source (is, isNot, isAnyOf, isEmpty, isNotEmpty); notDue, d0_30, d31_60, d61_90, d90Plus, unallocatedCredit, totalOutstanding, overdueOutstanding, overdueRate (equals, greaterThan, lessThan, between). A cursor belongs to the exact set of filters and sort it was issued with: reusing it with different ones is refused, drop "after" and read the first page again.
list-audit-entries
ChatGPTList the audit journal of an organization, newest first: one entry per successful command, with the user, agent or system that ran it. Pass accountId for the history of a single account, which is also the only way to read the history of an account that has been deleted. Use search to find an account by name: the name survives in the metadata of the commands that touched it, never in the account list once it is gone.
list-communications
ChatGPTList communications (incoming emails, outgoing emails, SMS and letters) of an organization or one account, newest first, with server-side filters, sorting and pagination. Use get-communication with the id and type of a row for its content. Filterable fields and their operators: type (is, isNot, isAnyOf: IncomingEmail, OutgoingEmail, OutgoingSms, OutgoingTrackedLetter, OutgoingRegisteredLetter), direction (is, isNot, isAnyOf: Incoming, Outgoing), status (is, isNot, isAnyOf), deliveryStatus (is, isNot, isAnyOf, isEmpty, isNotEmpty), accountName / contactName / subject (contains, startsWith, equals, isEmpty, isNotEmpty), date (on, before, after, between). Date values are written YYYY-MM-DD. An unknown field or an operator the field does not accept is refused, never ignored. An "endCursor" belongs to the exact set of filters and sort it was issued for: pass it back unchanged, and read the list again from its first page whenever a filter or the sort changes.
list-contacts
ChatGPTList all contacts associated with a customer account. Contacts are the external people (customers) who can receive dunning communications. For user-facing responses, prefer contact name/summary fields and use IDs only for follow-up tool calls.
list-credit-notes
ChatGPTList credit notes for an organization with pagination support. For user-facing responses, prefer credit note number/summary fields and use IDs only for follow-up tool calls.
list-customer-balances
ChatGPTList customer outstanding balances for an organization. Each balance represents the dunning state for a customer account, including outstanding invoices and credit notes. For user-facing responses, prefer summary fields and use IDs only for follow-up tool calls.
list-emails
ChatGPTList all emails (both incoming and outgoing) for an organization. Returns paginated results with email type indicator.
list-incoming-communications
ChatGPTList incoming email communications (customer replies to dunning emails) for an organization. Returns paginated results. For user-facing responses, prefer summary fields and use IDs only for follow-up tool calls.
list-incoming-communications-by-account
ChatGPTList incoming email communications (customer replies) for a specific account. Returns paginated results filtered by account.
list-incoming-emails
ChatGPTList incoming emails for an organization. These are emails received from external parties. Returns paginated results.
list-invoices
ChatGPTList all invoices for an organization with cursor-based pagination. Returns invoice details including amounts, dates, and payment status. For user-facing responses, prefer invoice number/summary fields and use IDs only for follow-up tool calls.
list-organization-members
ChatGPTList all members of a specific organization. Returns user details including name and email. For user-facing responses, prefer member name/summary fields and use IDs only for follow-up tool calls.
list-organizations
ChatGPTList all organizations the authenticated user is a member of. Returns paginated results. For user-facing responses, prefer organization name/summary fields and use IDs only for follow-up tool calls.
list-outgoing-communications
ChatGPTList outgoing email communications (dunning emails sent to customers) for an organization. Returns paginated results. For user-facing responses, prefer summary fields and use IDs only for follow-up tool calls.
list-outgoing-communications-by-account
ChatGPTList outgoing email communications (dunning emails) for a specific account. Returns paginated results with recipient status history.
list-outgoing-emails
ChatGPTList outgoing emails for an organization. These are emails sent by the system (dunning communications). Returns paginated results.
list-silent-accounts
ChatGPTList accounts for an organization that have received at least one outgoing payment follow-up email but have never sent an incoming reply. Results are paginated.
list-tags
ChatGPTList the labels of an organization. Every tag belongs to the organization, which can rename, recolor or delete it; names are not translated. Use this to get the tag identifiers needed by add-account-tags and remove-account-tag. For user-facing responses, prefer the displayName field and use IDs only for follow-up tool calls.
pause-account-dunning
ChatGPTSuspend automated payment follow-up for a customer account. Facts stay paused until resumed. Dated waits require until and resume automatically. Omitting reason creates a manual pause. Returns the pause state; read get-account-dunning-status for the full status.
prepare-invoice-upload
ChatGPTPrepare a secure 15-minute upload link when the client cannot transfer an invoice attachment. The account must already exist: find it with list-accounts; if none matches, propose create-account with the customer details from the invoice and wait for the user to confirm. Does NOT create the invoice yet: give the user the link exactly as returned, who reviews the details and uploads the document to create it. Reuse the SAME importId and invoice details as create-invoice-from-file if switching methods. A completed import cannot create a second invoice. Do not report success until the page confirms it or get-invoice finds the invoice.
preview-outgoing-message
ChatGPTPreview and price an SMS, tracked letter or registered letter without spending credits. Use it to quote a price or show the body before sending. Set includePdf only to show the assembled postal document: it adds the rendered HTML and the PDF in base64, which are large.
provide-account-task-contact
ChatGPTAnswer a NeedContacts task with the contact supplied by the user. The workflow creates or updates that contact and closes the task, allowing payment follow-up to continue under the account rules.
record-account-payment-declaration
ChatGPTRecord that a customer reports having paid. Does not mark invoices paid. Reuse sourceRef on retries. A report of a payment already held open, naming exactly the same invoices from another source with no amount, currency or payment date that disagrees, is folded into that declaration under restatements instead of creating a second one; resolving with this sourceRef still decides it.
record-account-payment-promise
ChatGPTRecord that a customer committed to pay. Changes no accounting and marks no invoice paid. Supersedes the promise currently standing, so this is also how one is edited. A date already past is refused: a payment the customer says is already made is a payment declaration, use record-account-payment-declaration.
refresh-outgoing-message-tracking
ChatGPTRefresh the postal history and receipt of an existing letter. Does not send mail or spend credits. Successful checks are reused for one minute. Returns the delivery state, postal history and receipt; read get-communication for the full message.
regenerate-account-portal-link
ChatGPTReplace the shareable link to the account's Billabex-hosted document portal. Revokes document access through every copy of the previous link, including in emails already sent, and grants access to anyone holding the new link without a Billabex login. Use when a link must be taken back, for example after it reached the wrong person. Does not send the new link or any message.
remove-account-tag
ChatGPTDetach a label from a customer account. The label itself is kept and stays available for other accounts.
remove-credit-allocation
ChatGPTRemove a credit allocation, reversing the credit that was previously applied from a credit note to an invoice.
remove-organization-member
ChatGPTRemove a member from an organization. This will revoke their access to the organization.
resolve-account-payment-declaration
ChatGPTRecord an explicit user decision. PaymentReceived confirms the full announced amount, including an installment on a partly paid invoice. It closes the review when recorded payments cover that amount in the account currency on every named invoice, with no competing payment announcement on that scope; otherwise receipt is recorded while reconciliation remains pending. It never changes invoice amounts. PartiallyReceived confirms that part of the payment arrived: set the total paid amount of the invoices first with update-invoice (paidAmount), at least one invoice must stay open, and follow-ups resume on the balance still owed; it never changes an invoice. ResumeAuthorized permits follow-ups without claiming that payment was disproved. The note is optional: without one a factual note derived from the decision is recorded. Historical receipt is the explicit exception: only a User may set historicalInvoicesOutsideBillabex with PaymentReceived and a required personal verification note, after checking historicalReceiptEligible and the current account invoices. It requires unlinked references absent from the account and organization, and no pending prepared email. Never infer this confirmation from missing references. It closes only this review, changes no invoice and leaves other open declarations blocking reminders. Replaying the same decision returns the recorded state and retries the closure of the review task, whose state reviewTaskStatus reports. Never resolve solely because an invoice remains open. Settling the invoices decides the declaration on its own, as InvoicesSettled with resolvedBy set to accounting: that decision is the books reading themselves, and an explicit user decision replaces it, which is the only way PaymentReceived is ever recorded on such a declaration. A decision a person took is final: sending a different one answers app-dunning.payment-declaration.already-resolved, whose details carry the decision in place, its author and its date. Report that decision rather than retrying with another one.
resolve-platform-rejection-task
ChatGPTRecord an explicit user decision on a platform rejection. exclude keeps the destination excluded after closure; retry authorizes another attempt after the registration problem is resolved. Neither sends an email nor lifts other pauses. Never infer permission to retry from a generic closure. Returns where the task stands; read get-account-task for the full task.
resume-account-dunning
ChatGPTResume automated payment follow-up for a suspended customer account. Name a reason to lift only that pause, including written-off when reopening a closed account. Omit it to lift every pause a user may resume. Suspensions only their own fix can lift stay in pauseReasons. When the call lifts a suspension a person or the debtor asked for, the result carries a warning naming it: report it to the user verbatim. Returns the pause state; read get-account-dunning-status for whether a message is now planned.
revoke-account-bodacc-alert-override
ChatGPTRevoke a specific BODACC alert decision only after explicit confirmation from the Billabex organization user, never the debtor. First call get-account and use the exact bodaccAlertOverride SIREN, notice and status, not the current legal finding. If this scope and warning were already reviewed and explicitly confirmed, execute now without another confirmation; the user need not retype the procedure name. Never infer revocation. An already invalidated or revoked decision is an idempotent no-op; do not claim a new recording. Reconciliation applies the current legal finding while preserving other protections. Revocation cancels the exception, it does not lift the BODACC pause. Explain the returned summary. If retryRequired=true or dunningStatus=null, follow-up status is unverified; never claim the pause was lifted or reminders resumed. Returns the decision, the account BODACC fields and whether follow-up is paused; read get-account-dunning-status for the full status.
search-contact-candidates
ChatGPTList up to ten people on the customer side who look like they handle supplier payments. Requires the account to state a company domain. Without one the call is refused and nothing is charged: a search by name alone only finds people at a namesake company. Fix it with update-account and the customer's real website, taken from the user or from a document you can point at, never guessed from the company name. When none is found the search widens on its own to whoever runs the company, and searchScope says so. Candidates the public registry names as legally running the company are flagged and listed first. Returns NO contact details and SPENDS THE ORGANIZATION'S CREDITS: 0.25 credit per result, so confirm with the user before calling it. Pass a candidate profileUrl to enrich-contact to buy their details.
send-outgoing-communication
ChatGPTSend an email immediately, at the account level, on behalf of the AI agent. Recipients are free-form (not limited to the account contacts). The account next planned communication is automatically recomputed after the send. Use message in markdown for content; the platform renders HTML/text and appends the agent signature automatically. Returns the communication id and per-recipient status; read get-communication for the full email.
send-outgoing-message
ChatGPTPaid and irreversible. Set maxCredits to cap the spend; a postal preview renders the whole document again, so call preview-outgoing-message only when you need to show the price or the body first. An SMS costs 1 credit per segment, tracked mail starts at 6 credits, registered mail starts at 12 credits, and postal mail costs 1 more credit per page after the first. Reuse the same idempotencyKey for every retry. Returns the message id, its cost and delivery state; read get-communication for the full message.
set-account-dunning-preferences
ChatGPTSet a permanent customer preference to prevent automatic reminders before amounts become due. Applies to current and future invoices; organization delays still apply. Does not pause follow-up or change accounting balances. Returns the preference; read get-account-dunning-status for the full status.
set-credit-note-original-invoice
ChatGPTSet or remove the documentary origin of a credit note. No allocations, amounts or payment statuses change. Also allowed on connector-managed credit notes. The reference survives invoice deletion. Returns the credit note id, number and the fields this change affects; read get-credit-note for the full credit note.
set-invoice-dunning-block
ChatGPTExclude one invoice from the automatic reminders (blocked true), or put it back (blocked false). Excluded, the invoice stays due and stays in the balance, while the other invoices of the same account keep being chased: no reminder will claim it, name it or attach its PDF, and it no longer drives the reminder cadence. Use it for a disputed invoice, a partial delivery or an awaited credit note. Only an invoice with a positive remaining balance can be excluded; excluding it again rewrites the internal note. The note is internal to the organization and never sent to the debtor. Put back, the invoice may again be claimed, named and attached, under the rules of its account: a paused account stays paused, an open task or an announced payment still holds the reminders. Putting back is allowed whatever the balance, so a settled invoice can be cleaned up, and changes nothing on an invoice that was not excluded. This is not pause-account-dunning, which stops every invoice of the account, and not record-account-payment-declaration, which records that the debtor announced a payment. Returns the invoice id, number and the fields this change affects; read get-invoice for the full invoice.
set-pending-account-task
ChatGPTSet an account task aside instead of answering it now, optionally naming the date it should come back. Use it when the answer depends on something that has not happened yet: name the date whenever the user gives one, so the task returns by itself instead of relying on someone to remember. Setting a task aside changes nothing about what it holds: a task that was holding the payment follow-up of its account keeps holding it, so this defers the decision rather than releasing the account, and cancelling or answering the task is what releases it. Without a date the task still comes back on its own after 30 days. Returns where the task stands; read get-account-task for the full task.
unlink-account-source
ChatGPTRemove the custom source reference from an account. This disconnects the Billabex account from the external system. Only linked Custom sources can be unlinked by users.
update-account
ChatGPTUpdate an existing customer account.
update-account-source
ChatGPTUpdate the lastUpdate timestamp of an existing source reference. Use this to record when data was last synchronized from the external system. Only linked Custom sources can be updated by users.
update-contact
ChatGPTUpdate an existing contact on a customer account.
update-credit-note-refunded-amount
ChatGPTUpdate the refunded amount on an existing credit note. Use this to record partial or full cash refunds. Returns the credit note id, number and the fields this change affects; read get-credit-note for the full credit note.
update-invoice
ChatGPTCorrect one aspect of an existing invoice per call: pass exactly one of paidAmount, dueDate or installments. paidAmount sets the total paid amount, never an amount to add: "1 368 € received" on an invoice already paid 936 € is either a new total of 1 368 € or 2 304 €, and only the user can say which. With it, always pass expectedPaidAmount, the paid amount you read from the invoice: if another update landed meanwhile the call is refused with app-invoicing.invoice.paid-amount-conflict carrying the current figure, which you report instead of retrying with another total. For a payment a customer announced, record the user decision with resolve-account-payment-declaration once the amount is right. dueDate corrects the payment due date of an issued invoice; it cannot be earlier than the issue date, and an invoice paid in installments refuses it, because its schedule drives the overdue status and the reminders: change installments instead. installments replaces the complete payment schedule; an empty array removes it. Replaying the same update changes nothing. Returns the invoice id, number and the fields this change affects; read get-invoice for the full invoice.
update-invoice-paid-amount
ChatGPTUpdate the paid amount on an existing invoice. Use this to record partial or full payments.
update-organization
ChatGPTUpdate an organization with a new name and/or email domain name.
update-organization-settings
ChatGPTUpdate organization settings such as the first reminder delay days. This controls how many days after an invoice is due before the first dunning reminder is sent.
update-outgoing-communication
ChatGPTUpdate an outgoing email communication. Only emails that have not been sent yet can be modified. Use message in markdown for content; the platform renders HTML/text and appends the agent signature automatically.
update-tag
ChatGPTRename and/or recolor a label of an organization. Every account carrying it shows the change. Send at least one of name and color.
upsert-contact
ChatGPTCreate a new contact or update an existing one based on email or name matching. This is idempotent - calling with the same data multiple times will have the same effect.
withdraw-account-payment-date-request
ChatGPTTake back a standing instruction to ask the debtor of a customer account for a realistic payment date: the next messages ask for payment again. Use it when the user says to follow up normally again. Idempotent: an account with no such instruction is returned as is. The result carries paymentDateRequest, null once withdrawn; read get-account-dunning-status for the full status.