Format pliku importu

Jak przygotować plik, który Firmbit wczyta, i jak wyjąć z programu swoje dane. Adres do wysłania informatykowi albo wklejenia asystentowi AI — kolumny, kodowanie i przykładowy plik są tu wypisane wprost.

Najkrócej, jak się da

  • Do środka z pliku wchodzą dziś dwie rzeczy: baza klientów z pliku CSV oraz własna kopia zapasowa Firmbita (backup.json). Nic poza tym.
  • Na zewnątrz wychodzi całość: pełna kopia ZIP (JSON + Excel + CSV + PDF-y faktur) oraz eksport pojedynczych tabel do CSV, XLSX i JSON.
  • Nie ma publicznego API ani webhooków. Wymiana danych odbywa się przez pliki.
  • Kodowanie zawsze UTF-8, separator CSV: średnik. Kwoty są netto, w złotych, z kropką dziesiętną. Daty w plikach eksportu — pełny format ISO 8601.

Import bazy klientów z pliku CSV

W aplikacji: Klienci → Importuj. Plik możesz wgrać albo wkleić jego treść wprost do okna — przed dodaniem zobaczysz podgląd tego, co program z niego wyczytał. To jedyne miejsce w całym Firmbicie, które przyjmuje CSV.

  • Format: CSV (zwykły plik tekstowy). Excel zapisuje go przez „Zapisz jako → CSV”.
  • Kodowanie: UTF-8. To jedyne, które czytamy — plik zapisany domyślnym kodowaniem polskiego Excela pokaże krzaki zamiast ogonków.
  • Separator: średnik (rozpoznajemy też tabulator i przecinek — patrz niżej).
  • Pierwszy wiersz to nagłówek z nazwami kolumn. Bez nagłówka też zadziała, ale wtedy kolejność kolumn musi być dokładnie taka jak w tabeli poniżej.
  • Maksymalnie 1000 wierszy w jednym pliku. Większą bazę podziel na kilka plików i wczytaj po kolei.
Nagłówek kolumnyWymaganaFormatPrzykładGdy wartość nie pasuje
Nazwalub: Name, Imię, Imie, KlienttakTekst, co najmniej 2 znakiBUD-MAX KowalskiWiersz jest pomijany — bez nazwy nie ma czego dodać do bazy.
NIPnie10 cyfr; myślniki i spacje usuwamy sami123-456-78-90Klient trafia do bazy BEZ numeru NIP (reszta danych zostaje). Nie sprawdzamy sumy kontrolnej.
Emaillub: E-mail, MailnieAdres z małpą i kropką w domeniebiuro@bud-max.plPole zostaje puste, klient i tak jest dodawany.
Telefonlub: Phone, Tel, Komórka, KomorkanieDowolny tekst — zapisujemy dokładnie tak, jak w pliku600 100 200Nie ma czego zepsuć — nie sprawdzamy numeru.
Miastolub: CitynieTekstKrakówPuste pole.
Adreslub: Address, UlicanieTekst — ulica z numerem, w JEDNEJ kolumnieKwiatowa 5/2Puste pole. Działa tylko w pliku z nagłówkiem.
Kodlub: Kod pocztowy, PostalCode, ZipnieTekst31-000Puste pole. Działa tylko w pliku z nagłówkiem.

Przykładowy plik

Zapisz to jako klienci.csv w kodowaniu UTF-8 — albo wklej wprost do okna importu w aplikacji.

Nazwa;NIP;Email;Telefon;Miasto;Adres;Kod
BUD-MAX Kowalski;1234567890;biuro@bud-max.pl;600 100 200;Kraków;Kwiatowa 5/2;31-000
Wspólnota Mieszkaniowa Lipowa 8;9876543210;zarzad@lipowa8.pl;12 345 67 89;Kraków;Lipowa 8;30-100
Anna Nowak;;anna.nowak@example.com;501 234 567;Wieliczka;Solna 1;32-020

