Plik wsadowyWykaz umówTFG / UFG

Plik wsadowy do wykazu umów TFG: szablon CSV/JSON i przykład krok po kroku

CSV czy JSON, jakie pola wypełnić, skąd wziąć słowniki kodów i dlaczego plik bywa odrzucany - praktyczny przewodnik po pliku wsadowym do wykazu umów TFG, z przykładem krok po kroku.

8 min czytania
Przygotowanie pliku wsadowego CSV/JSON z wykazem umów TFG na ekranie laptopa

Plik wsadowy to najszybszy sposób, by przekazać do TFG wiele umów naraz - bez ręcznego przeklikiwania formularza. Trzeba go tylko zbudować zgodnie ze ściśle określoną strukturą. W tym przewodniku pokazujemy, czym różni się plik CSV od JSON, jakie pola wypełnić, jak wygląda gotowy plik na konkretnym przykładzie i dlaczego wykaz bywa odrzucany przez UFG.

CSV czy JSON - który format wybrać

System TFG przyjmuje pliki w dwóch formatach. Możesz korzystać z obu zamiennie - różnią się głównie tym, jak złożone umowy potrafią pomieścić:

CSVJSON
Warianty podróżytylko 1 wariant na umowędo 50 wariantów na umowę
Kiedy się sprawdzaproste umowy, eksport prosto z Excelaumowy złożone: różne terminy, transport, miejsca realizacji
Strukturapłaska (wiersz = umowa)zagnieżdżona (obiekty i tablice)
Limit umów w pliku50005000

W skrócie: jeśli każda Twoja umowa to jeden wyjazd dla grupy podróżnych i dane masz w arkuszu - wybierz CSV. Jeśli w ramach jednej umowy występują różne warianty (np. część osób leci, część jedzie autokarem, albo są dwa różne terminy) - potrzebujesz JSON, bo CSV takiej umowy nie obsłuży.

To uzupełnienie, nie zamiennik

Plik wsadowy to jeden z trzech sposobów zasilania wykazu - obok interaktywnego formularza i integracji API. Pełne porównanie metod oraz zakres wymaganych danych opisaliśmy w artykule Wykaz umów TFG od 1 lipca 2026.

Zanim zaczniesz: co przygotować

UFG udostępnia w Portalu TFG komplet materiałów, które warto pobrać przed pierwszą wysyłką:

  • szablon i instrukcję przygotowania pliku CSV z Excela,
  • przykładowe pliki wsadowe (wzorcowe CSV i JSON),
  • słowniki kodów - kraje, lotniska (ICAO), zakres terytorialny, przedmiot umowy, sposób płatności, waluty,
  • plik z regułami walidacji - lista warunków, które musi spełnić każda umowa.

Do tego potrzebujesz eksportu z własnego systemu rezerwacji lub arkusza, w którym prowadzisz umowy. To z niego przeniesiesz dane do struktury wymaganej przez TFG - i to właśnie tutaj pojawia się najwięcej pracy, bo część pól (kody ICAO, zakres terytorialny, przedmiot umowy) typowy system rezerwacyjny nigdy nie zapisywał.

Jakie pola musi zawierać każda umowa

Wykaz prowadzi się dla każdej umowy (nie dla każdego uczestnika). Dla nowej umowy (zasilenie typu „nowe dane”) plik musi zawierać co najmniej poniższe pola. Zwróć uwagę na wymagane formaty - to przez nie najczęściej „wykłada się” walidacja:

