Collections and Payments
This module lets you record and track the payments your clients make, from recording a manual bank transfer to receiving online card payments and reconciling them against your bank statement.
Who this journey is for and prerequisites
This guide continues the Your First Invoice journey for freelancers (autónomos) and small businesses (PYMEs) that have issued an invoice and want to collect payment, verify its full or partial status, and reconcile it with their bank statement.
Before starting, check the requirements for the collection method you plan to use:
| Collection method | Required plan | Prerequisites in Frihet | Required invoice status |
|---|---|---|---|
| Manual bank transfer | Any plan (Free, Pro, Premium, Enterprise) | None (optional: include your IBAN under Notes / Legal Info). | Sent / Issued (not Draft). |
SEPA QR code (EPC069-12 v2.0) on the PDF | Any plan | IBAN configured in Settings → Tax Profile and invoice issued in EUR. | Unpaid (the QR code is embedded automatically when generating the PDF). |
| Card payment link (Stripe Connect) | Pro or higher | Stripe Connect account active in Integrations. | Sent, unpaid, and whose Due Date has not yet passed. |
Continuing example: collecting the invoice from Estudio Norte S.L.
Continuing the synthetic walkthrough from Your First Invoice, this guide uses a documentation-only example to illustrate the figures, statuses, and UI checkpoints:
- Synthetic client:
Estudio Norte S.L.· corporate CIFB12345674(passes algorithmic check digit4validation invalidateCIF_ES(), but does not prove existence, ownership, or registration in the AEAT census) · emailfacturacion@example.com(IANA/RFC 6761 documentation domain; not a controlled QA mailbox or a delivery/blocking guarantee). - Invoice:
F-2026-0001forServicio de consultoría técnica (octubre)(10units ×€150.00). - Amount to collect:
- Without IRPF withholding (corporate or B2B without professional withholding): taxable base
€1,500.00+21%VAT (€315.00) =€1,815.00. - With
15%professional IRPF withholding (self-employed professional): taxable base€1,500.00+21%VAT (€315.00) -15%IRPF (€225.00) =€1,590.00net receivable in your bank account. 50%partial payment case (without IRPF): first payment of€907.50(the invoice moves to Partial status with a remaining balance of€907.50).
- Without IRPF withholding (corporate or B2B without professional withholding): taxable base
The F-2026-0001 scenario with Estudio Norte S.L. (B12345674, facturacion@example.com) is solely designed to teach what to verify in the UI and how to recover from common errors. It is not an instruction to issue a live invoice, trigger a real Stripe charge, or reconcile a real bank deposit using fictitious data. To execute actions with external side effects, use your own legitimate data with proper authorization, or an authorized QA environment with controlled resources and mailboxes; documentation fixtures do not prove runtime payment collection or bank reconciliation.
Step-by-step journey: from sending to reconciled payment
The collection lifecycle starts with the invoice in Sent status (F-2026-0001), transitions to Partial (€907.50 collected and €907.50 remaining) or directly to Paid (€1,815.00 without IRPF / €1,590.00 with IRPF), and finishes once the deposit is matched in Finance → Banking and verified in Reports → Payments:
State flow: Invoice → Partial or full payment → Bank reconciliation
Estudio Norte S.L. · F-2026-0001 (€1,815.00)status: sent€1,815.00Invoice F-2026-0001 leaves Draft status and awaits collection for the full total (€1,500.00 subtotal + €315.00 21% VAT).
Partial (€907.50)Full (€1,815.00)If an installment arrives, paidAmount increases and a remaining balance stays open; if 100% arrives, it transitions directly to Paid.
status: paidBalance: €0.00Once the full total is covered (in one transfer or across installments), the invoice is settled and emits invoice.paid.
Finance → Reconciliationmatch_transaction_to_invoiceThe bank statement credit line (CSV/Open Banking) is linked to F-2026-0001 by matching amount, date, and tax ID B12345674.
Draft → Sent (€1,815.00 due) → 50% partial payment (€907.50 paid, €907.50 remaining) → Final 50% payment → Paid (€0.00 remaining) → Reconciled against 2 bank transactions.
Draft → Sent (€1,815.00 due) → Mark as paid / Stripe / single wire (€1,815.00) → Paid → Reconciled against 1 bank transaction.
View textual specification and Mermaid state source
stateDiagram-v2
[*] --> Sent: Issue F-2026-0001 (€1,815.00)
Sent --> PartiallyPaid: Partial payment (e.g. €907.50 -> paidAmount < total)
Sent --> Paid: Full payment (€1,815.00 -> mark_invoice_paid / POST /v1/invoices/:id/paid)
PartiallyPaid --> Paid: Remaining balance collected (€907.50)
Paid --> Reconciled: Matched to bank statement transaction (Finance -> Reconciliation)Step 1. Choose collection method (bank transfer/SEPA QR vs Stripe link)
- If you collect by bank transfer or SEPA QR: download or send the PDF for invoice
F-2026-0001. When your IBAN is configured and the invoice is inEUR, the PDF automatically includes the EPC069-12 v2.0 SEPA QR code carrying the exact amount (€1,815.00or€1,590.00) and referenceF-2026-0001soEstudio Norte S.L.can scan it from their mobile banking app. - If you collect by card via Stripe Connect: while the invoice is in Sent status and before its due date, open the invoice menu, click Payment link, and use Share link to send it to the client.
Step 2. Record or receive the payment (full or partial)
- Online path (Stripe Connect): as soon as
Estudio Norte S.L.completes the card payment in Stripe Checkout, Frihet automatically records the payment and marks invoiceF-2026-0001as Paid without manual intervention. - Manual or programmatic path (Web UI, REST API, or MCP): choose the channel you use to operate your account:
- Web UI
- REST API
- MCP
- Go to Sales → Invoices and open invoice
F-2026-0001. - Click Record payment.
- Enter the Amount received:
- If you received the full amount (
€1,815.00without IRPF or€1,590.00with IRPF), the invoice moves to Paid. - If you agreed on a
50%installment (€907.50), enter€907.50: the invoice moves to Partial status, showing€907.50collected and€907.50outstanding.
- If you received the full amount (
- Select the Payment method (
Bank transfer,Manual, orOther), set the actual Date the funds arrived, and click Record payment.
To mark an invoice as 100% paid (POST /v1/invoices/{invoiceId}/paid) or update its status after a deposit (PATCH /v1/invoices/{invoiceId}):
# Full payment (1,815.00 EUR) -> "paid" status
curl -X POST "https://api.frihet.io/v1/invoices/inv_01J8X9N4P2/paid" \
-H "X-API-Key: $FRIHET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"paidDate": "2026-10-15"}'
From your agent connected to @frihet/mcp-server, call mark_invoice_paid for full collection or match_transaction_to_invoice when reconciling the bank transaction:
{
"tool": "mark_invoice_paid",
"arguments": {
"id": "inv_01J8X9N4P2",
"paidDate": "2026-10-15"
}
}
Step 3. Reconcile with your bank statement
- Go to Finance → Banking and click Import Statement to upload your bank statement transactions.
- Verify that the deposit from
Estudio Norte S.L.(€1,815.00,€1,590.00, or€907.50) matches invoiceF-2026-0001. - Open Reports → Payments, filter the current period, and confirm the payment appears with its date, invoice number, client, method, and amount (you can download the table via Export CSV).
Expected result
When you complete this journey on invoice F-2026-0001, you will see three verifiable outcomes in your account:
- Updated status badge in the invoice list: in Sales → Invoices,
F-2026-0001displays Paid (when the remaining balance is€0.00) or Partial showing the collected amount over the total (€907.50 / €1,815.00). - Traceable payment history on the invoice: inside the invoice detail view, the payment history lists the date, method, and amount, plus the Reverse button for manually recorded entries if you ever need to undo a mistake.
- Reflected in reports and bank reconciliation: the collection appears in Reports → Payments ready for CSV export and matches the imported bank transaction in Finance → Banking.
Record a payment
When the client pays outside Frihet (transfer, cash, check):
- Go to Sales → Invoices and open the invoice.
- Click Record payment.
- In the dialog enter:
- Amount: what you received.
- Payment method: Bank transfer, Manual or Other.
- Date: when you received the money.
- Notes: for your records (optional).
- Click Record payment.
The invoice becomes paid when the collected amount reaches the total. If you make a mistake, Reverse in the invoice payment history undoes the payment.
In bulk
If several invoices were paid together:
- In Sales → Invoices, select the invoices with the checkboxes.
- Click Mark Paid and confirm.
Use it after reconciling with your bank. Frihet does not split a single payment across several invoices; see Multi-invoice payment.
Partial payments
If the client pays only part of the invoice, record the payment with an amount below the total (for example, 500 of 1,000 EUR). The invoice stays partially paid, showing the amount collected and the balance, and you can record each later payment. In the list, the invoice shows the Partial status and the amount collected out of the total. An amount above the outstanding balance is rejected. See Partial Payments.
Payment terms
Payment terms define how long the client has to pay. When creating the invoice you can choose:
- Due on receipt
- Net 15 days, Net 30 days, Net 45 days, Net 60 days or Net 90 days
- Custom date
Terms per client
If all of a client's invoices are paid on the same schedule, set Default payment terms on their record in Contacts. New invoices to that client use them, and you can change them on each invoice.
Online payments (Stripe Connect)
Frihet integrates with Stripe Connect to receive card payments.
Enable Stripe Connect
- Go to Integrations and find the Stripe Connect card.
- Follow the Stripe connection and authorization process.
- When Stripe confirms your account, you return to Frihet with Stripe connected.
Payment link
With Stripe connected:
- Open an issued invoice.
- Click Payment link.
- Copy the link with Share link and send it to the client.
Automatic reminders include the link to the invoice portal, from which the client can pay if you are on the Pro plan or higher and have Stripe connected.
Payment flow
- The client opens the link and sees the invoice summary.
- They enter their card details in the Stripe checkout.
- Stripe processes the payment.
- Frihet marks the invoice as paid and records the payment.
More detail in Payment link.
Bank direct debit (SEPA)
Frihet does not initiate SEPA direct debits or manage direct debit mandates. If you agree with a client that their bank pays you by direct debit, you handle the debit outside Frihet and record the payment by hand with Record payment when the money arrives. If you collect by direct debit with GoCardless, connect the integration to import those payments.
Payment reminders
Automatic
-
Go to Settings → Payment reminders. Automatic reminders are on by default. To adjust them:
-
Define how many days before or after the due date each reminder is sent (negative values are sent before) and which levels to turn off.
Frihet emails the client on that schedule. More detail in Payment reminders.
Send a manual reminder
- Open the overdue invoice.
- Click Send reminder.
- Review the email and send it.
You can also select several invoices in the list and click Remind.
Manage overdues
Invoices that fall due without being paid move to the Overdue status.
Overdue analysis
Go to Reports → Aging to see outstanding invoices by bracket (current, 1-30, 31-60, 61-90 and 90+ days), with these figures:
| Metric | Description |
|---|---|
| Total Outstanding | Total amount receivable |
| Total Overdue | Amount whose due date has passed |
| Overdue Invoices | Number of overdue invoices |
| Avg Days | Average days overdue |
| Top Overdue Clients | Who owes the most |
From that report you can click Send reminder on each invoice.
Actions for overdue invoices
- Send reminder by email.
- Apply late fee (see Late Fees).
- Record payment if they finally paid.
- Create credit note if it will be cancelled (see Correction Invoices).
Refunds
On invoices, Frihet does not process refunds of money or card refunds. To record a return fiscally, create a correction invoice from the original invoice with Create credit note (see Correction Invoices). Returning the money to the client happens outside Frihet.
Bank reconciliation
To match payments against your bank:
- Go to Finance → Banking and use Import Statement to load the statement.
- Review the transactions and compare them with the recorded payments.
- Check Reports → Payments to see the payments of the period. Filter by dates, client or method and click Export CSV to download date, invoice number, client, method, amount, currency and gateway.
Look for discrepancies such as paid invoices without a bank deposit, deposits without an associated invoice, and date differences (Frihet records the payment date; the bank records the value date).
Common issues and recovery
| Issue or symptom | Verified root cause | How to resolve it |
|---|---|---|
| The "Payment link" button does not appear on the invoice | The invoice is still in Draft, is already Overdue or Paid, your account is on the Free plan (requires Pro or higher), or Stripe Connect is not active. | Confirm the invoice is in Sent status and not yet past its due date, verify your plan, and check your Stripe connection in Integrations (see Payment link). |
| The form rejects the amount when clicking "Record payment" | The entered amount exceeds the invoice's outstanding balance (for example, a partial payment was already recorded or you entered €1,815.00 on an invoice whose net receivable after IRPF withholding is €1,590.00). | Check the remaining balance displayed on the invoice and review previous entries in the payment history before submitting. |
| I recorded a manual payment by mistake or with the wrong date | Human error when entering the manual payment in Record payment. | Open the invoice in Sales → Invoices, locate the entry in the payment history, click Reverse, and record the payment again with the correct details. |
| The payment appears in Frihet but does not match the bank statement | Difference between the recorded payment date and the bank's value date, or a Stripe payout where processing fees were deducted before settlement. | Match the transaction in Finance → Banking accounting for gateway fees or payout timing. See Bank Reconciliation for details. |
| The client requests a refund after paying the invoice | Frihet does not execute bank transfers or card refunds from the invoice screen. | Issue a corrective invoice from the original invoice using Create credit note (Correction Invoices) and refund the funds through your bank or Stripe dashboard. |
Common use cases
Recurring client at 60 days
- Set the client's Default payment terms to Net 60 days.
- Each new invoice falls due in 60 days.
- Adjust the Payment reminders schedule if you want a notice before the due date.
Immediate payment with Stripe
- You create and issue the invoice.
- You generate the Payment link.
- The client pays online and the invoice is marked as paid.
Current limits and next action
Keep these verified product boundaries in mind when managing collections:
- No SEPA direct-debit initiation: Frihet does not initiate SEPA direct debits or manage mandates (except importing collections via GoCardless).
- No single-payment splitting in the single-invoice dialog: Record payment applies to one invoice and Mark Paid closes selected invoices for their full balance; to group multiple invoices into one payment operation, see Multi-invoice payment.
- No bank or card refund execution from the invoice view: fiscal adjustments use Create credit note (Correction Invoices) while the monetary refund is executed in your bank or payment gateway.
Recommended next steps:
- Reconcile your bank statement in detail: review the 5-state transaction pipeline and matching rules in Bank Reconciliation.
- Review how collections and issued invoices feed your quarterly taxes: see how your invoices flow into
Modelo 303,Modelo 130, orIGICin Tax Models. - Troubleshoot gateway or email delivery issues: check the diagnostic matrix in Support & Quick Troubleshooting.