Jak rozpoznajemy nagłówek i separator

  • Separator ustalamy na podstawie PIERWSZEGO wiersza: jeśli jest w nim średnik — separatorem jest średnik, w przeciwnym razie tabulator, a na końcu przecinek. Dlatego nie wstawiaj średników w nazwach kolumn ani w danych.
  • Nagłówek rozpoznajemy, gdy w pierwszym wierszu stoi choć jedna znana nazwa kolumny. Porównanie jest dokładne (wielkość liter nie ma znaczenia), więc „Nazwa” zadziała, a „Nazwa klienta” już nie — ta kolumna zostanie zignorowana.
  • Bez nagłówka czytamy kolumny po kolei: Nazwa, NIP, Email, Telefon, Miasto. Adres i kod pocztowy w takim pliku nie zostaną wczytane.
  • Puste wiersze pomijamy, spacje na brzegach wartości obcinamy, a cudzysłów na początku i końcu wartości zdejmujemy. To ostatnie NIE jest pełną obsługą cytowania z CSV: wartość, w której siedzi separator albo przejście do nowej linii, rozjedzie wiersz mimo cudzysłowów.
  • Kolumn, których nie znamy, nie ruszamy — nadmiarowe kolumny w pliku nie przeszkadzają.

Co się dzieje z błędnym wierszem

  • Brak nazwy (albo krótsza niż 2 znaki) — wiersz jest pomijany. Import się nie przerywa: reszta pliku wchodzi normalnie, a po wszystkim dostajesz podsumowanie „dodano / pominięto / błędne”.
  • Powtórzony NIP — wiersz jest pomijany. Sprawdzamy zarówno klientów, których już masz w bazie, jak i duplikaty wewnątrz samego pliku. To znaczy, że ten sam plik możesz bezpiecznie wczytać drugi raz — klienci z NIP-em nie zdublują się.
  • Klient bez NIP-u (osoba prywatna) zostanie dodany zawsze, także wtedy, gdy taki sam wpis już istnieje — po samej nazwie nie łączymy rekordów, bo dwie różne osoby mogą nazywać się tak samo.
  • Zły NIP lub e-mail nie wywala wiersza — klient wchodzi do bazy, a niepoprawne pole zostaje puste do ręcznego uzupełnienia.
  • W pakiecie darmowym baza klientów ma limit 10 pozycji. Import nie obchodzi limitu: dodaje tyle, ile się mieści, a resztę pomija i pisze o tym wprost.

Gotowe polecenie dla asystenta AI

Nie chcesz nic przepisywać ręcznie? Skopiuj poniższy tekst, wklej go do dowolnego asystenta AI razem ze swoim plikiem i odbierz gotowy plik CSV, który wgrywasz w Klienci → Importuj. Wszystkie reguły formatu są w środku, więc asystent nie musi otwierać tej strony.

Przerób mój plik z bazą klientów na format importu programu Firmbit.

Wynik ma być plikiem CSV o takich zasadach:
1. Kodowanie UTF-8 (bez BOM), separator: średnik, koniec wiersza: zwykły enter.
2. Pierwszy wiersz to nagłówek DOKŁADNIE taki:
Nazwa;NIP;Email;Telefon;Miasto;Adres;Kod
3. Jeden klient = jeden wiersz. Kolumna Nazwa jest obowiązkowa i musi mieć co najmniej 2 znaki. Jeśli w moim pliku imię i nazwisko są w osobnych kolumnach, połącz je w jedną Nazwę.
4. NIP: same cyfry albo z myślnikami (10 cyfr). Jeśli numer ma inną długość albo go nie ma, zostaw puste miejsce zamiast wpisywać zero, myślnik czy słowo brak.
5. Email: pojedynczy adres. Jeśli w źródle jest kilka adresów, zostaw pierwszy. Jeśli nie ma adresu, zostaw puste.
6. Telefon: przepisz jak jest. Jeśli jest kilka numerów, zostaw pierwszy.
7. Adres: ulica i numer w jednej kolumnie, kod pocztowy osobno w kolumnie Kod.
8. WAŻNE: w żadnej wartości nie może być średnika ani przejścia do nowej linii — zamień je na przecinek albo spację. Cudzysłowy nie chronią wartości w tym imporcie.
9. Usuń duplikaty po numerze NIP (Firmbit i tak pominie drugi taki sam NIP).
10. Nie dopisuj żadnych dodatkowych kolumn, komentarzy ani wierszy podsumowania. Maksymalnie 1000 wierszy w jednym pliku.

