---
title: "FAPI Integration"
description: "FAPI is a Czech invoicing and sales-automation platform for course sellers, membership sites, and small businesses. Agents create and send invoices, record payments, manage clients, order forms, and discount codes, apply vouchers, and pull sales statistics."
url: https://flowrunner.ai/integrations/fapi
date_modified: 2026-09-04T14:53:04-07:00
---

# FAPI

[Accounting](https://flowrunner.ai/integrations/category/finance-accounting)

FAPI is a Czech invoicing and sales-automation platform for course sellers, membership sites, and small businesses. Agents create and send invoices, record payments, manage clients, order forms, and discount codes, apply vouchers, and pull sales statistics.

[Verified](https://flowrunner.ai/integrations/verified "What does verified mean?") · 85 actions · Basic auth · available

[FAPI website](https://fapi.cz/) · [Platform Documentation](https://web.fapi.cz/api-doc/) · Capability data verified 2026-08-25

1.  A form's own notification posts an order to a FlowRunner endpoint
2.  Verify Invoice Notification recomputes the security hash and confirms the record is real
3.  The agent reads the returned paid flag and document type, because a proforma and its invoice both arrive
4.  Get Invoice reads the buyer, the lines, and the item templates behind them
5.  The agent provisions access in the course platform and records the sale
6.  The revenue owner receives the day's orders with anything unresolved called out
7.  A person decides what to do with the payments FAPI could not attach to an invoice

## What This Integration Enables

FAPI is filed under accounting and it is really a selling machine. It is built for Czech course sellers, membership sites, and small businesses whose revenue arrives through an order form, and the order form is the product rather than a page decoration. A form carries the payment methods, the currencies, the items, the discount codes, the consent records, and the automation rules that fire when an order is placed, paid, or canceled. Invoices are what falls out of the end. Reading this connector as an invoicing API misses where the money is actually decided.

FlowRunner agents work at both ends of that funnel. They build and update forms with their automation rows, maintain item templates and their price lists, validate discount codes before an order is attempted, create orders and clients, issue and send invoices, and read the payment queues FAPI could not resolve on its own. Two operations exist purely for safety: Verify Invoice Notification and Verify Voucher Notification recompute the vendor's undocumented security hash and compare it in constant time, so a flow acts on a real record rather than on whatever was posted to a URL somebody guessed. The connector ships no trigger, because a notification URL is configured inside a form's own automation rows and there is no way to subscribe an arbitrary endpoint to an account-wide event stream. Point a form at a FlowRunner endpoint, make verification the first step, and let the [connectors](https://flowrunner.ai/concepts/connectors) do the rest.

### Without FlowRunner

**Notifications trusted on sight**: Anything posted to the callback URL is treated as a real order because nothing verifies it

**Access granted by hand**: Someone reads the order confirmation and provisions the course or membership manually

**Unmatched money sits**: Payments that matched no invoice wait in a queue nobody has time to work through

### With FlowRunner

**Notifications proved before use**: Every delivery is recomputed against the vendor's own hash before a flow acts on it

**Access follows the paid flag**: Provisioning happens on a verified paid invoice, not on an order that may still be a proforma

**Unmatched money is a work list**: Unpaired and unresolved payments are surfaced as a reviewed queue with candidates attached

## Use Case Scenarios

### A paid order becomes access, not a maybe

A customer completes a form and FAPI's own notification posts to a FlowRunner endpoint carrying the invoice reference, a timestamp, and a security value. The agent calls Verify Invoice Notification first, which fetches the record, recomputes the hash from the invoice and its items, and compares it. Only then does anything happen. Because a proforma notification and its invoice notification both arrive for the same sale, the agent reads the paid flag and the document type before provisioning, rather than granting access twice or granting it early. It then creates the account in the course platform, records the sale against the contact in [HubSpot](https://flowrunner.ai/integrations/hubspot), and appends the line to the revenue sheet in [Google Sheets](https://flowrunner.ai/integrations/google-sheets). Without the verification step, anyone who learned the callback URL could post a paid order.

### A campaign that cannot break its own checkout

A promotion is going out, and the discount code is the part that fails quietly. Create Order treats a code that is not found or not valid as fatal: no order is created at all, which the customer experiences as a checkout that simply refused them. So the agent calls Validate Discount Code first, using the form's path rather than its identifier, and only builds the order when the code resolves. Ahead of launch it runs the same check across every code in the campaign and posts the failures to marketing in [Slack](https://flowrunner.ai/integrations/slack). Create Order also requires the consent record the vendor demands: the purpose identifier, the full text shown to the customer, and whether they ticked it. The agent stores what was actually displayed, because a consent record that does not match the page is not evidence of anything.

### The two payment queues, worked separately

FAPI splits unmatched money into two different problems, and treating them as one is how reconciliation stalls. Unpaired payments arrived and matched no invoice, which is a lookup job. Unresolved payments are the ones FAPI could not decide about, which is a judgment job. The agent works the first queue on a schedule: it searches payments by amount, date, and reference, matches them against invoices found through Get Invoice By Number or Search Payments, and records the match. The second queue it does not touch. It assembles each case with the payment details, the closest invoice candidates, and the customer's recent orders, and posts it for a person. Get Statistics gives the finance owner the shape of the month while that work is in progress.

## Human-in-Loop Highlight

The most expensive operation in this connector does not look dangerous. On Create Item Template and Update Item Template, the prices you send replace the entire price list. The vendor states it plainly: any price you do not include is deleted. An agent asked to raise the Czech price on a course template sends one currency, and the euro and dollar prices are gone. Nothing errors, the template still works, and every order form pointing at it now sells in one currency instead of three. The first evidence is a customer emailing to ask why the checkout will not take their card. So a pricing agent never writes a template blind. It calls Get Item Template, diffs the incoming price set against the stored one, and when the write would remove any currency it stops and posts: "Update to template Advanced Course sends CZK 4,900 only. The stored template carries CZK 4,900, EUR 199, and USD 219. Writing this removes EUR and USD from every form referencing it. Send the full price set, or confirm the removal?" A person answers. Read-only price checks and templates whose full currency set is present run unattended, because approving every routine price change trains people to stop reading them.

Agent processes routinely

Detects exception requiring judgment

Clear match Continues automatically

Ambiguous Routes to human via email

Human decides

Agent resumes with decision

## Agent Capabilities

85 actions

### Clients

6

-   **List Clients** Lists customers with filters for date ranges and identifiers. The read behind a sync or an audience export.
-   **Count Clients** Returns how many clients match a filter without pulling them. Used to size a job before running it.
-   **Get Client** Retrieves one client record.
-   **Create Client** Creates a client. Supplying a Czech company registration number pulls the registered details from the public register, and leaving the tax payer flag empty lets FAPI decide it from the VAT identifier.
-   **Update Client** Updates a client's details.
-   **Delete Client** Removes a client record.

### Invoices

12

-   **List Invoices** Lists invoices, with a modified-since filter that returns only what changed and an id cursor that returns only what is new. The two filters a scheduled sync should be built on.
-   **Count Invoices** Returns a match count without returning the invoices.
-   **Get Invoice** Retrieves one invoice as structured data, including its paid flag and document type.
-   **Get Invoice By Number** Finds an invoice by its printed number. The lookup a customer question or a bank reference actually starts from.
-   **Get Invoice PDF** Returns the invoice as a file. It shares a route with Get Invoice and differs only by the requested content type, which the connector sets for you.
-   **Create Invoice** Creates an invoice. Emailing the customer and running the form's automations are both switched off unless you ask for them, so an invoice created through the API reaches nobody until you say so.
-   **Update Invoice** Updates an invoice. The vendor documents no fields on this call beyond the identifier, so a flow checks the result rather than assuming a change was accepted.
-   **Cancel Invoice** Cancels an invoice while keeping the audit trail. The correct operation for a document a customer has already seen.
-   **Delete Invoice** Deletes an invoice outright. Appropriate only for a document that never left the account.
-   **Send Invoice Email** Emails an invoice using a named message template. The template is identified by its name rather than its identifier.
-   **Generate Invoice QR Code** Produces the payment QR code for an invoice, which is how Czech customers usually pay one.
-   **Get Invoice Sequence** Reads a numbering sequence, so a flow can reference a document number before the document exists.

### Invoice Items

4

-   **Add Invoice Item** Adds a line to an invoice.
-   **Get Invoice Item** Retrieves one invoice line.
-   **Update Invoice Item** Changes a line on an invoice.
-   **Delete Invoice Item** Removes a line from an invoice.

### Item Templates

6

-   **List Item Templates** Lists the reusable products behind order forms and invoice lines.
-   **Search Item Templates** Finds a template by query.
-   **Get Item Template** Retrieves one template with its full price list. The read that has to happen before any price write.
-   **Create Item Template** Creates a template. Every currency you intend to sell in has to be present, because the price list is written whole.
-   **Update Item Template** Updates a template. The prices sent replace the entire list, and the item count is required even when it has not changed, so the current record is read first.
-   **Delete Item Template** Removes a template.

### Payments

6

-   **List Payments** Lists payments, including the unpaired ones that matched no invoice and the unresolved ones FAPI could not decide about.
-   **Count Payments** Returns a payment count for a filter.
-   **Search Payments** Finds payments by amount, reference, or date. The matching step in reconciliation.
-   **Get Payment** Retrieves one payment record.
-   **Create Payment** Records a payment against an invoice.
-   **Update Payment** Amends a recorded payment.

### Periodic Invoices

3

-   **List Periodic Invoices** Lists recurring billing schedules.
-   **Get Periodic Invoice** Retrieves one schedule with its period and next date.
-   **Update Periodic Invoice** Changes a schedule. The pay day is required on every call, including one that only suspends the schedule, and the period is written as a phrase with a plural unit rather than as a number.

### Forms

5

-   **List Forms** Lists order forms. This is the inventory of every place the business currently takes money.
-   **Count Forms** Returns a form count for a filter.
-   **Get Form** Retrieves one form with its items, payment methods, consents, and automation rows.
-   **Create Form** Creates an order form. It carries the payment methods, currencies, items, discount codes, legal consents, and the automation rules that fire on order, payment, and cancellation.
-   **Update Form** Updates a form. The form is identified in the request body rather than in the path, which the connector handles.

### Orders

2

-   **Create Order** Places an order against a form. A discount code that is not found or not valid rejects the whole order rather than being skipped, and the consent record is required.
-   **Get Order Conversion** Reads conversion data for an order, which is how a campaign's performance is read back.

### Discount Codes

6

-   **List Discount Codes** Lists the codes configured on the account.
-   **Get Discount Code** Retrieves one code with its rules and validity.
-   **Validate Discount Code** Checks a code against a form before an order is attempted. The pre-check that stops a promotion from refusing customers silently.
-   **Create Discount Code** Creates a discount code.
-   **Update Discount Code** Updates a code's value, rules, or validity window.
-   **Delete Discount Code** Removes a discount code.

### Vouchers

2

-   **Get Voucher** Retrieves a voucher by its identifier.
-   **Apply Voucher** Redeems a voucher, keyed on the printed code rather than the identifier.

### Shipping Methods

5

-   **List Shipping Methods** Lists the delivery options available on forms.
-   **Get Shipping Method** Retrieves one shipping method.
-   **Create Shipping Method** Creates a shipping method.
-   **Update Shipping Method** Updates a shipping method. The carrier type cannot be changed here, so switching carriers means creating a new method.
-   **Delete Shipping Method** Removes a shipping method.

### Message Templates

9

-   **Get Message Template** Retrieves one customer-facing message template.
-   **Create Message Template** Creates a message template.
-   **Update Message Template** Updates a message template.
-   **Delete Message Template** Removes a message template.
-   **List Message Template Sets** Lists the grouped sets a form can reference.
-   **Get Message Template Set** Retrieves one template set.
-   **Create Message Template Set** Creates a template set.
-   **Update Message Template Set** Updates a template set.
-   **Delete Message Template Set** Removes a template set.

### Settings

5

-   **List Settings** Lists account settings.
-   **Get Setting** Reads one setting.
-   **Create Setting** Creates a setting.
-   **Update Setting** Changes a setting.
-   **Delete Setting** Removes a setting.

### Reference

7

-   **List Projects** Lists the projects orders and invoices can be tagged with.
-   **List Countries** Lists country records as FAPI holds them.
-   **Get Exchange Rates** Reads the exchange rates the account prices in.
-   **Get Statistics** Returns sales statistics. The VAT option splits the answer into net and inclusive amounts rather than filtering it.
-   **Get Statistics News** Reads the statistics feed the account publishes.
-   **Get User** Returns the authenticated user.
-   **Get Country Currency Setting** Reads the currency configured for a country, which is what decides how a form prices for that market.

### API Tokens

5

-   **List API Tokens** Lists the account's API tokens. The results carry each token's secret in plain text, so a flow reading them is handling credentials.
-   **Get API Token** Retrieves one token, with the same caution.
-   **Create API Token** Issues a token. One per integration means any of them can be revoked without breaking the others.
-   **Update API Token** Updates a token's details.
-   **Delete API Token** Revokes a token.

### Notifications

2

-   **Verify Invoice Notification** Fetches the invoice named in a notification, recomputes the vendor's security hash, and compares it in constant time. It also returns the paid flag and document type, because verifying a delivery is not the same as knowing the invoice was paid.
-   **Verify Voucher Notification** Does the same for a voucher notification, against the voucher's own hash recipe.

## Frequently Asked Questions

### What can FlowRunner do with FAPI?

FlowRunner agents can run List Clients, Count Clients, and Get Client in FAPI, plus 82 more actions.

### Does connecting FAPI to FlowRunner require OAuth?

No. FAPI connects to FlowRunner with basic authentication (a username and password), no OAuth flow required.

### Can FAPI trigger a FlowRunner workflow automatically?

FAPI doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

**Work at FAPI?** This integration exposes FAPI to AI agents on every FlowRunner plan, including through MCP, at no cost to you. [See what FlowRunner offers integration partners](https://flowrunner.ai/integrations/partners), including how to keep this page current.

---
Markdown version of https://flowrunner.ai/integrations/fapi. Site index: https://flowrunner.ai/llms.txt
