diff --git a/app/matrix/global.jsonnet b/app/matrix/global.jsonnet
new file mode 100644
index 0000000..a829745
--- /dev/null
+++ b/app/matrix/global.jsonnet
@@ -0,0 +1,24 @@
+local kube = import "../../kube/kube.libsonnet";
+
+// Global resources specific to Matrix deployments. Currently this is only RBAC objects.
+
+{
+    // Allow non-staff admin access to matrix.0x3c.pl.
+    admin0x3c: kube.RoleBinding("admins") {
+        metadata+: {
+            namespace: "matrix-0x3c",
+        },
+        roleRef: {
+            apiGroup: "rbac.authorization.k8s.io",
+            kind: "ClusterRole",
+            name: "system:admin-namespace",
+        },
+        subjects: [
+            {
+                apiGroup: "rbac.authorization.k8s.io",
+                kind: "User",
+                name: "not7cd@hackerspace.pl",
+            },
+        ],
+    },
+}
diff --git a/app/matrix/lib/matrix.libsonnet b/app/matrix/lib/matrix.libsonnet
index 9887f58..5f9ecd2 100644
--- a/app/matrix/lib/matrix.libsonnet
+++ b/app/matrix/lib/matrix.libsonnet
@@ -51,9 +51,20 @@
             appserviceTelegram: "dock.mau.dev/tulir/mautrix-telegram@sha256:9e68eaa80c9e4a75d9a09ec92dc4898b12d48390e01efa4de40ce882a6f7e330",
         },
 
+        # Central Authentication Scheme, a single-sign-on system. Note: this flow is now called 'SSO' in Matrix, we keep this name for legacy reasons.
+        # Refer to https://matrix.org/docs/spec/client_server/r0.6.1#sso-client-login
         cas: {
             # whether to enable the CAS proxy (ie. connect to hswaw sso via OAuth)
             enable: false,
+            # generate client ID and secret in with your OAuth2 provider, refer to https://www.oauth.com/oauth2-servers/client-registration/client-id-secret/
+            oauth2: {
+                clientID:       error "cas.oauth2.clientID must be set",
+                clientSecret:   error "cas.oauth2.clientSecret must be set",
+                scope:          error "cas.oauth2.scope must be set",
+                authorizeURL:   error "cas.oauth2.authorizeURL must be set",
+                tokenURL:       error "cas.oauth2.tokenURL must be set",
+                userinfoURL:    error "cas.oauth2.userinfoURL must be set",
+            },
         },
     },
 
@@ -138,8 +149,12 @@
                             env_: {
                                 BASE_URL: "https://%s" % [cfg.webDomain],
                                 SERVICE_URL: "https://%s" % [cfg.webDomain],
-                                OAUTH2_CLIENT: "matrix",
-                                OAUTH2_SECRET: { secretKeyRef: { name: "oauth2-cas-proxy", key: "oauth2_secret" } },
+                                OAUTH2_CLIENT: cfg.cas.oauth2.clientID,
+                                OAUTH2_SECRET: cfg.cas.oauth2.clientSecret,
+                                OAUTH2_SCOPE: cfg.cas.oauth2.scope,
+                                OAUTH2_AUTHORIZE: cfg.cas.oauth2.authorizeURL,
+                                OAUTH2_TOKEN: cfg.cas.oauth2.tokenURL,
+                                OAUTH2_USERINFO: cfg.cas.oauth2.userinfoURL,
                             },
                         },
                     },
diff --git a/app/matrix/matrix.0x3c.pl.jsonnet b/app/matrix/matrix.0x3c.pl.jsonnet
index 76de45f..4adceb6 100644
--- a/app/matrix/matrix.0x3c.pl.jsonnet
+++ b/app/matrix/matrix.0x3c.pl.jsonnet
@@ -9,11 +9,22 @@
         namespace: "matrix-0x3c",
         webDomain: "matrix.0x3c.pl",
         serverName: "0x3c.pl",
-    },
 
