{
  "openapi": "3.1.0",
  "info": {
    "title": "B2B czy umowa o pracę 2026",
    "version": "2026",
    "description": "Porównuje rok na umowie o pracę i na B2B (jednoosobowa działalność): ile zostaje na rękę po składkach ZUS, zdrowotnej i podatku, od jakiej faktury miesięcznie B2B daje co najmniej tyle co etat, ile dni bez faktury można wziąć, zanim przewaga zniknie, i przy jakiej fakturze firma wydaje tyle samo co na etat. Kwoty w złotych. Etat: stała pensja przez cały rok u jednego pracodawcy, koszty 250 zł, PIT-2, bez PPK; koszty autorskie 50% tylko z parametrem autorskie (od tej części pensji, po składkach ZUS, do limitu 120000 zł kosztów w roku). B2B: faktura netto bez VAT za pełny miesiąc pracy, dni bez faktury zmniejszają przychód proporcjonalnie do 251 dni roboczych, wynik po rocznym rozliczeniu PIT i składki zdrowotnej, bez ulgi na start, Małego ZUS Plus i IP Box."
  },
  "servers": [
    {
      "url": "https://przeliczmy.pl"
    }
  ],
  "paths": {
    "/api/b2b/porownanie": {
      "get": {
        "operationId": "porownajB2BiEtat",
        "summary": "Porównaj rok na etacie i na B2B",
        "parameters": [
          {
            "name": "brutto",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": 0,
              "maximum": 1000000,
              "description": "Pensja brutto miesięcznie na etacie w zł"
            }
          },
          {
            "name": "autorskie",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 100,
              "default": 0,
              "description": "Procent pensji na etacie jako honorarium autorskie (koszty 50%)"
            }
          },
          {
            "name": "faktura",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": 0,
              "maximum": 1000000,
              "description": "Faktura B2B netto za pełny miesiąc w zł"
            }
          },
          {
            "name": "dni",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 251,
              "default": 26
            }
          },
          {
            "name": "koszty",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": 0,
              "maximum": 1000000,
              "description": "Koszty firmy miesięcznie w zł",
              "default": 200
            }
          },
          {
            "name": "forma",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "liniowy",
                "skala",
                "ryczalt"
              ],
              "default": "liniowy"
            }
          },
          {
            "name": "ryczalt",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "8.5",
                "12",
                "15"
              ],
              "default": "12"
            }
          },
          {
            "name": "zus",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "pelny",
                "preferencyjny"
              ],
              "default": "pelny"
            }
          },
          {
            "name": "chorobowa",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "tak",
                "nie"
              ],
              "default": "tak"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Wynik (kwoty w zł)",
            "content": {
              "application/json": {
                "example": {
                  "rok": 2026,
                  "waluta": "PLN",
                  "etat_brutto_miesiecznie": 8904,
                  "etat_autorskie_procent": 0,
                  "b2b_faktura_miesiecznie": 12000,
                  "b2b_dni_bez_faktury": 26,
                  "b2b_koszty_miesiecznie": 200,
                  "b2b_forma": "liniowy",
                  "b2b_stawka_ryczaltu": null,
                  "b2b_zus": "pelny",
                  "b2b_chorobowa": true,
                  "wygrywa": "b2b",
                  "roznica_rocznie": 2883.83,
                  "roznica_miesiecznie": 240.32,
                  "b2b_wygrywa_od_faktury": 11669,
                  "b2b_wygrywa_do_dni_bez_faktury": 32,
                  "faktura_przy_tym_samym_koszcie_firmy": 11967,
                  "etat": {
                    "brutto_rocznie": 106848,
                    "dochod_rocznie": 89196,
                    "skladki_zus": 14648.88,
                    "skladka_zdrowotna": 8297.88,
                    "koszty_autorskie": 0,
                    "miesiac_konca_kosztow_autorskich": null,
                    "zaliczki_pit": 7104,
                    "zaliczki_pit_bez_autorskich": 7104,
                    "netto_rocznie": 76797.24,
                    "netto_miesiecznie_srednio": 6399.77,
                    "koszt_pracodawcy_rocznie": 128730.48
                  },
                  "b2b": {
                    "forma": "podatek liniowy 19%",
                    "przychod_rocznie": 129083.67,
                    "koszty": 2400,
                    "skladki_spoleczne": 21459.48,
                    "fundusz_pracy": 1661.64,
                    "skladka_zdrowotna": 5190.48,
                    "podatek": 18691,
                    "netto_rocznie": 79681.07,
                    "netto_miesiecznie_srednio": 6640.09
                  }
                }
              }
            }
          },
          "400": {
            "description": "Błędne parametry"
          },
          "429": {
            "description": "Za dużo zapytań, spróbuj za minutę"
          }
        }
      }
    }
  }
}