Configuration ยท Article 3.3
IBAN and BIC: enabling SEPA bank transfers and EPC QR codes
Add your IBAN and BIC and Clozo prints them on every invoice plus an EPC QR code your client can scan from their bank app โ no Stripe required.
Stripe Connect (article 3.4) is the fastest path to getting paid, but it isn't the only one. Many EU freelancers prefer SEPA bank transfer โ no payment-processor fees (1.4-2.9%), no waiting for Stripe payouts (โฌ0.25 + 0.25%), and clients in Germany and the Netherlands often expect it as the default. Clozo supports both side by side: every invoice carries your IBAN/BIC and an EPC QR code, and if Stripe Connect is also enabled, a "Pay with card" button.
Step by step
Open Settings โ Payments โ Bank transfer.
The IBAN and BIC fields are in the SEPA section.
Type your IBAN.
Spaces are allowed (we strip them); case is normalised to uppercase. Format is country-specific (DE: 22 chars, FR: 27, NL: 18, ES: 24, etc.). Clozo validates with python-stdnum on save; an invalid format triggers "The IBAN format is invalid for country DE" or similar.
Type your BIC (recommended).
8 or 11 alphanumeric characters (e.g.,
COBADEFForCOBADEFFXXX). Required by some receiving banks for cross-border SEPA; harmless to include even when not strictly required.Save.
Clozo encrypts the IBAN before writing to the database. The masked form appears immediately in the field; click
Showto reveal the full value (auth-gated, audit-logged).Test on a fresh proposal.
Open
/proposals/new, fill any client, and clickPreviewโ the invoice section now shows your IBAN/BIC and an EPC QR code at the bottom right.
Why this works this way
Why two payment paths on the same invoice? Because EU freelancers serve a mixed client base โ German enterprises pay by SEPA from corporate accounts as a matter of policy; French startup founders prefer card payment because the deposit clears in seconds. Clozo lets you offer both without choosing. The EPC Quick Response Code is a standard published by the European Payments Council (EPC069-12) โ a ~140-byte payload encoding beneficiary name, IBAN, BIC, amount, and reference text. Most EU bank apps (Sparkasse, ING, BNP Paribas, ABN AMRO, BBVA, etc.) recognise it natively: the client scans it, the transfer screen pre-fills, they confirm with their PIN/biometric, and the money is on its way.
IBAN is sensitive financial data, so Clozo encrypts it at rest using Fernet symmetric encryption (django-encrypted-model-fields). The encryption key lives in environment variables, never in the database. When you fetch your profile via the API, you get the full IBAN back (you're the owner); when anyone else queries โ for example a hypothetical admin tool โ they see only the masked form (DE89 **** **** **** **** 5678). The unmasked value is only ever rendered into your invoice PDFs.
Troubleshooting
Keep reading
Configuration
Stripe Connect: enabling card payments end to end
Five minutes through Stripe's onboarding turns on card payments for every future proposal โ no extra config, no separate Stripe dashboard to manage, payouts land in your IBAN.
Configuration
Profile fundamentals: the six fields every invoice needs
Six fields turn a blank account into one Clozo can build legal invoices from โ name, country, language, currency, tax regime, and address. Three are required to send anything at all.
Proposals & Invoices
Marking a payment as paid manually โ for SEPA, cash, wire, anything outside Stripe
When a payment lands outside the auto-detected channels (SEPA bank transfer, cash, foreign wire), use `Mark as paid manually` to record it. Clozo creates the receipt, fires confirmation emails, and preserves the audit trail.