-    synapseConfig+:: {
-        password_config: {
-            enabled: true,
+        images+: {
+            # We are using patched version for 0x3c now, to not break other configs
+            casProxy: "registry.k0.hswaw.net/informatic/oauth2-cas-proxy:0.1.5",
+        },
+
+        cas: {
+            enable: true,
+            oauth2: {
+                clientID: "YCWg1Qor9YstKn_yAHB_NT3GFAGqbnDFzIwyI_fCUWI",
+                clientSecret: (std.split(importstr "secrets/plain/cas-proxy-0x3c-oauth2-secret", "\n"))[0],
+                scope: "read:accounts",
+                authorizeURL: "https://0x3c.pl/oauth/authorize",
+                tokenURL: "https://0x3c.pl/oauth/token",
+                userinfoURL: "https://0x3c.pl/api/v1/accounts/verify_credentials",
+            },
         },
     },
 
diff --git a/app/matrix/matrix.hackerspace.pl.jsonnet b/app/matrix/matrix.hackerspace.pl.jsonnet
index e882636..d71dd84 100644
--- a/app/matrix/matrix.hackerspace.pl.jsonnet
+++ b/app/matrix/matrix.hackerspace.pl.jsonnet
@@ -11,6 +11,14 @@
         serverName: "hackerspace.pl",
         cas: {
             enable: true,
+            oauth2: {
+                clientID: "matrix",
+                clientSecret: { secretKeyRef: { name: "oauth2-cas-proxy", key: "oauth2_secret" } },
+                scope: "profile:read",
+                authorizeURL: "https://sso.hackerspace.pl/oauth/authorize",
+                tokenURL: "https://sso.hackerspace.pl/oauth/token",
+                userinfoURL: "https://sso.hackerspace.pl/api/1/profile",
+            },
         },
     },
 
diff --git a/app/matrix/secrets/cipher/cas-proxy-0x3c-oauth2-secret b/app/matrix/secrets/cipher/cas-proxy-0x3c-oauth2-secret
new file mode 100644
index 0000000..c76bb2b
--- /dev/null
+++ b/app/matrix/secrets/cipher/cas-proxy-0x3c-oauth2-secret
@@ -0,0 +1,40 @@
+-----BEGIN PGP MESSAGE-----
+
+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
+=lLbb
+-----END PGP MESSAGE-----
diff --git a/bgpwtf/invoice/proto/invoice.proto b/bgpwtf/invoice/proto/invoice.proto
index 75720b7..ee2b9d8 100644
--- a/bgpwtf/invoice/proto/invoice.proto
+++ b/bgpwtf/invoice/proto/invoice.proto
@@ -2,6 +2,210 @@
 package invoice;
 option go_package = "code.hackerspace.pl/hscloud/bgpwtf/invoice/proto";
 