Oddaj mi gotowy plik CSV do pobrania. Specyfikacja formatu: https://firmbit.pl/import

Wysyłasz to informatykowi? Wystarczy adres tej strony: firmbit.pl/import.

Kopia zapasowa (backup.json)

Drugim — i ostatnim — plikiem, który Firmbit czyta, jest jego własna kopia zapasowa: backup.json z eksportu albo z cotygodniowej paczki wysyłanej mailem. Wczytasz go w Ustawieniach → Kopia zapasowa: program najpierw pokazuje, co dokładnie doda i co nadpisze, i dopiero potem wykonuje import.

  • Tego pliku nie buduje się ręcznie. Ma własną wersję formatu i wewnętrzne powiązania, które przy wczytaniu są przeliczane. Do przeniesienia danych z innego programu służy CSV z klientami opisany wyżej.
  • Przywraca: klientów, zlecenia razem z kosztami, faktury, magazyn oraz listy firmowe (statusy zleceń, kategorie, profile cen). Przy wczytaniu wybierasz, które z tych rzeczy odtworzyć.
  • Nie przywraca: wycen, zadań ekipy, kosztów stałych, wydarzeń kalendarza, list zakupowych, danych pracowników, godzin pracy ani zdjęć. Protokoły pomiarowe są zapisane w pliku, ale przywracanie ich nie odtwarza — dla nich kopia jest archiwum do odczytu. Mówimy o tym wprost, żeby nikt nie odkrył tego dopiero przy przenosinach.
  • Zaznaczenie zleceń wymusza listę statusów — każde zlecenie musi mieć status, więc bez niej nie miałoby dokąd wrócić.

Eksport — jak wyjąć dane z Firmbita

Wszystko, co program trzyma, da się z niego wyjąć. Eksport uruchamiasz w Ustawieniach → Kopia zapasowa i eksport. Ponieważ to wyniesienie całej bazy firmy, przed pobraniem program prosi o potwierdzenie drugim składnikiem logowania (2FA) — jedno potwierdzenie obejmuje wszystkie pobrania przez kolejne 10 minut. Każde pobranie zapisuje się w dzienniku konta.

Pełna kopia (jeden plik ZIP)

Archiwum robocznik-backup-RRRR-MM-DD.zip zawiera te same dane w czterech postaciach naraz:

W archiwumCo to jest
backup.jsonPlik główny. JEDYNY, który da się wczytać z powrotem do Firmbita — patrz sekcja wyżej.
dane.xlsxSkoroszyt Excela z arkuszami: Info, Klienci, Zlecenia, Faktury, Koszty, Protokoły, Obwody, Statusy, Kategorie. Do czytania, nie do importu.
csv/Osobne pliki: klienci.csv, zlecenia.csv, faktury.csv, koszty.csv, magazyn.csv, magazyn-ruchy.csv oraz protokoly.csv i protokoly-obwody.csv. Separator średnik, kodowanie UTF-8 ze znacznikiem BOM (żeby Excel od razu pokazał ogonki). Wartości zaczynające się od znaku równości, plusa lub małpy poprzedzamy apostrofem — to ochrona przed traktowaniem komórki jak formuły.
faktury-pdf/PDF-y wszystkich faktur wystawionych w Firmbicie, nazwane numerem faktury.
protokoly-pdf/Gotowe PDF-y protokołów wgrane z innych programów.
README.txtOpis zawartości archiwum, dołączony do paczki — żeby był pod ręką także bez internetu.