PoleFormat / słownikPrzykład
nrUmowyRezerwacjitekst, maks. 50 znaków, unikatowyREZ-2026-0042
dataZawarciaUmowydata RRRR-MM-DD2026-07-05
przedmiotUmowysłownik przedmiotów umówimpreza turystyczna
sposobPrzyjmowaniaWplatsłownik sposobów płatnościprzelew
liczbaPodroznychliczba dodatnia2
terminRealizacjiOd / Dodata RRRR-MM-DD2026-09-10 / 2026-09-17
zakresTerytorialnysłownik zakresów terytorialnychEuropa
krajsłownik krajówGrecja
miejscowoscTrasatekst, maks. 100 znakówHeraklion
rodzajSrodkaTransportusłownik rodzajów transportulotniczy czarterowy
kodLotniskaDocelowegosłownik lotnisk (ICAO), gdy jest przelotLGIR
lacznaCenaUslugliczba w formacie #.## (> 0)7400.00
walutaUslugsłownik walutPLN

Opcjonalnie dodajesz tablice wplaty (terminy i kwoty faktycznych przedpłat) oraz zwroty (jeśli zwrot został dokonany) - każda do 286 pozycji.

Przykład: jedna umowa krok po kroku

Weźmy konkretną umowę: wycieczkę czarterową dla 2 osób na Kretę, zawartą 5 lipca 2026, z wylotem 10 września i powrotem 17 września. Cena 7400 zł, dwie wpłaty. Najpierw przenosimy dane do pól TFG:

  1. 1Nagłówek umowy - numer rezerwacji, data zawarcia, przedmiot umowy (impreza turystyczna) i sposób przyjmowania wpłat.
  2. 2Wariant podróży - liczba podróżnych i terminy realizacji „od/do”.
  3. 3Miejsce realizacji - zakres terytorialny, kraj i miejscowość/trasa.
  4. 4Transport - rodzaj środka transportu, a przy przelocie również kod lotniska ICAO.
  5. 5Cena i wpłaty - łączna cena z walutą oraz faktycznie dokonane przedpłaty.

W formacie JSON ta sama umowa wygląda tak:

wykaz_nowe_dane.json
{
  "umowy": [
    {
      "nrUmowyRezerwacji": "REZ-2026-0042",
      "dataZawarciaUmowy": "2026-07-05",
      "przedmiotUmowy": "IMPREZA_TURYSTYCZNA",
      "sposobPrzyjmowaniaWplat": "PRZELEW",
      "warianty": [
        {
          "liczbaPodroznych": 2,
          "terminRealizacjiOd": "2026-09-10",
          "terminRealizacjiDo": "2026-09-17",
          "miejsceRealizacjiUmowy": [
            {
              "zakresTerytorialny": "EUROPA",
              "kraj": "GR",
              "miejscowoscTrasa": "Heraklion"
            }
          ],
          "rodzajeSrodkaTransportu": [
            {
              "rodzajSrodkaTransportu": "LOTNICZY_CZARTER",
              "kodLotniskaDocelowego": "LGIR"
            }
          ]
        }
      ],
      "cenyUslug": [
        { "lacznaCenaUslug": "7400.00", "walutaUslug": "PLN" }
      ],
      "wplaty": [
        { "dataWplaty": "2026-07-05", "kwotaWplaty": "2000.00", "walutaWplaty": "PLN" },
        { "dataWplaty": "2026-08-01", "kwotaWplaty": "5400.00", "walutaWplaty": "PLN" }
      ],
      "zwroty": []
    }
  ]
}

Ta sama umowa (ma tylko jeden wariant, więc zmieści się w CSV) w formacie CSV to jeden wiersz danych pod wierszem nagłówków:

wykaz_nowe_dane.csv
nrUmowyRezerwacji;dataZawarciaUmowy;przedmiotUmowy;sposobPrzyjmowaniaWplat;liczbaPodroznych;terminRealizacjiOd;terminRealizacjiDo;zakresTerytorialny;kraj;miejscowoscTrasa;rodzajSrodkaTransportu;kodLotniskaDocelowego;lacznaCenaUslug;walutaUslug
REZ-2026-0042;2026-07-05;IMPREZA_TURYSTYCZNA;PRZELEW;2;2026-09-10;2026-09-17;EUROPA;GR;Heraklion;LOTNICZY_CZARTER;LGIR;7400.00;PLN

