{"id":38145820,"url":"https://github.com/link-it/govpay-stampe-api","last_synced_at":"2026-03-14T19:24:36.354Z","repository":{"id":227280480,"uuid":"769224134","full_name":"link-it/govpay-stampe-api","owner":"link-it","description":"Servizio per la stampa degli Avvisi pagoPA","archived":false,"fork":false,"pushed_at":"2026-01-10T20:51:49.000Z","size":1727,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-01-11T06:18:27.596Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/link-it.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-08T15:44:47.000Z","updated_at":"2026-01-07T09:48:55.000Z","dependencies_parsed_at":"2026-01-06T11:11:53.838Z","dependency_job_id":null,"html_url":"https://github.com/link-it/govpay-stampe-api","commit_stats":null,"previous_names":["link-it/govpay-stampe-api"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/link-it/govpay-stampe-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/link-it%2Fgovpay-stampe-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/link-it%2Fgovpay-stampe-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/link-it%2Fgovpay-stampe-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/link-it%2Fgovpay-stampe-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/link-it","download_url":"https://codeload.github.com/link-it/govpay-stampe-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/link-it%2Fgovpay-stampe-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28486938,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T22:54:02.790Z","status":"ssl_error","status_checked_at":"2026-01-16T22:50:10.344Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-16T22:55:47.402Z","updated_at":"2026-01-16T22:55:47.466Z","avatar_url":"https://github.com/link-it.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://www.link.it/wp-content/uploads/2025/01/logo-govpay.svg\" alt=\"GovPay Logo\" width=\"200\"/\u003e\n\u003c/p\u003e\n\n# GovPay - Porta di accesso al sistema pagoPA - Stampe Api\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=link-it_govpay-gde-api\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=link-it_govpay-gde-api)\n[![Docker Hub](https://img.shields.io/docker/v/linkitaly/govpay-gde-api?label=Docker%20Hub\u0026logo=docker)](https://hub.docker.com/r/linkitaly/govpay-gde-api)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://raw.githubusercontent.com/link-it/govpay-gde-api/main/LICENSE)\n[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.7-brightgreen.svg)](https://spring.io/projects/spring-boot)\n\n## Sommario\n\nServizio per la stampa degli Avvisi pagoPA e delle ricevute di pagamento\n\n## Istruzioni di compilazione\n\nIl progetto utilizza librerie Spring Boot versione 3.5.9 e JDK 21.\n\nPer la compilazione eseguire il seguente comando, verranno eseguiti anche i test.\n\n``` bash\nmvn clean install -P [jar|war]\n```\n\nIl profilo permette di selezionare il packaging dei progetti (jar o war).\n\nPer l'avvio dell'applicativo come standalone eseguire:\n\n``` bash\nmvn spring-boot:run\n```\n\nPer sovrascrivere le proprietà definite nel file `application.properties` utilizzare il seguente sistema:\n\n``` bash\nmvn spring-boot:run -Dspring-boot.run.jvmArguments=\"-Dserver.port=[NUOVO_VALORE] ...\"\n```\n\n# Configurazione\n\nAll'interno del file `application.properties` sono definite le seguenti proprietà:\n\n``` bash\n# ----------- SPRING SERVLET ------------\n\nserver.port=[Porta su cui esporre il servizio in caso di avvio come applicazione standalone]\n\nspring.mvc.servlet.path=[Basepath servizi]\n\n# Abilitazione Endpoint /actuator/health/liveness\nmanagement.endpoints.web.base-path=[Basepath dove esporre i servizi di stato applicazione]\n\n# -------------- BUSINESS LOGIC PROPERTIES  ----------------\n\nstampe.time-zone=[TimeZone dell'applicazione]\n\n```\n\nL'applicazione e' configurata per loggare su standardOutput e' possibile sovrascrivere la configurazione di default utilizzando il meccanismo di override delle properties di spring.\n\n# Formato Logo \n\nIl logo dell'ente creditore deve essere fornito come stringa nel formato `data:image/png;base64,iVBORw0KGg......` codificato in base 64.\n\n# Avvisi di Pagamento supportati\n\nL'applicazione consente di creare i pdf per le seguenti categorie di [Avvisi PagoPA](https://developer.pagopa.it/pago-pa/guides/avviso-pagamento)\n\n- Rata Unica\n- Rate Multiple\n- Avvisi con molte rate\n- Violazione Cds\n- Avvisi Bilingue\n\nPer ognuna delle opzioni precedenti sono disponibili le versioni con e senza bollettino postale.\n\n## Avviso standard\n\nIn questa sezione verranno riportati alcuni esempi di richiesta per la generazione degli avvisi standard.\n\nIl servizio e' disponibile alla url:\n\n``` html\nPOST /standard\n\n{\n\tjson avviso\n}\n```\n\n### Avviso semplice con rata unica\n\nGli avvisi semplici vengono creati senza la sezione bollettino postale indicando `postal=false`.\nLa rata unica si definisce valorizzando l'oggetto `full`:\n\n``` json\n{\n  \"language\": \"it\",\n  \"first_logo\": \"base64encodedimage\",\n  \"title\": \"Avviso di pagamento\",\n  \"creditor\": {\n    \"fiscal_code\": \"01234567890\",\n    \"business_name\": \"Comune di Test\",\n    \"department_name\": \"Ufficio dimostrativo\",\n    \"info_line_1\": \"Tel 000-000 0000 · Fax 000-000 0000\",\n    \"info_line_2\": \"Mail info@comune.test.it\",\n    \"cbill_code\": \"ABCDE\"\n  },\n  \"debtor\": {\n    \"fiscal_code\": \"AAAAAA00A00A000A\",\n    \"full_name\": \"Nomen Nescio\",\n    \"address_line_1\": \"Viale dei Giardini, 00\",\n    \"address_line_2\": \"00000 Roma (RM)\"\n  },\n  \"postal\": false,\n  \"full\": {\n    \"amount\": 100.50,\n    \"due_date\": \"2022-12-31\",\n    \"notice_number\": \"123456789012345678\",\n    \"qrcode\": \"PAGOPA|002|123456789012345678|01234567890|10050\"\n  }\n}\n```\n\n### Avviso semplice con rate multiple\n\nLa rate si definiscono valorizzando la lista `instalments`, per ogni rata dovra' essere indicato il numero della rata all'interno del campo obbligatorio `instalment_number`, di seguito un esempio di avviso con due rate:\n\n``` json\n{\n  \"language\": \"it\",\n  \"first_logo\": \"base64encodedimage\",\n  \"title\": \"Avviso di pagamento\",\n  \"creditor\": {\n    \"fiscal_code\": \"01234567890\",\n    \"business_name\": \"Comune di Test\",\n    \"department_name\": \"Ufficio dimostrativo\",\n    \"info_line_1\": \"Tel 000-000 0000 · Fax 000-000 0000\",\n    \"info_line_2\": \"Mail info@comune.test.it\",\n    \"cbill_code\": \"ABCDE\"\n  },\n  \"debtor\": {\n    \"fiscal_code\": \"AAAAAA00A00A000A\",\n    \"full_name\": \"Nomen Nescio\",\n    \"address_line_1\": \"Viale dei Giardini, 00\",\n    \"address_line_2\": \"00000 Roma (RM)\"\n  },\n  \"postal\": false,\n  \"instalments\": [\n    {\n      \"amount\": 50.25,\n      \"due_date\": \"2022-06-30\",\n      \"notice_number\": \"987654321098765432\",\n      \"qrcode\": \"PAGOPA|002|987654321098765432|01234567890|5025\",\n      \"instalment_number\": 1\n    },\n    {\n      \"amount\": 50.25,\n      \"due_date\": \"2022-09-30\",\n      \"notice_number\": \"543216789054321678\",\n      \"qrcode\": \"PAGOPA|002|543216789054321678|01234567890|5025\",\n      \"instalment_number\": 2\n    }\n  ]\n}\n```\n\n### Avviso semplice bilingue\n\nPer creare un avviso bilingue si deve definire l'elemento `second_language` indicando la seconda lingua desiderata, e il titolo dell'avviso tradotto.\n\n*N.B.*\nIl campo obbligatorio `bilinguism` viene attualmente ignorato e l'avviso viene sempre stampato bilingue.\n\n\n``` json\n{\n  \"language\": \"it\",\n  \"first_logo\": \"base64encodedimage\",\n  \"title\": \"Avviso di pagamento\",\n  \"creditor\": {\n    \"fiscal_code\": \"01234567890\",\n    \"business_name\": \"Comune di Test\",\n    \"department_name\": \"Ufficio dimostrativo\",\n    \"info_line_1\": \"Tel 000-000 0000 · Fax 000-000 0000\",\n    \"info_line_2\": \"Mail info@comune.test.it\",\n    \"cbill_code\": \"ABCDE\"\n  },\n  \"debtor\": {\n    \"fiscal_code\": \"AAAAAA00A00A000A\",\n    \"full_name\": \"Nomen Nescio\",\n    \"address_line_1\": \"Viale dei Giardini, 00\",\n    \"address_line_2\": \"00000 Roma (RM)\"\n  },\n  \"postal\": false,\n  \"full\": {\n    \"amount\": 100.50,\n    \"due_date\": \"2022-12-31\",\n    \"notice_number\": \"123456789012345678\",\n    \"qrcode\": \"PAGOPA|002|123456789012345678|01234567890|10050\"\n  },\n  \"second_language\": {\n    \"title\": \"Payment notice\",\n    \"language\": \"sl\",\n    \"bilinguism\": true\n  }\n}\n```\n\n### Avviso Postale\n\nPer la stampa degli avvisi postali e' necessario valorizzare il campo `postal=true` e indicare i seguenti dati aggiuntivi:\n\n- `creditor.postal_auth_message`: autorizzazione alla stampa in proprio dei bollettini postali\n- `full.iban` o `instalment.iban`: informazioni relative all'iban di accredito postale da utilizzare, si utilizzando per la generazione del data matrix: `iban_code` codice iban di accredito, `owner_business_name` nome del proprietario dell'iban di accredito se diverso da `creditor.business_name`, `postal_auth_message` se diversa da quella indicata in `creditor.postal_auth_message`.\n\n``` json\n{\n  \"language\": \"it\",\n  \"first_logo\": \"base64encodedimage\",\n  \"title\": \"Avviso di pagamento\",\n  \"creditor\": {\n    \"fiscal_code\": \"01234567890\",\n    \"business_name\": \"Comune di Test\",\n    \"department_name\": \"Ufficio dimostrativo\",\n    \"info_line_1\": \"Tel 000-000 0000 · Fax 000-000 0000\",\n    \"info_line_2\": \"Mail info@comune.test.it\",\n    \"cbill_code\": \"ABCDE\",\n    \"postal_auth_message\": \"Autorizzazione n. 0000 del 00/00/0000\"\n  },\n  \"debtor\": {\n    \"fiscal_code\": \"AAAAAA00A00A000A\",\n    \"full_name\": \"Nomen Nescio\",\n    \"address_line_1\": \"Viale dei Giardini, 00\",\n    \"address_line_2\": \"00000 Roma (RM)\"\n  },\n  \"postal\": true,\n  \"full\": {\n    \"amount\": 100.50,\n    \"due_date\": \"2022-12-31\",\n    \"notice_number\": \"123456789012345678\",\n    \"qrcode\": \"PAGOPA|002|123456789012345678|01234567890|10050\",\n    \"iban\": {\n      \"iban_code\": \"IT60X0542811101000000123456\",\n      \"owner_business_name\": \"Comune di Test 2\",\n      \"postal_auth_message\": \"Autorizzazione n. 0000 del 00/00/0000\"\n    }\n  },\n  \"instalments\": [\n    {\n      \"amount\": 50.25,\n      \"due_date\": \"2022-06-30\",\n      \"notice_number\": \"987654321098765432\",\n      \"qrcode\": \"PAGOPA|002|987654321098765432|01234567890|5025\",\n      \"iban\": {\n        \"iban_code\": \"IT60X0542811101000000123456\",\n        \"owner_business_name\": \"Comune di Test 2\",\n        \"postal_auth_message\": \"Autorizzazione n. 0000 del 00/00/0000\"\n      }\n    },\n    {\n      \"amount\": 50.25,\n      \"due_date\": \"2022-09-30\",\n      \"notice_number\": \"543216789054321678\",\n      \"qrcode\": \"PAGOPA|002|543216789054321678|01234567890|5025\",\n      \"iban\": {\n        \"iban_code\": \"IT60X0542811101000000123456\",\n        \"owner_business_name\": \"Comune di Test 2\",\n        \"postal_auth_message\": \"Autorizzazione n. 0000 del 00/00/0000\"\n      }\n    }\n  ]\n}\n```\n\n### Violazione del Codice della Strada\n\nIl servizio e' disponibile alla url:\n\n``` html\nPOST /cds_violation\n\n{\n\tjson avviso\n}\n```\n\nL'avviso per la Violazione del Codice della strada deve contenere due importi ridotto e scontato da indicare negli oggetti `discounted_amount` e `reduced_amount`, sono disponibili tutte le opzioni valide per gli avvisi standard.\n\n``` json\n{\n  \"language\": \"it\",\n  \"first_logo\": \"base64encodedimage\",\n  \"title\": \"Avviso di pagamento\",\n  \"creditor\": {\n    \"fiscal_code\": \"01234567890\",\n    \"business_name\": \"Comune di Test\",\n    \"department_name\": \"Ufficio dimostrativo\",\n    \"info_line_1\": \"Tel 000-000 0000 · Fax 000-000 0000\",\n    \"info_line_2\": \"Mail info@comune.test.it\",\n    \"cbill_code\": \"ABCDE\",\n    \"postal_auth_message\": \"Autorizzazione n. 0000 del 00/00/0000\"\n  },\n  \"debtor\": {\n    \"fiscal_code\": \"AAAAAA00A00A000A\",\n    \"full_name\": \"Nomen Nescio\",\n    \"address_line_1\": \"Viale dei Giardini, 00\",\n    \"address_line_2\": \"00000 Roma (RM)\"\n  },\n  \"postal\": true,\n  \"discounted_amount\": {\n    \"amount\": 50.25,\n    \"due_date\": \"2022-12-31\",\n    \"notice_number\": \"123456789012345678\",\n    \"qrcode\": \"PAGOPA|002|123456789012345678|01234567890|5025\",\n    \"iban\": {\n      \"iban_code\": \"IT60X0542811101000000123456\",\n      \"owner_business_name\": \"Comune di Test 2\",\n      \"postal_auth_message\": \"Autorizzazione n. 0000 del 00/00/0000\"\n    }\n  },\n  \"reduced_amount\": {\n    \"amount\": 25.00,\n    \"due_date\": \"2022-12-31\",\n    \"notice_number\": \"987654321098765432\",\n    \"qrcode\": \"PAGOPA|002|987654321098765432|01234567890|2500\",\n    \"iban\": {\n      \"iban_code\": \"IT60X0542811101000000123456\",\n      \"owner_business_name\": \"Comune di Test 2\",\n      \"postal_auth_message\": \"Autorizzazione n. 0000 del 00/00/0000\"\n    }\n  }\n}\n```\n\n## Ricevute di Pagamento\n\nL'applicazione consente di generare i PDF delle ricevute di pagamento pagoPA.\n\nIl servizio e' disponibile alla url:\n\n``` html\nPOST /receipt\n\n{\n\tjson ricevuta\n}\n```\n\n### Ricevuta standard\n\nDi seguito un esempio di richiesta per la generazione di una ricevuta di pagamento:\n\n``` json\n{\n  \"creditor_logo\": \"base64encodedimage\",\n  \"pagopa_logo\": \"base64encodedimage\",\n  \"organization\": {\n    \"fiscal_code\": \"01234567890\",\n    \"business_name\": \"Comune di Test\",\n    \"address\": \"Via Roma, 1\",\n    \"location\": \"00100 Roma (RM)\"\n  },\n  \"payer\": {\n    \"fiscal_code\": \"RSSMRA80A01H501U\",\n    \"full_name\": \"Mario Rossi\",\n    \"address\": \"Viale dei Giardini, 00\",\n    \"location\": \"00000 Roma (RM)\"\n  },\n  \"payment_subject\": \"Pagamento TARI 2024\",\n  \"psp\": \"Banca di Test S.p.A.\",\n  \"amount\": 150.00,\n  \"operation_date\": \"15/01/2024 10:30:00\",\n  \"application_date\": \"15/01/2024\",\n  \"status\": \"EXECUTED\",\n  \"creditor_reference_id\": \"01234567890123456\",\n  \"receipt_id\": \"0123456789012345678901234567890\",\n  \"object_version\": \"SANP_230\",\n  \"items\": [\n    {\n      \"description\": \"TARI 2024 - Quota fissa\",\n      \"iur\": \"RF01234567890123456789012345\",\n      \"amount\": 100.00,\n      \"status\": \"EXECUTED\"\n    },\n    {\n      \"description\": \"TARI 2024 - Quota variabile\",\n      \"iur\": \"RF01234567890123456789012346\",\n      \"amount\": 50.00,\n      \"status\": \"EXECUTED\"\n    }\n  ]\n}\n```\n\n### Campi della ricevuta\n\n| Campo | Descrizione | Obbligatorio |\n|-------|-------------|--------------|\n| `creditor_logo` | Logo dell'ente creditore in formato base64 | Si |\n| `pagopa_logo` | Logo pagoPA in formato base64 | Si |\n| `organization` | Dati dell'ente creditore | Si |\n| `organization.fiscal_code` | Codice fiscale dell'ente (11 caratteri) | Si |\n| `organization.business_name` | Denominazione dell'ente | Si |\n| `organization.address` | Indirizzo dell'ente | No |\n| `organization.location` | Localita' dell'ente | No |\n| `payer` | Dati del soggetto pagatore | Si |\n| `payer.fiscal_code` | Codice fiscale del pagatore | Si |\n| `payer.full_name` | Nome completo del pagatore | Si |\n| `payer.address` | Indirizzo del pagatore | No |\n| `payer.location` | Localita' del pagatore | No |\n| `payment_subject` | Causale del pagamento | Si |\n| `psp` | Nome del PSP che ha elaborato il pagamento | Si |\n| `amount` | Importo totale pagato | Si |\n| `operation_date` | Data e ora dell'operazione | Si |\n| `application_date` | Data di applicazione | Si |\n| `status` | Stato della ricevuta | Si |\n| `creditor_reference_id` | Identificativo Univoco Versamento (IUV) | Si |\n| `receipt_id` | Codice Contesto Pagamento (CCP) | Si |\n| `object_version` | Versione del tracciato pagoPA | Si |\n| `items` | Lista delle voci di pagamento | Si |\n| `items[].description` | Descrizione della voce | Si |\n| `items[].iur` | Identificativo Univoco Riscossione | Si |\n| `items[].amount` | Importo della voce | Si |\n| `items[].status` | Stato della voce | Si |\n\n### Valori enum\n\n**status** (stato ricevuta):\n- `EXECUTED`: Eseguito\n- `NOT_EXECUTED`: Non eseguito\n- `PARTIALLY_EXECUTED`: Parzialmente eseguito\n- `EXPIRED`: Decorrenza termini\n- `PARTIALLY_EXPIRED`: Decorrenza termini parziale\n\n**items[].status** (stato voce):\n- `EXECUTED`: Eseguito\n- `NOT_EXECUTED`: Non eseguito\n\n**object_version** (versione tracciato):\n- `SANP_240_V2`: Versione 2.4.0 v2\n- `SANP_240`: Versione 2.4.0\n- `SANP_230`: Versione 2.3.0\n\n## Configurazione logging\n\nLa configurazione del logging è gestita tramite le proprietà definite in `application.properties`:\n\n``` bash\nlogging.file.name=[Path completo del file di log]\nlogging.level.it.govpay=[Livello di log: DEBUG, INFO, WARN, ERROR]\n```\n\n## Docker\n\nL'immagine Docker è disponibile su Docker Hub: [linkitaly/govpay-stampe-api](https://hub.docker.com/r/linkitaly/govpay-stampe-api)\n\n``` bash\ndocker pull linkitaly/govpay-stampe-api:latest\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flink-it%2Fgovpay-stampe-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flink-it%2Fgovpay-stampe-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flink-it%2Fgovpay-stampe-api/lists"}