Eksport pojedynczej tabeli

Gdy potrzebujesz jednej rzeczy — na przykład samych faktur do księgowej — pobierz pojedynczą tabelę. Adres ma postać /api/export/<tabela>?format=<format> i działa tylko dla zalogowanej osoby (to nie jest publiczne API).

  • Tabele: clients (klienci), jobs (zlecenia), invoices (faktury), costs (koszty), materials (magazyn), protocols (protokoły).
  • Formaty: csv (domyślny), xlsx oraz json. Wariant JSON to wycinek pliku kopii zapasowej — nie jest pełną kopią i nie da się go wczytać z powrotem.
  • Zakres dat: parametry from i to w formacie RRRR-MM-DD. Działają tak samo dla pełnego archiwum.
  • Pliki eksportu są bogatsze niż plik importu klientów: mają rozwiązane nazwy powiązań (klient, status, kategoria) i policzone sumy. To celowe — eksport ma być czytelny dla człowieka i dla innego programu, a nie wracać do nas.

Co wchodzi z pliku, a co nie

Żeby nikt nie tracił czasu na przygotowywanie pliku, którego program nie przyjmie — pełna lista. Nie zapowiadamy tu importów, których nie ma.

DaneWczytanie z plikuUwagi
KlienciWczytasz z pliku CSVPlik CSV wgrywasz w Klienci → Importuj. Format opisany niżej — to jedyny import z pliku w całym programie.
Zlecenia, koszty, faktury, magazynTylko z kopii zapasowejZ pliku CSV ani z Excela nie wczytamy. Wchodzą wyłącznie z własnej kopii zapasowej Firmbita.
Wyceny, zadania ekipy, koszty stałeBrak wczytywania z plikuNie wczytamy ich z żadnego pliku — nie przenosi ich nawet kopia zapasowa. Wpisuje się je w aplikacji.
Protokoły pomiaroweBrak wczytywania z plikuNie wczytamy z pliku; kopia zapasowa je zapisuje, ale przy przywracaniu nie odtwarza. Gotowy PDF z innego programu można dołączyć do protokołu jako załącznik — to przechowanie pliku, nie odczyt danych.
Faktury zakupoweBrak wczytywania z plikuNie z plików XML ani PDF. Zaciągamy je prosto z KSeF, z podglądem i wyborem pozycji (od pakietu Premium) — to nie jest import pliku.
  • Nie mamy publicznego API ani webhooków, więc nie da się dziś podpiąć Firmbita do innego programu na żywo. Jeśli potrzebujesz integracji, której tu nie ma, napisz — takie zgłoszenia realnie ustawiają kolejność prac.
  • Zdjęć i skanów nie trzymamy poza dwoma wyjątkami: zdjęcia dowodowe przy zadaniach oraz podpisy i PDF-y przy protokołach. Do reszty w zleceniu podpina się linki do albumów.

Krzaki zamiast polskich liter?

To zawsze jest kodowanie. Excel zapisuje CSV domyślnie w kodowaniu windowsowym, a my czytamy UTF-8. W Excelu wybierz „Zapisz jako → CSV UTF-8 (rozdzielany przecinkami)”, w Arkuszach Google „Pobierz → Wartości rozdzielane przecinkami”, a w Notatniku przy zapisie ustaw kodowanie UTF-8. Nazwy firm z ogonkami przestaną się sypać.

Coś dalej nie wchodzi? Napisz na kontakt@firmbit.pl i dołącz kilka pierwszych wierszy pliku — odpowiemy, co poprawić. Więcej instrukcji krok po kroku znajdziesz w bazie wiedzy.

Masz już gotowy plik z klientami? Wróć do aplikacji i wejdź w Klienci → Importuj. Kopię zapasową wczytasz w Ustawieniach → Kopia zapasowa.