Wartości słownikowe podstaw z oficjalnych słowników

Kody użyte wyżej (np. IMPREZA_TURYSTYCZNA, EUROPA, GR, LOTNICZY_CZARTER) są przykładowe i mają pokazać układ pliku. Wiążące wartości - dla przedmiotu umowy, zakresu terytorialnego, krajów, lotnisk, sposobu płatności i walut - bierzesz zawsze z aktualnych słowników kodów z Portalu TFG. Dokładny zestaw kolumn i separator pliku CSV przyjmij według oficjalnego szablonu. Kod LGIR to z kolei prawdziwy kod ICAO lotniska w Heraklionie.

Jeden plik = jeden typ zasilenia

Pliku nie da się „wymieszać”. Każdy plik wsadowy musi zawierać pozycje tylko jednego typu zasilenia. Dla różnych operacji przygotowujesz osobne pliki:

Typ zasileniaDo czego służy
Nowe danenowe umowy, jeszcze niewprowadzone do systemu
Korektazmiana lub uzupełnienie umowy już w systemie (np. kolejna wpłata, zwrot, korekta błędu)
Rozwiązanieumowy wcześniej wprowadzone, które zostały rozwiązane
Usunięcieumowy wprowadzone do systemu omyłkowo

Obowiązuje też kolejność: korekta, rozwiązanie czy usunięcie zadziałają dopiero wtedy, gdy wcześniejsze zasilenie „nowe dane” dla tej umowy uzyskało status „Przyjęte”. Jeśli wyślesz korektę umowy, której system jeszcze nie przyjął, zostanie ona odrzucona.

Limity i wymagania pliku

Zanim plik trafi do dalszego przetwarzania, system sprawdza jego format i strukturę. Te limity musi spełnić każdy plik wsadowy:

ParametrWymaganie
FormatCSV albo JSON, zgodny ze strukturą
KodowanieUTF-8
Maksymalny rozmiar10 MB
Maksymalna liczba umów5000 (przez API: 1000)
Warianty na umowęCSV - 1, JSON - do 50
Wpłaty / zwroty na umowępo maks. 286
Numery umówuzupełnione i unikatowe w pliku
Kody danychzgodne ze słownikami

Plik przez API ma własne reguły

Jeśli wysyłasz wykaz przez integrację API, plik musi być w formacie JSON, mieć rozszerzenie .json, nazwę do 49 znaków i zawierać maksymalnie 1000 umów w jednym zasileniu. Czego wymaga sama integracja (konto techniczne, certyfikat, stały adres IP) opisaliśmy w sekcji „Co jest potrzebne do uruchomienia integracji API”.

Najczęstsze błędy, przez które plik zostaje odrzucony

System TFG waliduje zasilenie w dwóch etapach: synchronicznie (od razu - format i struktura pliku, puste lub powtórzone numery umów) oraz asynchronicznie (reguły biznesowe, których wynik sprawdzasz, odpytując o status). Oto pułapki, które najczęściej wywracają plik:

  • data w złym formacie - wymagany jest zawsze RRRR-MM-DD (np. 2026-09-10, nie 10.09.2026),
  • kwota jako tekst zamiast liczby albo bez formatu #.## (np. „7400 zł” zamiast 7400.00),
  • kod spoza słownika - błędny kraj, lotnisko, waluta, sposób płatności czy przedmiot umowy,
  • puste lub powtórzone numery umów w obrębie jednego pliku,
  • przekroczone limity - więcej niż 50 wariantów, 286 wpłat/zwrotów albo 5000 umów,
  • zła kolejność zasileń - korekta przed przyjęciem umowy pierwotnej,

Pełną listę przyczyn odrzucenia i sposób ich uniknięcia zebraliśmy w sekcji „Najczęstsze powody odrzucenia wykazu”. W praktyce bezpieczna wysyłka wymaga sprawdzenia danych zanim trafią do TFG.

Jak Prosty TFG przygotowuje plik za Ciebie