+// GTU codes as defined by JPK_V7. In context of polish VAT/tax law.
+//   Original schema: http://crd.gov.pl/wzor/2020/05/08/9393/schemat.xsd
+// These are used to tag invoice Items. These then get coalesced when an
+// Invoice gets created, and that set of tags (specific now to an invoice)
+// is then submitted to accounting.
+// Numerical values of each code correspond to its numeric name (which is
+// enshrined in the JPK schema).
+// For each value, we provide one of more of following comments:
+//  - PL: official polish <xsd:documentation> field from schema.
+//  - EN: non-legally binding english translation for internal documentation
+//        purposes.
+//  - COMMENT: extra comments for internal documentation purposes.
+enum GTUCode {
+    GTU_INVALID = 0;
+    // PL: Dostawa napojów alkoholowych - alkoholu etylowego, piwa, wina,
+    //     napojów fermentowanych i wyrobów pośrednich, w rozumieniu przepisów
+    //     o podatku akcyzowym
+    // EN: Supply of alcoholic beverages - ethanol, beer, wine, fermented
+    //     beverages and intermediate products, within the meaning of
+    //     provisions on excise duty.
+    GTU_01 = 1;
+    // PL: Dostawa towarów, o których mowa w art. 103 ust. 5aa ustawy
+    // EN: Supply of goods referred to in Art. 103 paragraph 5aa of the VAT law
+    // COMMENT: liquid fuels.
+    GTU_02 = 2;
+    // PL: Dostawa oleju opałowego w rozumieniu przepisów o podatku akcyzowym
+    //     oraz olejów smarowych, pozostałych olejów o kodach CN od 2710 19 71
+    //     do 2710 19 99, z wyłączeniem wyrobów o kodzie CN 2710 19 85 (oleje
+    //     białe, parafina ciekła) oraz smarów plastycznych zaliczanych do kodu
+    //     CN 2710 19 99, olejów smarowych o kodzie CN 2710 20 90, preparatów
+    //     smarowych objętych pozycją CN 3403, z wyłączeniem smarów
+    //     plastycznych objętych tą pozycją
+    // EN: Supply of fuel oil under the provisions of provisions on excise
+    //     duty, and lubricating oils, other oils with CN codes from 2710 19 71
+    //     do 2710 19 99, except products with code CN 2710 19 85 (while
+    //     mineral oils, liquid paraffin) and high viscosity oils classified
+    //     under code CN 2710 19 199, lubricating oils with code CN 2710 20 90,
+    //     lubricating products classified under code CN 3403, except high
+    //     viscosity lubricants classified under this code.
+    GTU_03 = 3;
+    // PL: Dostawa wyrobów tytoniowych, suszu tytoniowego, płynu do papierosów
+    //     elektronicznych i wyrobów nowatorskich, w rozumieniu przepisów o
+    //     podatku akcyzowym
+    // EN: Supply of tobacco products, dried tobacco, electronic cigarette
+    //     liquids and designer products, within the meaning of provisions on
+    //     excise duty.
+    GTU_04 = 4;
+    // PL: Dostawa odpadów - wyłącznie określonych w poz. 79-91 załącznika nr
+    //     15 do ustawy
+    // EN: Waste supply - only as defined in annex 15 position 79-91 of the VAT
+    //     law.
+    // COMMENT: non-WEEE waste, except batteries.
+    GTU_05 = 5;
+    // PL: Dostawa urządzeń elektronicznych oraz części i materiałów do nich,
+    //     wyłącznie określonych w poz. 7-9, 59-63, 65, 66, 69 i 94-96 załącznika
+    //     nr 15 do ustawy
+    // EN: Supply of electronic devices and components thereof, only as defined
+    //     in annex 15, positions 7-9, 59-63, 65, 66, 69 and 94-96 of the VAT
+    //     law.
+    // COMMENT: print cartridges, ink, plastics, processors, computers, HDDs,
+    //          SSDs, mobile phones, video game consoles, photo cameras,
+    //          photocopier parts, software bundles on SSDs, video on SSDs.
+    // COMMENT: tl;dr computer accessories and stuff, but not CDs/DVDs.
+    GTU_06 = 6;
+    // PL: Dostawa pojazdów oraz części samochodowych o kodach wyłącznie CN
+    //     8701 - 8708 oraz CN 8708 10
+    // EN: Supply of vehicles and car parts only with CN codes 8701-8708 and CN
+    //     8708 10.
+    GTU_07 = 7;
+    // PL: Dostawa metali szlachetnych oraz nieszlachetnych - wyłącznie
+    //     określonych w poz. 1-3 załącznika nr 12 do ustawy oraz w poz. 12-25,
+    //     33-40, 45, 46, 56 i 78 załącznika nr 15 do ustawy
+    // EN: Supply of precious and common metals - only as defined in annex 12
+    //     positions 1-3 and annex 15 positions 12-25, 33-40, 45, 46, 56, 78 of
+    //     the VAT law.
+    // COMMENT: metals but also wax/stearine for sculpting, metal waste,
+    //          antiques (>100Y) containing metal.
+    GTU_08 = 8;
+    // PL: Dostawa leków oraz wyrobów medycznych - produktów leczniczych,
+    //     środków spożywczych specjalnego przeznaczenia żywieniowego oraz
+    //     wyrobów medycznych, objętych obowiązkiem zgłoszenia, o którym mowa w
+    //     art. 37av ust. 1 ustawy z dnia 6 września 2001 r. - Prawo
+    //     farmaceutyczne (Dz. U. z 2019 r. poz. 499, z późn. zm.)
+    // EN: Supply of medicine and medical products - [...]
+    GTU_09 = 9;
+    // PL: Dostawa budynków, budowli i gruntów
+    // EN: Supply of buildings, structures and land.
+    GTU_10 = 10;
+    // PL: Świadczenie usług w zakresie przenoszenia uprawnień do emisji gazów
+    //     cieplarnianych, o których mowa w ustawie z dnia 12 czerwca 2015 r. o
+    //     systemie handlu uprawnieniami do emisji gazów cieplarnianych (Dz. U.
+    //     z 2018 r. poz. 1201 i 2538 oraz z 2019 r. poz. 730, 1501 i 1532)
+    // EN: Supply of services related to transfer of greenhouse gas emission
+    //     allowances, as defined in Dz. U. z 2018r. poz. 1201 i 2538 oraz z
+    //     2019r.  poz. 730, 1501 i 1532.
+    GTU_11 = 11;
+    // PL: Świadczenie usług o charakterze niematerialnym - wyłącznie:
+    //     doradczych, księgowych, prawnych, zarządczych, szkoleniowych,
+    //     marketingowych, firm centralnych (head offices), reklamowych,
+    //     badania rynku i opinii publicznej, w zakresie badań naukowych i prac
+    //     rozwojowych
+    // EN: Supply of non-material services - only: consulting, accounting,
+    //     legal, managerial, training, marketing, head offices, advertisement,
+    //     market and public opinion study, within academic research and R&D.
+    // COMMENT: IT consulting falls under this.
+    GTU_12 = 12;
+    // PL: Świadczenie usług transportowych i gospodarki magazynowej - Sekcja H
+    //      PKWiU 2015 symbol ex 49.4, ex 52.1
+    // EN: Supply of transport and logistics services [...].
+    GTU_13 = 13;
+}
+
+// SP codes as defined by JPK_V7. In context of polish VAT/tax law.
+//   Original schema: http://crd.gov.pl/wzor/2020/05/08/9393/schemat.xsd
+// These are used to tag invoices, and describe sale procedures regarding this
+// invoice.
+// Numerical values are arbitrary.
+// For each value, we provide one of more of following comments:
+//  - PL: official polish <xsd:documentation> field from schema.
+//  - EN: non-legally binding english translation for internal documentation
+//        purposes.
+//  - COMMENT: extra comments for internal documentation purposes.
+enum SPCode {
+    SP_INVALID = 0;
+    // PL: Dostawa w ramach sprzedaży wysyłkowej z terytorium kraju, o której
+    //     mowa w art. 23 ustawy
+    // EN: Mail Order sales, as per art. 23 of the VAT law.
+    SP_SW = 1;
+    // PL: Świadczenie usług telekomunikacyjnych, nadawczych i elektronicznych,
+    //     o których mowa w art. 28k ustawy
+    // EN: Supply of telecommunication, broadcast and electronic services as
+    //     per artc. 28k of the VAT law.
+    // COMMENT: MOSS EU VAT sales.
+    SP_EE = 2;
+    // PL: Istniejące powiązania między nabywcą a dokonującym dostawy towarów
+    //     lub usługodawcą, o których mowa w art. 32 ust. 2 pkt 1 ustawy
+    // EN: Existing connection between the buyer and supplier of goods or
+    //     services, as per art. 32, par. 2 point 2 of the VAT law
+    SP_TP = 3;
+    // PL: Wewnątrzwspólnotowe nabycie towarów dokonane przez drugiego w
+    //     kolejności podatnika VAT w ramach transakcji trójstronnej w
+    //     procedurze uproszczonej, o której mowa w dziale XII rozdziale 8
+    //     ustawy
+    // EN: Intra-EU goods supply by the second VAT taxpayer in a tripartite
+    //     simplified procedures as defined insection XII chapter 8 of the VAT
+    //     law
+    SP_TT_WNT = 4;
+    // PL: Dostawa towarów poza terytorium kraju dokonana przez drugiego w
+    //     kolejności podatnika VAT w ramach transakcji trójstronnej w
+    //     procedurze uproszczonej, o której mowa w dziale XII rozdziale 8
+    //     ustawy
+    // EN: Foreign goods supply by the second VAT taxpayer in a tripartite
+    //     simplified procedures as defined insection XII chapter 8 of the VAT
+    //     law
+    SP_TT_D = 5;
+    // PL: Świadczenie usług turystyki opodatkowane na zasadach marży zgodnie z
+    //     art. 119 ustawy
+    // EN: Supply of tourism services under magin tax as per art. 119 of the
+    //     VAT law
+    SP_MR_T = 6;
+    // PL: Dostawa towarów używanych, dzieł sztuki, przedmiotów
+    //     kolekcjonerskich i antyków, opodatkowana na zasadach marży zgodnie z
+    //     art. 120 ustawy
+    // EN: Supply of used goods, art, collectibles and antiques under margin
+    //     tax as per art 120 of the VAT law
+    SP_MR_UZ = 7;
+    // PL: Wewnątrzwspólnotowa dostawa towarów następująca po imporcie tych
+    //     towarów w ramach procedury celnej 42 (import)
+    // EN: Intra-EU goods supply after import of these goods as part of the
+    //     customs procedure 42 (import)
+    SP_I_42 = 8;
+    // PL: Wewnątrzwspólnotowa dostawa towarów następująca po imporcie tych
+    //     towarów w ramach procedury celnej 63 (import)
+    // EN: Intra-EU goods supply after import of these goods as part of the
+    //     customs procedure 63 (import)
+    SP_I_63 = 9;
+    // PL: Transfer bonu jednego przeznaczenia dokonany przez podatnika
+    //     działającego we własnym imieniu, opodatkowany zgodnie z art. 8a ust.
+    //     1 ustawy
+    // EN: Transfer of a single-purpose voucher by a taxpayer acting on their
+    //     own behalf, taxed under art. 8a paragraph 1 of the VAT law
+    SP_B_SPV = 10;
+    // PL: Dostawa towarów oraz świadczenie usług, których dotyczy bon jednego
+    //     przeznaczenia na rzecz podatnika, który wyemitował bon zgodnie z
+    //     art. 8a ust. 4 ustawy
+    // EN: Supply of goods and services affected by single-purpose voucher for
+    //     a taxpayer, which emitted that voucher in accordance with art. 8a
+    //     paragraph 4 of the VAT law
+    SP_B_SPV_DOSTAWA = 11;
+    // PL: Świadczenie usług pośrednictwa oraz innych usług dotyczących
+    //     transferu bonu różnego przeznaczenia, opodatkowane zgodnie z art. 8b
+    //     ust. 2 ustawy
+    // EN: Supply of intermediary services and other services relating to the
+    //     transfer of multi-purpose vouchers, taxed in accordance with art. 8b
+    //     paragraph 2 of the VAT law
+    SP_B_MPV_PROWIZJA = 12;
+    // PL: Transakcja objęta obowiązkiem stosowania mechanizmu podzielonej
+    //     płatności
+    // EN: Transaction required to use the VAT split payment mechanism
+    SP_MPP = 13;
+}
+
+
+// VAT invoice item (ie. entry).
 message Item {
     string title = 1;
     uint64 count = 2;
@@ -9,16 +213,24 @@
     // in thousands of percent points
     // (ie 23% == 23000)
     uint64 vat = 4;
-    // Denormalized fields follow.
+    // GTU codes for this item.
+    repeated GTUCode gtu_code = 7;
+
+    // Denormalized fields follow. These are only present in Invoice, not
+    // InvoiceData.
     uint64 total_net = 5;
     uint64 total = 6;
+    // Next tag: 8
 }
 
+// Point of contact for an invoice.
 message ContactPoint {
     string medium = 1;
     string contact = 2;
 }
 
+// Invoice 'intent' - ie. data given by an Invoice creator. These never change
+// after creation.
 message InvoiceData {
     repeated Item item = 1;
     repeated string invoicer_billing = 2;
@@ -35,7 +247,8 @@
     string iban = 9;
     string swift = 10;
     string unit = 13;
-    // Next tag: 15
+    repeated SPCode sp_code = 15;
+    // Next tag: 16
 }
 
 message Invoice {
@@ -56,6 +269,8 @@
     uint64 total_net = 6;
     uint64 total = 7;
     string unit = 8;
+    repeated GTUCode gtu_codes = 10;
+    // Next tag: 11;
 }
 
 message CreateInvoiceRequest {