Ręczne budowanie pliku co miesiąc - przepisywanie kodów ze słowników, pilnowanie formatów dat i kwot, sprawdzanie limitów - to żmudna i ryzykowna robota. Prosty TFG robi to za Ciebie:

  • Wczytuje eksport z Twojego systemu rezerwacji lub Excela - niezależnie od układu kolumn.
  • Mapuje kolumny na strukturę TFG i zapamiętuje mapowanie jako profil Twojego biura.
  • Uzupełnia kody słownikowe - kraj, zakres terytorialny, kody lotnisk ICAO i przedmiot umowy.
  • Waliduje plik pod kątem wszystkich reguł TFG przed wysyłką, żeby nie został odrzucony.
  • Generuje gotowy plik CSV/JSON albo wysyła wykaz przez API w Twoim imieniu, z właściwym typem i kolejnością zasileń.

Podsumowanie

Plik wsadowy oszczędza czas przy większej liczbie umów, ale wymaga precyzji: właściwy format (CSV dla prostych umów, JSON dla złożonych), poprawne formaty dat i kwot, kody zgodne ze słownikami i jeden typ zasilenia na plik. Co zrobić teraz:

  1. 1Pobierz z Portalu TFG szablon CSV, przykładowe pliki, słowniki kodów i plik z walidacjami.
  2. 2Sprawdź, których wymaganych pól (ICAO, zakres terytorialny, przedmiot umowy) brakuje w Twoim eksporcie.
  3. 3Zdecyduj o formacie: CSV, gdy umowy mają jeden wariant, JSON - gdy wariantów jest więcej.
  4. 4Zapisz się na listę oczekujących Prosty TFG, żeby przygotować i wysłać plik bez ręcznego mapowania kodów.

Masz pytania o przygotowanie pliku? Napisz do nas na kontakt@prostytfg.pl.

Najczęstsze pytania

Co wybrać: plik CSV czy JSON?
CSV jest prostszy i wygodny, gdy eksportujesz dane z Excela, ale obsługuje wyłącznie umowy z jednym wariantem podróży. JSON obsługuje do 50 wariantów na umowę, więc sprawdza się przy umowach złożonych - różne terminy, środki transportu czy miejsca realizacji.
Ile umów może zawierać jeden plik wsadowy?
Plik wsadowy wgrywany w Portalu TFG może zawierać do 5000 umów, przy maksymalnym rozmiarze 10 MB i kodowaniu UTF-8. Przy wysyłce przez API limit wynosi 1000 umów w jednym zasileniu.
Czy w jednym pliku mogę umieścić nowe umowy i korekty?
Nie. Jeden plik wsadowy musi zawierać pozycje tylko jednego typu zasilenia: nowe dane, korekta, rozwiązanie albo usunięcie. Dla różnych operacji przygotowujesz osobne pliki.
Skąd wziąć szablon pliku i słowniki kodów?
Portal TFG udostępnia materiały do przygotowania plików wsadowych: szablon i instrukcję przygotowania pliku CSV z Excela, przykładowe pliki, słowniki kodów (m.in. kraje, lotniska ICAO, zakres terytorialny, sposób płatności, waluty) oraz plik z regułami walidacji.
Dlaczego mój plik wsadowy został odrzucony?
Najczęstsze przyczyny to: data w złym formacie (wymagany RRRR-MM-DD), kwota zapisana jako tekst zamiast liczby, kod spoza słownika (np. kraj, lotnisko, sposób płatności), puste lub powtórzone numery umów oraz przekroczone limity (50 wariantów, 286 wpłat/zwrotów, 5000 umów).

Artykuł ma charakter informacyjny i nie stanowi porady prawnej. Prosty TFG to niezależne narzędzie i nie jest powiązane z UFG ani Turystycznym Funduszem Gwarancyjnym. Wiążące są przepisy ustawy oraz oficjalne materiały i dokumentacja UFG.