{"openapi":"3.0.0","paths":{"/status":{"get":{"description":"Gets the status of the API","operationId":"AppController_getStatus","parameters":[],"responses":{"200":{"description":"The API is up and running.","content":{"text/plain":{"schema":{"type":"string","example":"The API is up and running."}}}}},"summary":"","tags":["App"]}},"/mandates":{"get":{"description":"This call returns a paginated list of all mandates belonging to this subscription.<br/><br/>","operationId":"MandateController_getMandatesForClient","parameters":[{"name":"lastEvaluatedKey","required":false,"in":"query","description":"Pagination cursor returned by a previous call to fetch the next page","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of mandates to return in the page","schema":{"example":15,"type":"number"}}],"responses":{"200":{"description":"A page of mandates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MandatePageDto"},"examples":{"page":{"summary":"A page of active mandates, one per country, with a cursor for the next page","value":{"items":[{"ulid":"01KJB2M6R4QP8XCT0V9E5NH7WD","countryCode":"BE","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"kbo":"0123456789"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0208:0123456789"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"ACTIVE","lastModifiedTimestamp":"2026-09-01T02:14:51.660Z","statusMessage":"Mandate activated on 2026-09-01T02:14:51.660Z - all peppol registrations completed","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB2M6R4QP8XCT0V9E5NH7WD/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB2M6R4QP8XCT0V9E5NH7WD/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@example-company.be","submittedAt":"2026-08-15T09:12:44.318Z"}]},{"ulid":"01KJB3T8W2XKA5RM6D1YQ4ZC7F","countryCode":"NL","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"kvk":"12345678"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0106:12345678"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"ACTIVE","lastModifiedTimestamp":"2026-09-01T02:14:51.660Z","statusMessage":"Mandate activated on 2026-09-01T02:14:51.660Z - all peppol registrations completed","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB3T8W2XKA5RM6D1YQ4ZC7F/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB3T8W2XKA5RM6D1YQ4ZC7F/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integratie@voorbeeld-bedrijf.nl","submittedAt":"2026-08-15T09:12:44.318Z"}]},{"ulid":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","countryCode":"FR","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","endDate":"2028-12-31","identifier":{"siren":"123456789","siret":"12345678900014"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:123456789_12345678900014"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"ACTIVE","lastModifiedTimestamp":"2026-09-01T02:14:51.660Z","statusMessage":"Mandate activated on 2026-09-01T02:14:51.660Z - all peppol registrations completed","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@societe-exemple.fr","submittedAt":"2026-08-15T09:12:44.318Z"}]},{"ulid":"01KJB4V0Y6ZNC7SP8F2AR5XD9G","countryCode":"DE","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"geba":"DE123456789"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0246:DE123456789"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"ACTIVE","lastModifiedTimestamp":"2026-09-01T02:14:51.660Z","statusMessage":"Mandate activated on 2026-09-01T02:14:51.660Z - all peppol registrations completed","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB4V0Y6ZNC7SP8F2AR5XD9G/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB4V0Y6ZNC7SP8F2AR5XD9G/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@beispiel-gmbh.de","submittedAt":"2026-08-15T09:12:44.318Z"}]},{"ulid":"01KJB5W2Z8AQD9TR0G3BS6YE1H","countryCode":"LU","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"mat":"20241234567"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0240:20241234567"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"ACTIVE","lastModifiedTimestamp":"2026-09-01T02:14:51.660Z","statusMessage":"Mandate activated on 2026-09-01T02:14:51.660Z - all peppol registrations completed","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB5W2Z8AQD9TR0G3BS6YE1H/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB5W2Z8AQD9TR0G3BS6YE1H/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@exemple-luxembourg.lu","submittedAt":"2026-08-15T09:12:44.318Z"}]}],"count":5,"lastEvaluatedKey":"eyJQSyI6IkNMSUVOVCMwMUtKQUhUU1RKTloxTTdGNktXMlkyWDRaUSJ9"}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Lists the mandates for this subscription","tags":["mandates"]}},"/mandates/{mandateUlid}":{"get":{"description":"This call gets a mandate by ulid.<br/><br/>","operationId":"MandateController_getMandate","parameters":[{"name":"mandateUlid","required":true,"in":"path","description":"The ulid of the mandate","schema":{"example":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","type":"string"}}],"responses":{"200":{"description":"The mandate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MandateDto"},"examples":{"BE":{"summary":"BE - ACTIVE mandate, live on Peppol","value":{"ulid":"01KJB2M6R4QP8XCT0V9E5NH7WD","countryCode":"BE","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"kbo":"0123456789"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0208:0123456789"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"ACTIVE","lastModifiedTimestamp":"2026-09-01T02:14:51.660Z","statusMessage":"Mandate activated on 2026-09-01T02:14:51.660Z - all peppol registrations completed","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB2M6R4QP8XCT0V9E5NH7WD/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB2M6R4QP8XCT0V9E5NH7WD/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@example-company.be","submittedAt":"2026-08-15T09:12:44.318Z"}]}},"NL":{"summary":"NL - ACTIVE mandate, live on Peppol","value":{"ulid":"01KJB3T8W2XKA5RM6D1YQ4ZC7F","countryCode":"NL","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"kvk":"12345678"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0106:12345678"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"ACTIVE","lastModifiedTimestamp":"2026-09-01T02:14:51.660Z","statusMessage":"Mandate activated on 2026-09-01T02:14:51.660Z - all peppol registrations completed","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB3T8W2XKA5RM6D1YQ4ZC7F/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB3T8W2XKA5RM6D1YQ4ZC7F/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integratie@voorbeeld-bedrijf.nl","submittedAt":"2026-08-15T09:12:44.318Z"}]}},"FR":{"summary":"FR - ACTIVE mandate, live on Peppol","value":{"ulid":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","countryCode":"FR","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","endDate":"2028-12-31","identifier":{"siren":"123456789","siret":"12345678900014"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:123456789_12345678900014"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"ACTIVE","lastModifiedTimestamp":"2026-09-01T02:14:51.660Z","statusMessage":"Mandate activated on 2026-09-01T02:14:51.660Z - all peppol registrations completed","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@societe-exemple.fr","submittedAt":"2026-08-15T09:12:44.318Z"}]}},"DE":{"summary":"DE - ACTIVE mandate, live on Peppol","value":{"ulid":"01KJB4V0Y6ZNC7SP8F2AR5XD9G","countryCode":"DE","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"geba":"DE123456789"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0246:DE123456789"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"ACTIVE","lastModifiedTimestamp":"2026-09-01T02:14:51.660Z","statusMessage":"Mandate activated on 2026-09-01T02:14:51.660Z - all peppol registrations completed","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB4V0Y6ZNC7SP8F2AR5XD9G/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB4V0Y6ZNC7SP8F2AR5XD9G/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@beispiel-gmbh.de","submittedAt":"2026-08-15T09:12:44.318Z"}]}},"LU":{"summary":"LU - ACTIVE mandate, live on Peppol","value":{"ulid":"01KJB5W2Z8AQD9TR0G3BS6YE1H","countryCode":"LU","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"mat":"20241234567"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0240:20241234567"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"ACTIVE","lastModifiedTimestamp":"2026-09-01T02:14:51.660Z","statusMessage":"Mandate activated on 2026-09-01T02:14:51.660Z - all peppol registrations completed","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB5W2Z8AQD9TR0G3BS6YE1H/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB5W2Z8AQD9TR0G3BS6YE1H/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@exemple-luxembourg.lu","submittedAt":"2026-08-15T09:12:44.318Z"}]}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"404":{"description":"No mandate found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Gets a mandate by ulid","tags":["mandates"]}},"/mandates/be":{"post":{"description":"This call requests a new mandate.<br/><br/>`kycData` and its `company` are always mandatory. The `representative` and `participantAgreement` are additionally mandatory when the client's contract type is `THIRD_PARTY_CONTRACT_BASED` and optional when it is `DOKAPI_CONTRACT_BASED`.<br/><br/>Your contract type is configured by Dokapi as part of your subscription and reflects the contract you hold - it is not a field on this request and cannot be changed through the API.<br/><br/>A `THIRD_PARTY_CONTRACT_BASED` mandate has to be backed by a KYC proof, so it is created in `PENDING_UPLOAD` and the response carries an `additionalDocumentUpload` with a presigned URL. `PUT` the document to that URL (any content type is accepted): the mandate then moves to `REQUESTED` on its own, the review flow starts, and the document's S3 key appears in `kycData.additionalDocuments`. Until the upload lands, the mandate stays in `PENDING_UPLOAD` and no `mandate.*` event is emitted. A `DOKAPI_CONTRACT_BASED` mandate is created in `REQUESTED` right away and carries no `additionalDocumentUpload`.<br/><br/>**Only the first upload to that URL counts.** The URL remains technically usable until it expires, and a second `PUT` to it still answers `200` — but that upload is discarded and the mandate keeps the document it was granted on. Uploading again is therefore not a way to correct or replace a document.<br/><br/>Status changes are communicated on registered webhooks via the `mandate.*` events and will be of type `MandateStatusFeedbackDto`<br/><br/>Peppol entities on a Belgian mandate use ICD `0208` (KBO / CBE enterprise number) or `9925` (Belgian VAT number).<br/><br/>Activation registers the Peppol BIS Billing 3 invoice and credit note for each receiving entity.","operationId":"MandateController_requestMandateForParticipantInBelgium","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BelgiumParticipantMandateRequestDto"},"examples":{"enterpriseNumber":{"summary":"KBO enterprise number (DOKAPI_CONTRACT_BASED)","value":{"startDate":"2026-09-01","identifier":{"kbo":"0123456789"},"kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0208:0123456789"},"sendingCapabilities":true,"receivingCapabilities":true}]}},"enterpriseNumberAndVat":{"summary":"KBO and VAT entities (THIRD_PARTY_CONTRACT_BASED: representative and agreement required)","value":{"startDate":"2026-09-01","identifier":{"kbo":"0123456789"},"kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0208:0123456789"},"sendingCapabilities":true,"receivingCapabilities":true},{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"9925:BE0123456789"},"sendingCapabilities":true,"receivingCapabilities":true}]}}}}}},"responses":{"201":{"description":"The mandate was successfully requested, further communications will be delivered via webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestMandateResponseDto"},"examples":{"BE":{"summary":"Belgium third-party mandate, created in PENDING_UPLOAD with an upload URL","value":{"message":"The mandate was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJB2M6R4QP8XCT0V9E5NH7WD","countryCode":"BE","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"kbo":"0123456789"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0208:0123456789"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"PENDING_UPLOAD","lastModifiedTimestamp":"2026-08-15T09:12:44.318Z","kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":[]},"kycDataHistory":[{"kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":[]},"submittedBy":"integration@example-company.be","submittedAt":"2026-08-15T09:12:44.318Z"}]},"additionalDocumentUpload":{"key":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB2M6R4QP8XCT0V9E5NH7WD/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C","url":"https://mandate-additional-documents.s3.eu-central-1.amazonaws.com/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB2M6R4QP8XCT0V9E5NH7WD/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3000&X-Amz-Signature=..."}}},"BE_DOKAPI_CONTRACT":{"summary":"Belgium dokapi-contract mandate, created in REQUESTED - no upload needed","value":{"message":"The mandate was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJB2M6R4QP8XCT0V9E5NH7WD","countryCode":"BE","contractType":"DOKAPI_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"kbo":"0123456789"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0208:0123456789"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"REQUESTED","lastModifiedTimestamp":"2026-08-15T09:12:44.318Z","kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":[]},"kycDataHistory":[{"kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":[]},"submittedBy":"integration@example-company.be","submittedAt":"2026-08-15T09:12:44.318Z"}]}}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Request a mandate for a participant in Belgium","tags":["mandates"]}},"/mandates/nl":{"post":{"description":"This call requests a new mandate.<br/><br/>`kycData` and its `company` are always mandatory. The `representative` and `participantAgreement` are additionally mandatory when the client's contract type is `THIRD_PARTY_CONTRACT_BASED` and optional when it is `DOKAPI_CONTRACT_BASED`.<br/><br/>Your contract type is configured by Dokapi as part of your subscription and reflects the contract you hold - it is not a field on this request and cannot be changed through the API.<br/><br/>A `THIRD_PARTY_CONTRACT_BASED` mandate has to be backed by a KYC proof, so it is created in `PENDING_UPLOAD` and the response carries an `additionalDocumentUpload` with a presigned URL. `PUT` the document to that URL (any content type is accepted): the mandate then moves to `REQUESTED` on its own, the review flow starts, and the document's S3 key appears in `kycData.additionalDocuments`. Until the upload lands, the mandate stays in `PENDING_UPLOAD` and no `mandate.*` event is emitted. A `DOKAPI_CONTRACT_BASED` mandate is created in `REQUESTED` right away and carries no `additionalDocumentUpload`.<br/><br/>**Only the first upload to that URL counts.** The URL remains technically usable until it expires, and a second `PUT` to it still answers `200` — but that upload is discarded and the mandate keeps the document it was granted on. Uploading again is therefore not a way to correct or replace a document.<br/><br/>Status changes are communicated on registered webhooks via the `mandate.*` events and will be of type `MandateStatusFeedbackDto`<br/><br/>Peppol entities on a Dutch mandate use ICD `0106` (KvK number), `0190` (OIN) or `9944` (Dutch VAT number).<br/><br/>Activation registers the Peppol BIS Billing 3 invoice and credit note <b>and</b> the SI-UBL 2.0 invoice and credit note for each receiving entity.","operationId":"MandateController_requestMandateForParticipantInNetherlands","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetherlandsParticipantMandateRequestDto"},"examples":{"kvkNumber":{"summary":"KvK number (DOKAPI_CONTRACT_BASED)","value":{"startDate":"2026-09-01","identifier":{"kvk":"12345678"},"kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0106:12345678"},"sendingCapabilities":true,"receivingCapabilities":true}]}},"kvkAndVat":{"summary":"KvK and VAT entities (THIRD_PARTY_CONTRACT_BASED: representative and agreement required)","value":{"startDate":"2026-09-01","identifier":{"kvk":"12345678"},"kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0106:12345678"},"sendingCapabilities":true,"receivingCapabilities":true},{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"9944:NL123456789B01"},"sendingCapabilities":true,"receivingCapabilities":true}]}},"oin":{"summary":"OIN - for organisations that exchange with Dutch government bodies","value":{"startDate":"2026-09-01","identifier":{"kvk":"12345678"},"kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0190:00000001234567890000"},"sendingCapabilities":true,"receivingCapabilities":true}]}}}}}},"responses":{"201":{"description":"The mandate was successfully requested, further communications will be delivered via webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestMandateResponseDto"},"examples":{"NL":{"summary":"the Netherlands third-party mandate, created in PENDING_UPLOAD with an upload URL","value":{"message":"The mandate was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJB3T8W2XKA5RM6D1YQ4ZC7F","countryCode":"NL","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"kvk":"12345678"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0106:12345678"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"PENDING_UPLOAD","lastModifiedTimestamp":"2026-08-15T09:12:44.318Z","kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":[]},"kycDataHistory":[{"kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":[]},"submittedBy":"integratie@voorbeeld-bedrijf.nl","submittedAt":"2026-08-15T09:12:44.318Z"}]},"additionalDocumentUpload":{"key":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB3T8W2XKA5RM6D1YQ4ZC7F/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C","url":"https://mandate-additional-documents.s3.eu-central-1.amazonaws.com/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB3T8W2XKA5RM6D1YQ4ZC7F/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3000&X-Amz-Signature=..."}}},"NL_DOKAPI_CONTRACT":{"summary":"the Netherlands dokapi-contract mandate, created in REQUESTED - no upload needed","value":{"message":"The mandate was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJB3T8W2XKA5RM6D1YQ4ZC7F","countryCode":"NL","contractType":"DOKAPI_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"kvk":"12345678"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0106:12345678"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"REQUESTED","lastModifiedTimestamp":"2026-08-15T09:12:44.318Z","kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":[]},"kycDataHistory":[{"kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":[]},"submittedBy":"integratie@voorbeeld-bedrijf.nl","submittedAt":"2026-08-15T09:12:44.318Z"}]}}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Request a mandate for a participant in the Netherlands","tags":["mandates"]}},"/mandates/fr":{"post":{"description":"This call requests a new mandate.<br/><br/>`kycData` and its `company` are always mandatory. The `representative` and `participantAgreement` are additionally mandatory when the client's contract type is `THIRD_PARTY_CONTRACT_BASED` and optional when it is `DOKAPI_CONTRACT_BASED`.<br/><br/>Your contract type is configured by Dokapi as part of your subscription and reflects the contract you hold - it is not a field on this request and cannot be changed through the API.<br/><br/>A `THIRD_PARTY_CONTRACT_BASED` mandate has to be backed by a KYC proof, so it is created in `PENDING_UPLOAD` and the response carries an `additionalDocumentUpload` with a presigned URL. `PUT` the document to that URL (any content type is accepted): the mandate then moves to `REQUESTED` on its own, the review flow starts, and the document's S3 key appears in `kycData.additionalDocuments`. Until the upload lands, the mandate stays in `PENDING_UPLOAD` and no `mandate.*` event is emitted. A `DOKAPI_CONTRACT_BASED` mandate is created in `REQUESTED` right away and carries no `additionalDocumentUpload`.<br/><br/>**Only the first upload to that URL counts.** The URL remains technically usable until it expires, and a second `PUT` to it still answers `200` — but that upload is discarded and the mandate keeps the document it was granted on. Uploading again is therefore not a way to correct or replace a document.<br/><br/>Status changes are communicated on registered webhooks via the `mandate.*` events and will be of type `MandateStatusFeedbackDto`<br/><br/>Peppol entities on a French mandate must use ICD `0225`. Its organisation id addresses one of four levels, and the level decides which French compliance registration runs during review:<ul><li>`<siren>` — 9 digits. Registers a <b>legal entity</b>.</li><li>`<siren>_<siret>` — the SIREN, then the 14-digit SIRET. Registers an <b>establishment</b>.</li><li>`<siren>_<siret>_<routingCode>` — a service within an establishment.</li><li>`<siren>_<suffix>` — a company-chosen label with no establishment.</li></ul>These are the four forms the France Peppol Authority permits under ICD 0225; the SIREN always leads, and a bare SIRET is refused. The value is also the Annuaire's `identifiantAdressage` for that line.<br/><br/>A routing code that does not exist in the Annuaire yet is created during review, named after the identifier itself. It is your record on your establishment: it stays when the mandate ends.<br/><br/>Routing codes and suffixes are stored in lower case. An entity carrying any other ICD is accepted but receives no French compliance registration.<br/><br/>Activation registers the Peppol BIS Billing 3 invoice and credit note, plus the France-specific document types (Factur-X, UBL and CII Invoice CIUS and Extensions, CDAR, UBL Credit Note CIUS and Extension).<br/><br/>When supplied, `endDate` is the last day the French directory line is in force; it covers that day and lapses the day after.<br/><br/>Because `startDate` becomes the start date of that directory line, a mandate carrying an ICD `0225` entity must start at least one day in the future - a directory line may not take effect on the day it is registered. In production the `startDate` must additionally be on or after <b>2026-09-01</b>. Both rules are keyed on the entity ICD rather than on the mandate country, so they apply to an ICD `0225` entity on a mandate of any country.<br/><br/>A client flagged as a <b>Platform Agréé</b> manages its own French flows: no annuaire directory line is registered on its behalf during review.","operationId":"MandateController_requestMandateForParticipantInFrance","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FranceParticipantMandateRequestDto"},"examples":{"sirenLegalEntity":{"summary":"SIREN - registers a legal entity (DOKAPI_CONTRACT_BASED)","value":{"startDate":"2026-09-01","identifier":{"siren":"123456789"},"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:123456789"},"sendingCapabilities":true,"receivingCapabilities":true}]}},"siretEstablishment":{"summary":"SIRET - registers an establishment (THIRD_PARTY_CONTRACT_BASED: representative and agreement required)","value":{"startDate":"2026-09-01","endDate":"2028-12-31","identifier":{"siren":"123456789","siret":"12345678900014"},"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:123456789_12345678900014"},"sendingCapabilities":true,"receivingCapabilities":true}]}},"siretWithRoutingCode":{"summary":"SIRET with a routing code — a service within the establishment","value":{"startDate":"2026-09-01","identifier":{"siren":"123456789","siret":"12345678900014"},"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:123456789_12345678900014_achats"},"sendingCapabilities":true,"receivingCapabilities":true}]}},"sirenWithSuffix":{"summary":"SIREN with a suffix — a second address for the company, alongside its plain SIREN line","value":{"startDate":"2026-09-01","identifier":{"siren":"123456789"},"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:123456789"},"sendingCapabilities":true,"receivingCapabilities":true},{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:123456789_autofact"},"sendingCapabilities":true,"receivingCapabilities":true}]}}}}}},"responses":{"201":{"description":"The mandate was successfully requested, further communications will be delivered via webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestMandateResponseDto"},"examples":{"FR":{"summary":"France third-party mandate, created in PENDING_UPLOAD with an upload URL","value":{"message":"The mandate was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","countryCode":"FR","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","endDate":"2028-12-31","identifier":{"siren":"123456789","siret":"12345678900014"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:123456789_12345678900014"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"PENDING_UPLOAD","lastModifiedTimestamp":"2026-08-15T09:12:44.318Z","kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":[]},"kycDataHistory":[{"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":[]},"submittedBy":"integration@societe-exemple.fr","submittedAt":"2026-08-15T09:12:44.318Z"}]},"additionalDocumentUpload":{"key":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C","url":"https://mandate-additional-documents.s3.eu-central-1.amazonaws.com/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3000&X-Amz-Signature=..."}}},"FR_DOKAPI_CONTRACT":{"summary":"France dokapi-contract mandate, created in REQUESTED - no upload needed","value":{"message":"The mandate was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","countryCode":"FR","contractType":"DOKAPI_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","endDate":"2028-12-31","identifier":{"siren":"123456789","siret":"12345678900014"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:123456789_12345678900014"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"REQUESTED","lastModifiedTimestamp":"2026-08-15T09:12:44.318Z","kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":[]},"kycDataHistory":[{"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":[]},"submittedBy":"integration@societe-exemple.fr","submittedAt":"2026-08-15T09:12:44.318Z"}]}}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Request a mandate for a participant in France","tags":["mandates"]}},"/mandates/de":{"post":{"description":"This call requests a new mandate.<br/><br/>`kycData` and its `company` are always mandatory. The `representative` and `participantAgreement` are additionally mandatory when the client's contract type is `THIRD_PARTY_CONTRACT_BASED` and optional when it is `DOKAPI_CONTRACT_BASED`.<br/><br/>Your contract type is configured by Dokapi as part of your subscription and reflects the contract you hold - it is not a field on this request and cannot be changed through the API.<br/><br/>A `THIRD_PARTY_CONTRACT_BASED` mandate has to be backed by a KYC proof, so it is created in `PENDING_UPLOAD` and the response carries an `additionalDocumentUpload` with a presigned URL. `PUT` the document to that URL (any content type is accepted): the mandate then moves to `REQUESTED` on its own, the review flow starts, and the document's S3 key appears in `kycData.additionalDocuments`. Until the upload lands, the mandate stays in `PENDING_UPLOAD` and no `mandate.*` event is emitted. A `DOKAPI_CONTRACT_BASED` mandate is created in `REQUESTED` right away and carries no `additionalDocumentUpload`.<br/><br/>**Only the first upload to that URL counts.** The URL remains technically usable until it expires, and a second `PUT` to it still answers `200` — but that upload is discarded and the mandate keeps the document it was granted on. Uploading again is therefore not a way to correct or replace a document.<br/><br/>Status changes are communicated on registered webhooks via the `mandate.*` events and will be of type `MandateStatusFeedbackDto`<br/><br/>Peppol entities on a German mandate use ICD `0246` (GEBA identifier) or `9930` (German VAT number).<br/><br/>Activation registers the XRechnung UBL Invoice V3.0 and XRechnung UBL Credit Note V3.0 for each receiving entity.","operationId":"MandateController_requestMandateForParticipantInGermany","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GermanyParticipantMandateRequestDto"},"examples":{"geba":{"summary":"GEBA identifier (DOKAPI_CONTRACT_BASED)","value":{"startDate":"2026-09-01","identifier":{"geba":"DE123456789"},"kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0246:DE123456789"},"sendingCapabilities":true,"receivingCapabilities":true}]}},"gebaAndVat":{"summary":"GEBA and VAT entities (THIRD_PARTY_CONTRACT_BASED: representative and agreement required)","value":{"startDate":"2026-09-01","identifier":{"geba":"DE123456789"},"kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0246:DE123456789"},"sendingCapabilities":true,"receivingCapabilities":true},{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"9930:DE123456789"},"sendingCapabilities":true,"receivingCapabilities":true}]}},"gebaWithBranch":{"summary":"GEBA with a branch suffix","value":{"startDate":"2026-09-01","identifier":{"geba":"DE123456789-00001"},"kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0246:DE123456789-00001"},"sendingCapabilities":true,"receivingCapabilities":true}]}}}}}},"responses":{"201":{"description":"The mandate was successfully requested, further communications will be delivered via webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestMandateResponseDto"},"examples":{"DE":{"summary":"Germany third-party mandate, created in PENDING_UPLOAD with an upload URL","value":{"message":"The mandate was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJB4V0Y6ZNC7SP8F2AR5XD9G","countryCode":"DE","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"geba":"DE123456789"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0246:DE123456789"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"PENDING_UPLOAD","lastModifiedTimestamp":"2026-08-15T09:12:44.318Z","kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":[]},"kycDataHistory":[{"kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":[]},"submittedBy":"integration@beispiel-gmbh.de","submittedAt":"2026-08-15T09:12:44.318Z"}]},"additionalDocumentUpload":{"key":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB4V0Y6ZNC7SP8F2AR5XD9G/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C","url":"https://mandate-additional-documents.s3.eu-central-1.amazonaws.com/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB4V0Y6ZNC7SP8F2AR5XD9G/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3000&X-Amz-Signature=..."}}},"DE_DOKAPI_CONTRACT":{"summary":"Germany dokapi-contract mandate, created in REQUESTED - no upload needed","value":{"message":"The mandate was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJB4V0Y6ZNC7SP8F2AR5XD9G","countryCode":"DE","contractType":"DOKAPI_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"geba":"DE123456789"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0246:DE123456789"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"REQUESTED","lastModifiedTimestamp":"2026-08-15T09:12:44.318Z","kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":[]},"kycDataHistory":[{"kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":[]},"submittedBy":"integration@beispiel-gmbh.de","submittedAt":"2026-08-15T09:12:44.318Z"}]}}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Request a mandate for a participant in Germany","tags":["mandates"]}},"/mandates/lu":{"post":{"description":"This call requests a new mandate.<br/><br/>`kycData` and its `company` are always mandatory. The `representative` and `participantAgreement` are additionally mandatory when the client's contract type is `THIRD_PARTY_CONTRACT_BASED` and optional when it is `DOKAPI_CONTRACT_BASED`.<br/><br/>Your contract type is configured by Dokapi as part of your subscription and reflects the contract you hold - it is not a field on this request and cannot be changed through the API.<br/><br/>A `THIRD_PARTY_CONTRACT_BASED` mandate has to be backed by a KYC proof, so it is created in `PENDING_UPLOAD` and the response carries an `additionalDocumentUpload` with a presigned URL. `PUT` the document to that URL (any content type is accepted): the mandate then moves to `REQUESTED` on its own, the review flow starts, and the document's S3 key appears in `kycData.additionalDocuments`. Until the upload lands, the mandate stays in `PENDING_UPLOAD` and no `mandate.*` event is emitted. A `DOKAPI_CONTRACT_BASED` mandate is created in `REQUESTED` right away and carries no `additionalDocumentUpload`.<br/><br/>**Only the first upload to that URL counts.** The URL remains technically usable until it expires, and a second `PUT` to it still answers `200` — but that upload is discarded and the mandate keeps the document it was granted on. Uploading again is therefore not a way to correct or replace a document.<br/><br/>Status changes are communicated on registered webhooks via the `mandate.*` events and will be of type `MandateStatusFeedbackDto`<br/><br/>Peppol entities on a Luxembourg mandate use ICD `0240` (matricule / numéro d'identification national) or `9938` (Luxembourg VAT number).<br/><br/>Activation registers the Peppol BIS Billing 3 invoice and credit note for each receiving entity.","operationId":"MandateController_requestMandateForParticipantInLuxembourg","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LuxembourgParticipantMandateRequestDto"},"examples":{"matricule":{"summary":"Matricule (DOKAPI_CONTRACT_BASED)","value":{"startDate":"2026-09-01","identifier":{"mat":"20241234567"},"kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0240:20241234567"},"sendingCapabilities":true,"receivingCapabilities":true}]}},"matriculeAndVat":{"summary":"Matricule and VAT entities (THIRD_PARTY_CONTRACT_BASED: representative and agreement required)","value":{"startDate":"2026-09-01","identifier":{"mat":"20241234567"},"kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0240:20241234567"},"sendingCapabilities":true,"receivingCapabilities":true},{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"9938:LU12345678"},"sendingCapabilities":true,"receivingCapabilities":true}]}}}}}},"responses":{"201":{"description":"The mandate was successfully requested, further communications will be delivered via webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestMandateResponseDto"},"examples":{"LU":{"summary":"Luxembourg third-party mandate, created in PENDING_UPLOAD with an upload URL","value":{"message":"The mandate was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJB5W2Z8AQD9TR0G3BS6YE1H","countryCode":"LU","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"mat":"20241234567"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0240:20241234567"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"PENDING_UPLOAD","lastModifiedTimestamp":"2026-08-15T09:12:44.318Z","kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":[]},"kycDataHistory":[{"kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":[]},"submittedBy":"integration@exemple-luxembourg.lu","submittedAt":"2026-08-15T09:12:44.318Z"}]},"additionalDocumentUpload":{"key":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB5W2Z8AQD9TR0G3BS6YE1H/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C","url":"https://mandate-additional-documents.s3.eu-central-1.amazonaws.com/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB5W2Z8AQD9TR0G3BS6YE1H/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3000&X-Amz-Signature=..."}}},"LU_DOKAPI_CONTRACT":{"summary":"Luxembourg dokapi-contract mandate, created in REQUESTED - no upload needed","value":{"message":"The mandate was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJB5W2Z8AQD9TR0G3BS6YE1H","countryCode":"LU","contractType":"DOKAPI_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"mat":"20241234567"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0240:20241234567"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"REQUESTED","lastModifiedTimestamp":"2026-08-15T09:12:44.318Z","kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":[]},"kycDataHistory":[{"kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":[]},"submittedBy":"integration@exemple-luxembourg.lu","submittedAt":"2026-08-15T09:12:44.318Z"}]}}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Request a mandate for a participant in Luxembourg","tags":["mandates"]}},"/mandates/be/{mandateUlid}":{"put":{"description":"This call updates an existing mandate.<br/><br/>`kycData` fully replaces the stored KYC data. `peppolEntities` is optional, but when sent it fully replaces the current list: entities dropped from it are deregistered on the next activation.<br/><br/>Status changes are communicated on registered webhooks via the `mandate.*` events and will be of type `MandateStatusFeedbackDto`<br/><br/>Peppol entities on a Belgian mandate use ICD `0208` (KBO / CBE enterprise number) or `9925` (Belgian VAT number).<br/><br/>Activation registers the Peppol BIS Billing 3 invoice and credit note for each receiving entity.","operationId":"MandateController_updateMandateForParticipantInBelgium","parameters":[{"name":"mandateUlid","required":true,"in":"path","description":"The ulid of the mandate","schema":{"example":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBelgiumParticipantMandateRequestDto"},"examples":{"replaceKycData":{"summary":"Correct the KYC data - peppolEntities omitted, so the registered entities are left untouched","value":{"kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"accounting@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}}}}},"stopReceiving":{"summary":"Stop receiving for an entity - receivingCapabilities false deregisters it from the network","value":{"kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0208:0123456789"},"sendingCapabilities":true,"receivingCapabilities":false}]}}}}}},"responses":{"200":{"description":"The mandate was successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMandateResponseDto"},"examples":{"BE":{"summary":"Belgium mandate, sent back to REVIEWING for re-review","value":{"message":"The mandate was successfully updated","mandate":{"ulid":"01KJB2M6R4QP8XCT0V9E5NH7WD","countryCode":"BE","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"kbo":"0123456789"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0208:0123456789"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"REVIEWING","lastModifiedTimestamp":"2026-09-04T14:03:07.902Z","statusMessage":"Mandate updated - re-running review","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"accounting@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB2M6R4QP8XCT0V9E5NH7WD/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"accounting@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB2M6R4QP8XCT0V9E5NH7WD/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@example-company.be","submittedAt":"2026-09-04T14:03:07.902Z"},{"kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB2M6R4QP8XCT0V9E5NH7WD/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@example-company.be","submittedAt":"2026-08-15T09:12:44.318Z"}]}}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"404":{"description":"No mandate found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Update a mandate for a participant in Belgium","tags":["mandates"]}},"/mandates/fr/{mandateUlid}":{"put":{"description":"This call updates an existing mandate.<br/><br/>`kycData` fully replaces the stored KYC data. `peppolEntities` is optional, but when sent it fully replaces the current list: entities dropped from it are deregistered on the next activation.<br/><br/>Status changes are communicated on registered webhooks via the `mandate.*` events and will be of type `MandateStatusFeedbackDto`<br/><br/>Peppol entities on a French mandate must use ICD `0225`. Its organisation id addresses one of four levels, and the level decides which French compliance registration runs during review:<ul><li>`<siren>` — 9 digits. Registers a <b>legal entity</b>.</li><li>`<siren>_<siret>` — the SIREN, then the 14-digit SIRET. Registers an <b>establishment</b>.</li><li>`<siren>_<siret>_<routingCode>` — a service within an establishment.</li><li>`<siren>_<suffix>` — a company-chosen label with no establishment.</li></ul>These are the four forms the France Peppol Authority permits under ICD 0225; the SIREN always leads, and a bare SIRET is refused. The value is also the Annuaire's `identifiantAdressage` for that line.<br/><br/>A routing code that does not exist in the Annuaire yet is created during review, named after the identifier itself. It is your record on your establishment: it stays when the mandate ends.<br/><br/>Routing codes and suffixes are stored in lower case. An entity carrying any other ICD is accepted but receives no French compliance registration.<br/><br/>Activation registers the Peppol BIS Billing 3 invoice and credit note, plus the France-specific document types (Factur-X, UBL and CII Invoice CIUS and Extensions, CDAR, UBL Credit Note CIUS and Extension).<br/><br/>When supplied, `endDate` is the last day the French directory line is in force; it covers that day and lapses the day after.<br/><br/>Because `startDate` becomes the start date of that directory line, a mandate carrying an ICD `0225` entity must start at least one day in the future - a directory line may not take effect on the day it is registered. In production the `startDate` must additionally be on or after <b>2026-09-01</b>. Both rules are keyed on the entity ICD rather than on the mandate country, so they apply to an ICD `0225` entity on a mandate of any country.<br/><br/>A client flagged as a <b>Platform Agréé</b> manages its own French flows: no annuaire directory line is registered on its behalf during review.","operationId":"MandateController_updateMandateForParticipantInFrance","parameters":[{"name":"mandateUlid","required":true,"in":"path","description":"The ulid of the mandate","schema":{"example":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFranceParticipantMandateRequestDto"},"examples":{"replaceKycData":{"summary":"Correct the KYC data - peppolEntities omitted, so the registered entities are left untouched","value":{"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"compta@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}}}}},"replacePeppolEntities":{"summary":"Replace the Peppol entities - the list is a full replacement, dropped entities are deregistered","value":{"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:12345678900014"},"sendingCapabilities":true,"receivingCapabilities":true},{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:98765432100025"},"sendingCapabilities":true,"receivingCapabilities":true}]}}}}}},"responses":{"200":{"description":"The mandate was successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMandateResponseDto"},"examples":{"FR":{"summary":"France mandate, sent back to REVIEWING for re-review","value":{"message":"The mandate was successfully updated","mandate":{"ulid":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","countryCode":"FR","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","endDate":"2028-12-31","identifier":{"siren":"123456789","siret":"12345678900014"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:123456789_12345678900014"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"REVIEWING","lastModifiedTimestamp":"2026-09-04T14:03:07.902Z","statusMessage":"Mandate updated - re-running review","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"compta@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"compta@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@societe-exemple.fr","submittedAt":"2026-09-04T14:03:07.902Z"},{"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@societe-exemple.fr","submittedAt":"2026-08-15T09:12:44.318Z"}]}}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"404":{"description":"No mandate found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Update a mandate for a participant in France","tags":["mandates"]}},"/mandates/nl/{mandateUlid}":{"put":{"description":"This call updates an existing mandate.<br/><br/>`kycData` fully replaces the stored KYC data. `peppolEntities` is optional, but when sent it fully replaces the current list: entities dropped from it are deregistered on the next activation.<br/><br/>Status changes are communicated on registered webhooks via the `mandate.*` events and will be of type `MandateStatusFeedbackDto`<br/><br/>Peppol entities on a Dutch mandate use ICD `0106` (KvK number), `0190` (OIN) or `9944` (Dutch VAT number).<br/><br/>Activation registers the Peppol BIS Billing 3 invoice and credit note <b>and</b> the SI-UBL 2.0 invoice and credit note for each receiving entity.","operationId":"MandateController_updateMandateForParticipantInNetherlands","parameters":[{"name":"mandateUlid","required":true,"in":"path","description":"The ulid of the mandate","schema":{"example":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateNetherlandsParticipantMandateRequestDto"},"examples":{"replaceKycData":{"summary":"Correct the KYC data - peppolEntities omitted, so the registered entities are left untouched","value":{"kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"administratie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}}}}},"replacePeppolEntities":{"summary":"Replace the Peppol entities - the list is a full replacement, dropped entities are deregistered","value":{"kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0106:12345678"},"sendingCapabilities":true,"receivingCapabilities":true},{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"9944:NL123456789B01"},"sendingCapabilities":true,"receivingCapabilities":true}]}}}}}},"responses":{"200":{"description":"The mandate was successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMandateResponseDto"},"examples":{"NL":{"summary":"the Netherlands mandate, sent back to REVIEWING for re-review","value":{"message":"The mandate was successfully updated","mandate":{"ulid":"01KJB3T8W2XKA5RM6D1YQ4ZC7F","countryCode":"NL","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"kvk":"12345678"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0106:12345678"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"REVIEWING","lastModifiedTimestamp":"2026-09-04T14:03:07.902Z","statusMessage":"Mandate updated - re-running review","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"administratie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB3T8W2XKA5RM6D1YQ4ZC7F/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"administratie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB3T8W2XKA5RM6D1YQ4ZC7F/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integratie@voorbeeld-bedrijf.nl","submittedAt":"2026-09-04T14:03:07.902Z"},{"kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB3T8W2XKA5RM6D1YQ4ZC7F/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integratie@voorbeeld-bedrijf.nl","submittedAt":"2026-08-15T09:12:44.318Z"}]}}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"404":{"description":"No mandate found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Update a mandate for a participant in the Netherlands","tags":["mandates"]}},"/mandates/de/{mandateUlid}":{"put":{"description":"This call updates an existing mandate.<br/><br/>`kycData` fully replaces the stored KYC data. `peppolEntities` is optional, but when sent it fully replaces the current list: entities dropped from it are deregistered on the next activation.<br/><br/>Status changes are communicated on registered webhooks via the `mandate.*` events and will be of type `MandateStatusFeedbackDto`<br/><br/>Peppol entities on a German mandate use ICD `0246` (GEBA identifier) or `9930` (German VAT number).<br/><br/>Activation registers the XRechnung UBL Invoice V3.0 and XRechnung UBL Credit Note V3.0 for each receiving entity.","operationId":"MandateController_updateMandateForParticipantInGermany","parameters":[{"name":"mandateUlid","required":true,"in":"path","description":"The ulid of the mandate","schema":{"example":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGermanyParticipantMandateRequestDto"},"examples":{"replaceKycData":{"summary":"Correct the KYC data - peppolEntities omitted, so the registered entities are left untouched","value":{"kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"buchhaltung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}}}}},"replacePeppolEntities":{"summary":"Replace the Peppol entities - the list is a full replacement, dropped entities are deregistered","value":{"kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0246:DE123456789"},"sendingCapabilities":true,"receivingCapabilities":true},{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"9930:DE123456789"},"sendingCapabilities":true,"receivingCapabilities":true}]}}}}}},"responses":{"200":{"description":"The mandate was successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMandateResponseDto"},"examples":{"DE":{"summary":"Germany mandate, sent back to REVIEWING for re-review","value":{"message":"The mandate was successfully updated","mandate":{"ulid":"01KJB4V0Y6ZNC7SP8F2AR5XD9G","countryCode":"DE","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"geba":"DE123456789"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0246:DE123456789"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"REVIEWING","lastModifiedTimestamp":"2026-09-04T14:03:07.902Z","statusMessage":"Mandate updated - re-running review","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"buchhaltung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB4V0Y6ZNC7SP8F2AR5XD9G/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"buchhaltung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB4V0Y6ZNC7SP8F2AR5XD9G/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@beispiel-gmbh.de","submittedAt":"2026-09-04T14:03:07.902Z"},{"kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB4V0Y6ZNC7SP8F2AR5XD9G/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@beispiel-gmbh.de","submittedAt":"2026-08-15T09:12:44.318Z"}]}}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"404":{"description":"No mandate found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Update a mandate for a participant in Germany","tags":["mandates"]}},"/mandates/lu/{mandateUlid}":{"put":{"description":"This call updates an existing mandate.<br/><br/>`kycData` fully replaces the stored KYC data. `peppolEntities` is optional, but when sent it fully replaces the current list: entities dropped from it are deregistered on the next activation.<br/><br/>Status changes are communicated on registered webhooks via the `mandate.*` events and will be of type `MandateStatusFeedbackDto`<br/><br/>Peppol entities on a Luxembourg mandate use ICD `0240` (matricule / numéro d'identification national) or `9938` (Luxembourg VAT number).<br/><br/>Activation registers the Peppol BIS Billing 3 invoice and credit note for each receiving entity.","operationId":"MandateController_updateMandateForParticipantInLuxembourg","parameters":[{"name":"mandateUlid","required":true,"in":"path","description":"The ulid of the mandate","schema":{"example":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLuxembourgParticipantMandateRequestDto"},"examples":{"replaceKycData":{"summary":"Correct the KYC data - peppolEntities omitted, so the registered entities are left untouched","value":{"kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"comptabilite@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}}}}},"replacePeppolEntities":{"summary":"Replace the Peppol entities - the list is a full replacement, dropped entities are deregistered","value":{"kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}}},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0240:20241234567"},"sendingCapabilities":true,"receivingCapabilities":true},{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"9938:LU12345678"},"sendingCapabilities":true,"receivingCapabilities":true}]}}}}}},"responses":{"200":{"description":"The mandate was successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMandateResponseDto"},"examples":{"LU":{"summary":"Luxembourg mandate, sent back to REVIEWING for re-review","value":{"message":"The mandate was successfully updated","mandate":{"ulid":"01KJB5W2Z8AQD9TR0G3BS6YE1H","countryCode":"LU","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"mat":"20241234567"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0240:20241234567"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"REVIEWING","lastModifiedTimestamp":"2026-09-04T14:03:07.902Z","statusMessage":"Mandate updated - re-running review","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"comptabilite@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB5W2Z8AQD9TR0G3BS6YE1H/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"comptabilite@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB5W2Z8AQD9TR0G3BS6YE1H/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@exemple-luxembourg.lu","submittedAt":"2026-09-04T14:03:07.902Z"},{"kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB5W2Z8AQD9TR0G3BS6YE1H/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@exemple-luxembourg.lu","submittedAt":"2026-08-15T09:12:44.318Z"}]}}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"404":{"description":"No mandate found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Update a mandate for a participant in Luxembourg","tags":["mandates"]}},"/mandates/{mandateUlid}/inactivate":{"post":{"description":"This call inactivates an existing mandate. Allowed only for mandates in ACTIVE, ACTION_REQUIRED or REVIEWED status; the teardown (peppol and france deregistrations) runs asynchronously and further communications are delivered via webhook.<br/><br/>Status changes are communicated on registered webhooks via the `mandate.*` events and will be of type `MandateStatusFeedbackDto`","operationId":"MandateController_inactivateMandate","parameters":[{"name":"mandateUlid","required":true,"in":"path","description":"The ulid of the mandate","schema":{"example":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","type":"string"}}],"responses":{"200":{"description":"The mandate inactivation was successfully requested","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InactivateMandateResponseDto"},"examples":{"BE":{"summary":"BE - teardown requested, mandate moves to INACTIVATING","value":{"message":"The mandate inactivation was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJB2M6R4QP8XCT0V9E5NH7WD","countryCode":"BE","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"kbo":"0123456789"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0208:0123456789"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"INACTIVATING","lastModifiedTimestamp":"2026-11-20T10:47:12.005Z","statusMessage":"Mandate inactivation requested on 2026-11-20T10:47:12.005Z","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB2M6R4QP8XCT0V9E5NH7WD/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Example Company BV","address":{"streetName":"Main Street 12","additionalStreetName":"Box 3","cityName":"Antwerp","postalZone":"2000","countrySubentity":"Antwerp","countryCode":"BE"},"contactEmail":"invoicing@example-company.be"},"representative":{"personalInformation":{"firstName":"Jane","lastName":"Doe"},"dateOfBirth":"1982-11-05","email":"jane.doe@example-company.be","role":"Managing Director"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Jane","lastName":"Doe"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB2M6R4QP8XCT0V9E5NH7WD/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@example-company.be","submittedAt":"2026-08-15T09:12:44.318Z"}]}}},"NL":{"summary":"NL - teardown requested, mandate moves to INACTIVATING","value":{"message":"The mandate inactivation was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJB3T8W2XKA5RM6D1YQ4ZC7F","countryCode":"NL","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"kvk":"12345678"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0106:12345678"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"INACTIVATING","lastModifiedTimestamp":"2026-11-20T10:47:12.005Z","statusMessage":"Mandate inactivation requested on 2026-11-20T10:47:12.005Z","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB3T8W2XKA5RM6D1YQ4ZC7F/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Voorbeeld Bedrijf B.V.","address":{"streetName":"Keizersgracht 210","additionalStreetName":"Tweede verdieping","cityName":"Amsterdam","postalZone":"1016 DX","countrySubentity":"Noord-Holland","countryCode":"NL"},"contactEmail":"facturatie@voorbeeld-bedrijf.nl"},"representative":{"personalInformation":{"firstName":"Daan","lastName":"Jansen"},"dateOfBirth":"1980-02-17","email":"daan.jansen@voorbeeld-bedrijf.nl","role":"Directeur"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Daan","lastName":"Jansen"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB3T8W2XKA5RM6D1YQ4ZC7F/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integratie@voorbeeld-bedrijf.nl","submittedAt":"2026-08-15T09:12:44.318Z"}]}}},"FR":{"summary":"FR - teardown requested, mandate moves to INACTIVATING","value":{"message":"The mandate inactivation was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ","countryCode":"FR","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","endDate":"2028-12-31","identifier":{"siren":"123456789","siret":"12345678900014"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0225:123456789_12345678900014"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"INACTIVATING","lastModifiedTimestamp":"2026-11-20T10:47:12.005Z","statusMessage":"Mandate inactivation requested on 2026-11-20T10:47:12.005Z","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Société Exemple SAS","address":{"streetName":"12 rue de la Paix","additionalStreetName":"Bâtiment C","cityName":"Paris","postalZone":"75002","countrySubentity":"Île-de-France","countryCode":"FR"},"contactEmail":"facturation@societe-exemple.fr"},"representative":{"personalInformation":{"firstName":"Camille","lastName":"Martin"},"dateOfBirth":"1978-04-23","email":"camille.martin@societe-exemple.fr","role":"Président"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Camille","lastName":"Martin"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@societe-exemple.fr","submittedAt":"2026-08-15T09:12:44.318Z"}]}}},"DE":{"summary":"DE - teardown requested, mandate moves to INACTIVATING","value":{"message":"The mandate inactivation was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJB4V0Y6ZNC7SP8F2AR5XD9G","countryCode":"DE","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"geba":"DE123456789"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0246:DE123456789"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"INACTIVATING","lastModifiedTimestamp":"2026-11-20T10:47:12.005Z","statusMessage":"Mandate inactivation requested on 2026-11-20T10:47:12.005Z","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB4V0Y6ZNC7SP8F2AR5XD9G/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Beispiel GmbH","address":{"streetName":"Friedrichstraße 45","additionalStreetName":"Aufgang B","cityName":"Berlin","postalZone":"10117","countrySubentity":"Berlin","countryCode":"DE"},"contactEmail":"rechnung@beispiel-gmbh.de"},"representative":{"personalInformation":{"firstName":"Lena","lastName":"Schmidt"},"dateOfBirth":"1975-09-30","email":"lena.schmidt@beispiel-gmbh.de","role":"Geschäftsführerin"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Lena","lastName":"Schmidt"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB4V0Y6ZNC7SP8F2AR5XD9G/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@beispiel-gmbh.de","submittedAt":"2026-08-15T09:12:44.318Z"}]}}},"LU":{"summary":"LU - teardown requested, mandate moves to INACTIVATING","value":{"message":"The mandate inactivation was successfully requested, further communications will be delivered via webhook","mandate":{"ulid":"01KJB5W2Z8AQD9TR0G3BS6YE1H","countryCode":"LU","contractType":"THIRD_PARTY_CONTRACT_BASED","creationTimestamp":"2026-08-15T09:12:44.318Z","startDate":"2026-09-01","identifier":{"mat":"20241234567"},"peppolEntities":[{"participantIdentifier":{"scheme":"iso6523-actorid-upis","value":"0240:20241234567"},"sendingCapabilities":true,"receivingCapabilities":true}],"status":"INACTIVATING","lastModifiedTimestamp":"2026-11-20T10:47:12.005Z","statusMessage":"Mandate inactivation requested on 2026-11-20T10:47:12.005Z","activatedAt":"2026-09-01T02:14:51.660Z","kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB5W2Z8AQD9TR0G3BS6YE1H/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"kycDataHistory":[{"kycData":{"company":{"name":"Exemple Luxembourg S.à r.l.","address":{"streetName":"23 Boulevard Royal","additionalStreetName":"Étage 4","cityName":"Luxembourg","postalZone":"L-2449","countrySubentity":"Luxembourg","countryCode":"LU"},"contactEmail":"facturation@exemple-luxembourg.lu"},"representative":{"personalInformation":{"firstName":"Marc","lastName":"Weber"},"dateOfBirth":"1984-06-11","email":"marc.weber@exemple-luxembourg.lu","role":"Gérant"},"participantAgreement":{"date":"2026-08-15","version":"1.0","paid":true,"signer":{"firstName":"Marc","lastName":"Weber"}},"additionalDocuments":["01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB5W2Z8AQD9TR0G3BS6YE1H/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"]},"submittedBy":"integration@exemple-luxembourg.lu","submittedAt":"2026-08-15T09:12:44.318Z"}]}}}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"404":{"description":"No mandate found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"409":{"description":"The mandate cannot be inactivated from its current status (only ACTIVE, ACTION_REQUIRED or REVIEWED are allowed).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Inactivate a mandate","tags":["mandates"]}},"/clients/deactivate-client-registration":{"post":{"description":"This call deactivates registration of the calling client.<br/><br/>Feedback needs to be received on registered webhook for event \"client.cancellation\", it is required to have this webhook registered before cancelling a subscription","operationId":"ClientController_deactivateClientRegistrationForClient","parameters":[],"responses":{"200":{"description":"Deactivation of client registration successfully initiated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientCancellationResponseDto"}}}},"400":{"description":"No Webhook with event \"client.cancellation\" was registered for client","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Deactivates the registration for the calling client","tags":["clients"]}},"/webhooks":{"post":{"description":"Register a new webhook URL for a given list of events.<br/><br/>URL needs to be publicly accessible, accepting POST request and should return 200 OK immediatelty. Processing of the received data should happen asynchronously.  No data is expected in the response.<br/><br/>It is possible to register multiple webhooks for the same event, in that case all URLs will be called.  If no webhooks are registered for a given event, nothing will be called but processing will never be blocked.<br/><br/>A client can register a total of 10 webhooks","operationId":"WebhookController_createWebhook","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRequestDto"}}}},"responses":{"201":{"description":"The webhook has been registered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookResponseDto"}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Register webhook","tags":["webhooks"]},"get":{"description":"Lists all registered webhooks.","operationId":"WebhookController_getWebhooks","parameters":[],"responses":{"200":{"description":"List of registered webhooks.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookResponseDto"}}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"List webhooks","tags":["webhooks"]}},"/webhooks/{ulid}":{"delete":{"description":"Deregister a webhook based on its ulid and clientUlid.<br/><br/>","operationId":"WebhookController_deleteWebhook","parameters":[{"name":"ulid","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"The webhook has been deregistered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWebhookResponseDto"}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"404":{"description":"No webhook found for provided ulid and clientUlid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Deregister webhook","tags":["webhooks"]}},"/webhooks/secretKey":{"post":{"description":"Generate a webhook secret as a client. In case you need a new key, rerun this operation to invalidate the previous key and regenerate a new one","operationId":"WebhookController_generateWebhookSecretForClient","parameters":[],"responses":{"201":{"description":"The webhook secret has been generated for the client.","content":{"text/plain":{"schema":{"type":"string","example":"your-webhook-secret-key"}}}},"400":{"description":"The provided request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailDto"}}}}},"summary":"Generate a webhook secret key","tags":["webhooks"]}}},"info":{"title":"Mandate API","description":"# Mandate API\n\nThe Mandate API lets a client register, maintain, and tear down **mandates**, the authorisation that puts one or more Peppol participant identifiers live on the network on the client's behalf. Creating a mandate drives the full onboarding process: compliance review, Peppol participant registration, mandatory document-type registration, and (where applicable) local-specific compliance registration.\n\n## Authentication\n\nThe API uses OAuth2 Client Credentials. Client credentials are retrieved from your subscription details.\n\n## Webhooks and events\n\nThe flow is asynchronous, progress is delivered as webhook events, not by polling. Register a webhook (`POST /webhooks`) for the mandate events you care about before creating mandates.\n\nThe lifecycle emits one event per status change: `mandate.requested`, `mandate.reviewing`, `mandate.action-required`, `mandate.reviewed`, `mandate.activating`, `mandate.active`, `mandate.inactivating`, `mandate.inactive`.\n\nDelivery is **at-least-once** and events may repeat.\n\nOne exception: `PENDING_UPLOAD` emits **no** event. A mandate waiting for its KYC document is not announced by webhook - you are told synchronously, in the response to the call that created it (see [Uploading the KYC document](#uploading-the-kyc-document)). The first event such a mandate produces is `mandate.requested`, once the document has been uploaded.\n\n## Errors\n\nErrors are returned as RFC 7807 problem-detail JSON with `title`, `detail`, and `status`. Common statuses: `400` invalid request, `403` not permitted by your subscription, `404` mandate not found, `409` conflict (see [Conflicts](#conflicts-409)).\n\n## Endpoints at a glance\n\n| Method | Path                          | Purpose                                                                           |\n| ------ | ----------------------------- | --------------------------------------------------------------------------------- |\n| `POST` | `/mandates/{country}`         | Create a mandate for a participant in the given country.                          |\n| `PUT`  | `/mandates/{country}/{ulid}`  | Update a mandate, re-runs review (see [Updating](#updating-a-mandate-re-review)). |\n| `GET`  | `/mandates`                   | List the calling client's mandates.                                               |\n| `GET`  | `/mandates/{ulid}`            | Fetch a single mandate.                                                           |\n| `POST` | `/mandates/{ulid}/inactivate` | Tear a mandate down and release its Peppol identifiers.                           |\n\nThe create/update path is country-specific because the required KYC and identifier scheme differ per country. Per-field detail lives on each endpoint's own documentation.\n\n## Process and steps\n\nA mandate is created in one call and then progresses **asynchronously**. You do not poll a job; you observe the mandate's `status` (via `GET /mandates/{ulid}`) and react to status-change webhooks.\n\n1. **Request**, `POST /mandates/{country}` creates the mandate with your `startDate`, optional `endDate`, and the Peppol entities to register. Which status it opens in depends on your contract type: `REQUESTED` for a dokapi contract, or `PENDING_UPLOAD` for a third-party contract, which additionally requires a KYC document to be uploaded before anything else happens - see [Uploading the KYC document](#uploading-the-kyc-document). Your contract type is configured by Dokapi as part of your subscription and reflects the contract you hold; it is not something you send on the request or can change through the API.\n2. **Review**, the mandate moves to `REVIEWING`. Dokapi runs KYC and compliance checks on the supplied identifiers. For French identifiers this also registers the establishment / legal entity with the French compliance service - unless the client is a **Platform Agréé**, which manages its own French flows and therefore registers its own annuaire directory lines.\n   - If everything passes, the mandate becomes `REVIEWED`.\n   - If input is missing or invalid, it becomes `ACTION_REQUIRED`, correct the data with a `PUT` to re-run review.\n3. **Activation**, from `REVIEWED` the mandate activates based on `startDate` (see [startDate handling](#startdate-past-vs-future)). Activation moves it through `ACTIVATING` and performs the Peppol registrations: the participant plus its [mandatory document types](#automatic-mandatory-document-type-registration).\n4. **Active**, the mandate becomes `ACTIVE` and the participant is live on Peppol. Activation is **best-effort**: the mandate becomes `ACTIVE` even if some registrations failed, see [Activation is best-effort](#activation-is-best-effort).\n5. **Inactivation**, `POST /mandates/{ulid}/inactivate` moves the mandate through `INACTIVATING` to the terminal `INACTIVE` state, deregistering the participant and freeing its identifiers. Inactivation is client-triggered only; **reaching `endDate` does not inactivate a mandate**, see [`endDate`](#enddate).\n\n## State flow\n\nA mandate moves through a fixed set of statuses. The transition rules below are the authoritative contract, the API rejects any status change whose source status is not an allowed origin for the target.\n\n| Status            | Meaning                                                                           |\n| ----------------- | --------------------------------------------------------------------------------- |\n| `PENDING_UPLOAD`  | Created; waiting for the KYC document to be uploaded. Third-party contracts only. |\n| `REQUESTED`       | Created; review not yet started.                                                  |\n| `REVIEWING`       | KYC / compliance checks in progress.                                              |\n| `ACTION_REQUIRED` | Review found a problem; client input is needed. Update to retry.                  |\n| `REVIEWED`        | Review passed; waiting to activate (now or on `startDate`).                       |\n| `ACTIVATING`      | Peppol participant and document types are being registered.                       |\n| `ACTIVE`          | Live on Peppol.                                                                   |\n| `INACTIVATING`    | Deregistration in progress.                                                       |\n| `INACTIVE`        | Terminal. Participant deregistered; identifiers freed for reuse.                  |\n\n### Allowed transitions\n\n| From              | Allowed targets                                              |\n| ----------------- | ------------------------------------------------------------ |\n| `PENDING_UPLOAD`  | `REQUESTED`, `INACTIVATING`                                  |\n| `REQUESTED`       | `REVIEWING`                                                  |\n| `REVIEWING`       | `REVIEWED`, `ACTION_REQUIRED`                                |\n| `ACTION_REQUIRED` | `REVIEWING`, `INACTIVATING`                                  |\n| `REVIEWED`        | `REVIEWING`, `REVIEWED` (self), `ACTIVATING`, `INACTIVATING` |\n| `ACTIVATING`      | `ACTIVE`                                                     |\n| `ACTIVE`          | `REVIEWING`, `ACTIVE` (self), `INACTIVATING`                 |\n| `INACTIVATING`    | `INACTIVE`                                                   |\n| `INACTIVE`        | `INACTIVE` (self)                                            |\n\n`INACTIVE` is the single terminal state. The `REVIEWED → REVIEWING` and `ACTIVE → REVIEWING` edges are the [re-review path](#updating-a-mandate-re-review): updating a settled mandate sends it back through review.\n\n## Uploading the KYC document\n\n**Applies to third-party contracts only.** If your subscription is on a dokapi contract, mandates are created in `REQUESTED`, no document is involved, and you can skip this section. Which of the two applies to you is set by Dokapi when your subscription is configured - if you are unsure, the `contractType` on any mandate you create tells you.\n\nA mandate held under a third-party contract must be backed by a KYC document - the proof of the mandate you hold on the participant's behalf. Because that is a file, it does not travel in the request body. Instead:\n\n1. `POST /mandates/{country}` returns `201` with the mandate in `PENDING_UPLOAD`, plus an `additionalDocumentUpload` object:\n\n   ```json\n   {\n     \"message\": \"The mandate was successfully requested, ...\",\n     \"mandate\": { \"ulid\": \"01J...\", \"status\": \"PENDING_UPLOAD\", \"kycData\": { \"additionalDocuments\": [] } },\n     \"additionalDocumentUpload\": {\n       \"key\": \"01J.../01J.../additional-documents/01J...\",\n       \"url\": \"https://s3.eu-central-1.amazonaws.com/...\"\n     }\n   }\n   ```\n\n2. `PUT` the document to `url`. Send the file as the raw request body and **no authentication headers** - the URL is already signed, and adding an `Authorization` header makes S3 reject the request. Any content type is accepted; there is no size or format restriction.\n\n3. The upload is what starts everything else. The mandate moves to `REQUESTED` on its own within seconds, `mandate.requested` is delivered to your webhook, and the flow proceeds exactly as it does for a dokapi contract. The document's `key` then appears in the mandate's `kycData.additionalDocuments`.\n\nUntil the document arrives the mandate stays in `PENDING_UPLOAD` and nothing happens: no review, no registrations, no webhooks.\n\n### Things to know\n\n- **The URL expires after 50 minutes.** There is currently no way to request a replacement, so upload promptly. A mandate whose URL expired can only be [inactivated](#inactivation-and-identifier-reuse) and recreated.\n- **`kycData.additionalDocuments` is read-only.** It reports the keys of documents that have actually been uploaded. Supplying it on a `POST` or `PUT` has no effect - the values are ignored.\n- **An update does not lose your documents.** `PUT /mandates/{country}/{ulid}` replaces `kycData`, but the uploaded document keys are preserved across it.\n- **Uploading twice to the same URL does not change the mandate.** The first upload is the one the mandate is advanced on; a repeat with different content is recorded as an anomaly and ignored. Do not use the URL to \"replace\" a document you already sent.\n- **A mandate you never upload for can be abandoned** with `POST /mandates/{ulid}/inactivate`, which releases its Peppol identifiers for reuse. Worth doing rather than leaving it: while it exists, those identifiers stay reserved to it.\n\n## startDate: past vs future\n\n`startDate` is a required calendar date and determines **when** an approved mandate activates:\n\n- **`startDate` today or in the past** → the mandate activates **immediately** once it reaches `REVIEWED`; it proceeds straight to `ACTIVATING`.\n- **`startDate` in the future** → activation is **scheduled** for that date. The mandate stays `REVIEWED` until then, at which point the schedule fires and activation runs.\n\nScheduling is **calendar-date granular** and evaluated in **UTC**, you control the day of activation, not the time of day.\n\n### French identifiers (scheme `0225`)\n\nA French electronic address is written **SIREN first**, in one of four forms: `<siren>` (legal entity), `<siren>_<suffix>`, `<siren>_<siret>` (establishment) or `<siren>_<siret>_<routingCode>` (a service within an establishment). This is the form the French Peppol Authority mandates and the same string the annuaire uses as `identifiantAdressage`. A bare SIRET such as `0225:24697198442141` is refused with `400`; the message names the expected spelling (`0225:246971984_24697198442141`). Suffixes and routing codes are stored in lower case.\n\n### startDate floor for French identifiers\n\nA mandate carrying **any** Peppol entity with scheme `0225` is subject to two extra `startDate` rules, rejected with `400` at creation:\n\n- The `startDate` must be **at least one day in the future**. Today or a past date is refused, so such a mandate never takes the immediate-activation path above.\n- In **production**, the `startDate` must additionally be **on or after 2026-09-01**.\n\nBoth rules are keyed on the **entity ICD, not the mandate's country**, so they equally apply to a `0225` entity attached to a BE / NL / DE / LU mandate. The reason is the French annuaire: your `startDate` becomes the start date of the directory line registered during review, and a directory line may not take effect on the day it is registered.\n\nThe same two rules apply when you **add** a `0225` entity to an existing mandate with `PUT /mandates/{country}/{ulid}`. Because `startDate` is fixed at creation and no update can move it, the rules there decide whether the entity may be added at all: the `PUT` is rejected with `400` if the mandate's `startDate` is not at least one day in the future (and, in production, on or after 2026-09-01). Practically, a `0225` entity can only be attached to a mandate that has not started yet - attach it at creation, or create a new mandate.\n\nThis applies only to entities you are **adding**. Re-sending a `0225` entity the mandate already carries changes nothing, so updating an already-started French mandate - correcting an `ACTION_REQUIRED` mandate, or editing the KYC data of an `ACTIVE` one - keeps working normally.\n\nOne consequence to plan for: the rule is checked again **at review time**, not just when you write the mandate. If a mandate's `startDate` arrives before its review completes - you left it in `ACTION_REQUIRED` past its start date, then corrected it - review cannot register the directory line and the mandate returns to `ACTION_REQUIRED`, with the reason in its `statusMessage`. Since `startDate` cannot be changed, such a mandate has to be replaced with a new one. Leave enough headroom between `startDate` and creation to get through review.\n\n### endDate\n\n`endDate` is optional and, when supplied, must be a calendar date strictly after `startDate`. Its effect is **limited and country-specific**:\n\n- For **French identifiers** (scheme `0225`), `endDate` is the **last day** the French compliance registration is in force - the directory line covers `endDate` itself and lapses the day after. Inactivating the mandate ends the directory line as of that day, independently of `endDate` - unless the client is a **Platform Agréé**, which registers and ends its own lines and for which Dokapi performs no annuaire calls at all, whether the entity is being added or removed.\n- For **all other identifiers** (BE / NL / DE / LU), `endDate` is stored but has **no runtime effect**.\n\nIn **no** case does reaching `endDate` inactivate the mandate or deregister the Peppol participant. A mandate stays `ACTIVE` and keeps receiving on Peppol past its `endDate` until it is explicitly inactivated via `POST /mandates/{ulid}/inactivate`.\n\n> **Planned:** automatic `endDate`-driven teardown (inactivation + Peppol deregistration) is tracked but not yet implemented. Until it ships, inactivate explicitly.\n\n## Activation is best-effort\n\nDuring `ACTIVATING`, each entity's Peppol registration is attempted independently and **failures do not block activation**, the mandate still transitions to `ACTIVE`. There is no automatic retry and no `ACTION_REQUIRED` on a registration failure.\n\nThe **only** signal of a partial failure is the mandate's `statusMessage`: on success it confirms all registrations completed; otherwise it lists each failed participant / document type. After activation, inspect `statusMessage` (via `GET /mandates/{ulid}`) to confirm every registration succeeded, and re-drive with a `PUT` if needed.\n\nBy contrast, **inactivation is all-or-nothing**: if a Peppol deregistration fails, the teardown is retried and the mandate stays in `INACTIVATING` until it succeeds.\n\n## Sending vs receiving capabilities\n\nEach Peppol entity carries optional `sendingCapabilities` and `receivingCapabilities` booleans. They control two different things.\n\n**`receivingCapabilities`, Peppol registration.** Registration is what makes a participant reachable to _receive_, so this flag drives the network actions at activation. It is **tri-state**:\n\n| `receivingCapabilities` | Effect on activation                                        |\n| ----------------------- | ----------------------------------------------------------- |\n| `true`                  | Participant + mandatory document types are registered.      |\n| `false`                 | Participant is **deregistered** (removed from the network). |\n| omitted / `undefined`   | Entity is **ignored**, neither registered nor deregistered. |\n\nTo put an entity live as a receiver, set `receivingCapabilities: true` explicitly.\n\n**`sendingCapabilities`, the outgoing gate.** This flag triggers no Peppol registration at all. It is read when you send a document: an outgoing document is rejected unless its sender has an active mandate whose matching entity carries `sendingCapabilities: true`.\n\n### French identifiers cannot send without receiving\n\nFor an entity with ICD `0225` (French SIREN / SIRET), `sendingCapabilities: true` is rejected with `400` unless `receivingCapabilities` is also `true`. Both creation and `PUT /mandates/{country}/{ulid}` enforce it.\n\nNote that **omitting** `receivingCapabilities` is rejected just like setting it to `false`. Per the table above, only `true` registers the participant, so either of the other two leaves it unreachable on the network — while `sendingCapabilities: true` would still let its documents through the outgoing gate. An entity that can send but was never registered as reachable is not a valid French configuration.\n\nLike the `startDate` rules, this is keyed on the **entity ICD, not the mandate's country**: a `0225` entity attached to a BE / NL / DE / LU mandate is subject to it, and a non-`0225` entity on a French mandate is not.\n\nUnlike the `startDate` rules, there is no exemption for entities the mandate already carries. Because `peppolEntities` fully replaces the current list on every `PUT`, each entity you send is checked — so re-sending an existing send-only `0225` entity is rejected too. Clear it in the same request by setting `receivingCapabilities: true` or dropping `sendingCapabilities`.\n\n## Automatic mandatory document type registration\n\nYou do not register document types by hand. During `ACTIVATING`, for **each receiving Peppol entity** on the mandate, Dokapi:\n\n1. Registers the participant on Peppol.\n2. Looks up the **mandatory document types** for that entity's identifier scheme (ICD) and registers each one against the participant.\n\nOnly entities with `receivingCapabilities: true` are registered (see [capabilities](#sending-vs-receiving-capabilities)). If a participant registration fails, its document-type registrations are skipped.\n\n**Exception:** for French-certified _Plateforme Agréée_ clients, French identifiers get no automatic document-type registration. Clients are responsible for registering document-types.\n\nClients are free to add additional documentTypes manually using the Peppol API.\n\n## Updating a mandate (re-review)\n\n`PUT /mandates/{country}/{ulid}` updates a mandate and **re-runs review**: a `REVIEWED` or `ACTIVE` mandate is sent back to `REVIEWING` so the new data is re-validated before it re-activates. Re-review is only allowed from settled states (`REQUESTED`, `ACTION_REQUIRED`, `REVIEWED`, `ACTIVE`), never while a review or activation is already in flight (that returns `409`).\n\nUpdate semantics to be aware of:\n\n- **`kycData` is required and fully replaces** the stored KYC on every update, send the complete object, not a partial.\n- **`peppolEntities` is optional; when sent it fully replaces** the current list. An entity dropped from the list is scheduled for deregistration on the next activation; an entity added is reserved and registered.\n- **`startDate` and `endDate` are immutable.** No endpoint changes them after creation, to change the dates, inactivate the mandate and create a new one.\n- **The country in the path must match the mandate's country**, otherwise the request is rejected with `400`.\n\n## What you can and cannot do per status\n\n- You **cannot inactivate a mandate that is still `REQUESTED`, `REVIEWING`, or `ACTIVATING`**, `POST /inactivate` on those returns `409`. Wait for it to settle (`ACTION_REQUIRED`, `REVIEWED`, or `ACTIVE`) first.\n- You **can** inactivate a mandate that is still `PENDING_UPLOAD` - nothing has been registered yet, so it settles at `INACTIVE` and frees its identifiers. That is how you abandon a mandate whose document you are not going to upload.\n- A mandate in `PENDING_UPLOAD` cannot be updated with `PUT` - it has not been requested yet. Inactivate and recreate instead.\n- Any status change whose source status is not permitted by the state machine returns `409`.\n\n## Conflicts (409)\n\nCreate and update can fail with `409` for reasons beyond the state machine:\n\n- **Identifier already reserved**, a Peppol identifier can be held by only one of your mandates at a time. Reusing one still held by another mandate returns `409`. Inactivate the holding mandate first (inactivation frees its identifiers).\n- **Concurrent modification**, simultaneous writes to the same mandate return `409`; retry the request.\n\n## Inactivation and identifier reuse\n\nEach Peppol identifier a mandate holds is reserved for the duration of the mandate, so a client cannot hold the same identifier under two mandates at once. When a mandate settles at `INACTIVE`, it releases **all** identifiers it held (current entities and any pending deletes) in the same step as the status change. Once inactive, those identifiers are free again and the client can request a new mandate for them.\n","version":"N/A","contact":{}},"tags":[],"servers":[{"url":"https://mandate-api.dokapi.io/v1"}],"components":{"schemas":{"ProblemDetailDto":{"type":"object","properties":{"type":{"type":"string","description":"A URI reference that identifies the problem type.","format":"uri","example":"https://httpstatuses.com/500"},"title":{"type":"string","description":"A short, human-readable summary of the problem.","example":"Service Unavailable"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem.","example":"The service is currently unable to handle the request."},"instance":{"type":"string","description":"A URI reference that identifies the specific occurrence of the problem.","example":"/errors/12345"},"status":{"type":"number","description":"The HTTP status code for this occurrence of the problem.","example":500},"uuid":{"type":"string","description":"A UUID that uniquely identifies this specific error occurrence.","example":"550e8400-e29b-41d4-a716-446655440000"}},"required":["title","detail"]},"PersonalInformationDto":{"type":"object","properties":{"firstName":{"type":"string","description":"First name","example":"Jane"},"lastName":{"type":"string","description":"Last name","example":"Doe"}},"required":["firstName","lastName"]},"ParticipantAgreementDto":{"type":"object","properties":{"date":{"type":"string","description":"Indicates the date on which the agreement was created/signed. In Iso format","example":"2026-01-01"},"version":{"type":"string","description":"The version of the agreement.","example":"1.0"},"paid":{"type":"boolean","description":"If the agreement is paying.","example":true},"signer":{"description":"Personal information of person who signed the agreement","allOf":[{"$ref":"#/components/schemas/PersonalInformationDto"}]}},"required":["date","version","paid","signer"]},"PostalAddressDto":{"type":"object","properties":{"streetName":{"type":"string","description":"The main address line in an address.","example":"Lille gatan 545"},"additionalStreetName":{"type":"string","description":"An additional address line in an address that can be used to give further details supplementing the main line.","example":"Po Box 987"},"cityName":{"type":"string","description":"The common name of the city, town or village, where the tax representative address is located.","example":"Göteborg"},"postalZone":{"type":"string","description":"The identifier for an addressable group of properties according to the relevant postal service.","example":"12345"},"countrySubentity":{"type":"string","description":"The subdivision of a country.","example":"Region Vest"},"countryCode":{"type":"string","description":"Alpha 2 countryCode","example":"BE"}},"required":["streetName","cityName","postalZone","countrySubentity","countryCode"]},"KycCompanyDto":{"type":"object","properties":{"name":{"type":"string","example":"Example Company BV"},"address":{"$ref":"#/components/schemas/PostalAddressDto"},"contactEmail":{"type":"string","format":"email"}},"required":["name","address","contactEmail"]},"KycRepresentativeDto":{"type":"object","properties":{"personalInformation":{"$ref":"#/components/schemas/PersonalInformationDto"},"dateOfBirth":{"type":"string","example":"1985-07-12"},"email":{"type":"string","format":"email"},"role":{"type":"string","example":"Director"}},"required":["personalInformation","dateOfBirth","email","role"]},"BelgiumKycDataResponseDto":{"type":"object","properties":{"participantAgreement":{"$ref":"#/components/schemas/ParticipantAgreementDto"},"company":{"$ref":"#/components/schemas/KycCompanyDto"},"representative":{"$ref":"#/components/schemas/KycRepresentativeDto"},"additionalDocuments":{"readOnly":true,"description":"The S3 keys of the documents uploaded for this mandate. Assigned by the platform - supplying them on a request has no effect.","type":"array","items":{"type":"string"}}},"required":["company"]},"FranceKycDataResponseDto":{"type":"object","properties":{"participantAgreement":{"$ref":"#/components/schemas/ParticipantAgreementDto"},"company":{"$ref":"#/components/schemas/KycCompanyDto"},"representative":{"$ref":"#/components/schemas/KycRepresentativeDto"},"additionalDocuments":{"readOnly":true,"description":"The S3 keys of the documents uploaded for this mandate. Assigned by the platform - supplying them on a request has no effect.","type":"array","items":{"type":"string"}}},"required":["company"]},"NetherlandsKycDataResponseDto":{"type":"object","properties":{"participantAgreement":{"$ref":"#/components/schemas/ParticipantAgreementDto"},"company":{"$ref":"#/components/schemas/KycCompanyDto"},"representative":{"$ref":"#/components/schemas/KycRepresentativeDto"},"additionalDocuments":{"readOnly":true,"description":"The S3 keys of the documents uploaded for this mandate. Assigned by the platform - supplying them on a request has no effect.","type":"array","items":{"type":"string"}}},"required":["company"]},"GermanyKycDataResponseDto":{"type":"object","properties":{"participantAgreement":{"$ref":"#/components/schemas/ParticipantAgreementDto"},"company":{"$ref":"#/components/schemas/KycCompanyDto"},"representative":{"$ref":"#/components/schemas/KycRepresentativeDto"},"additionalDocuments":{"readOnly":true,"description":"The S3 keys of the documents uploaded for this mandate. Assigned by the platform - supplying them on a request has no effect.","type":"array","items":{"type":"string"}}},"required":["company"]},"LuxembourgKycDataResponseDto":{"type":"object","properties":{"participantAgreement":{"$ref":"#/components/schemas/ParticipantAgreementDto"},"company":{"$ref":"#/components/schemas/KycCompanyDto"},"representative":{"$ref":"#/components/schemas/KycRepresentativeDto"},"additionalDocuments":{"readOnly":true,"description":"The S3 keys of the documents uploaded for this mandate. Assigned by the platform - supplying them on a request has no effect.","type":"array","items":{"type":"string"}}},"required":["company"]},"BelgiumMandateIdentifierDto":{"type":"object","properties":{"kbo":{"type":"string","description":"KBO number of the Belgian company","example":"0478493179"}},"required":["kbo"]},"FranceMandateIdentifierDto":{"type":"object","properties":{"siren":{"type":"string","description":"SIREN number of the French company","example":"123456789"},"siret":{"type":"string","description":"SIRET number of the French company","example":"12345678900014"}},"required":["siren"]},"NetherlandsMandateIdentifierDto":{"type":"object","properties":{"kvk":{"type":"string","description":"KVK number of the Dutch company","example":"12345678"}},"required":["kvk"]},"GermanyMandateIdentifierDto":{"type":"object","properties":{"geba":{"type":"string","description":"GEBA identifier of the German company","example":"DE123456789"}},"required":["geba"]},"LuxembourgMandateIdentifierDto":{"type":"object","properties":{"mat":{"type":"string","description":"MAT (matricule / numéro d'identification national) of the Luxembourg company","example":"20241234567"}},"required":["mat"]},"ParticipantIdentifierDto":{"type":"object","properties":{"scheme":{"type":"string","example":"iso6523-actorid-upis","description":"The optional scheme for this participant identifier. If none is given, the default scheme value will be used (`iso6523-actorid-upis`)"},"value":{"type":"string","pattern":"^\\d{4}(:[a-zA-Z0-9-._~]{1,130})$","example":"0208:0478493179","description":"The mandatory value for this participant identifier. For identifiers that follow the `iso6523-actorid-upis` scheme, this looks as follows: `{ICD}:{OrganisationId}`.\n**ICD `0225` (French addressing identifier):** the organisation id is one of `<siren>`, `<siren>_<suffix>`, `<siren>_<siret>` or `<siren>_<siret>_<routingCode>` — the SIREN always leads, and a bare SIRET is refused. The mandate's `startDate` must be at least one day in the future, and in production on or after `2026-09-01`."}},"required":["value"]},"PeppolEntityDto":{"type":"object","properties":{"participantIdentifier":{"description":"ParticipantIdentifier for this peppol entity","allOf":[{"$ref":"#/components/schemas/ParticipantIdentifierDto"}]},"sendingCapabilities":{"type":"boolean","description":"Indicates if the mandate will allow sending for this entity."},"receivingCapabilities":{"type":"boolean","description":"Indicates if the mandate will allow receiving for this entity."}},"required":["participantIdentifier"]},"KycDataHistoryDto":{"type":"object","properties":{"kycData":{"oneOf":[{"$ref":"#/components/schemas/BelgiumKycDataResponseDto"},{"$ref":"#/components/schemas/FranceKycDataResponseDto"},{"$ref":"#/components/schemas/NetherlandsKycDataResponseDto"},{"$ref":"#/components/schemas/GermanyKycDataResponseDto"},{"$ref":"#/components/schemas/LuxembourgKycDataResponseDto"}]},"submittedBy":{"type":"string","description":"Who submitted this KYC data: the email of the user forwarded in the `X-Dokapi-UserEmail` header, or the ulid of the authenticated client when the caller forwarded no user.","example":"01KV5D86Y74GT7827M6VXKMSYA"},"submittedAt":{"type":"string","description":"When this KYC data was submitted, in ISO 8601 format. Absent on history entries recorded before this field was introduced.","format":"date-time","example":"2026-08-15T09:12:44.318Z"}},"required":["kycData","submittedBy"]},"MandateDto":{"type":"object","properties":{"ulid":{"type":"string","example":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ"},"status":{"enum":["PENDING_UPLOAD","REQUESTED","REVIEWING","ACTION_REQUIRED","REVIEWED","ACTIVATING","ACTIVE","INACTIVATING","INACTIVE"],"type":"string"},"countryCode":{"enum":["BE","NL","FR","DE","LU"],"type":"string"},"contractType":{"enum":["DOKAPI_CONTRACT_BASED","THIRD_PARTY_CONTRACT_BASED"],"type":"string"},"creationTimestamp":{"type":"string"},"lastModifiedTimestamp":{"type":"string"},"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"statusMessage":{"type":"string"},"activatedAt":{"type":"string"},"peppolEntities":{"type":"array","items":{"$ref":"#/components/schemas/PeppolEntityDto"}},"identifier":{"oneOf":[{"$ref":"#/components/schemas/BelgiumMandateIdentifierDto"},{"$ref":"#/components/schemas/FranceMandateIdentifierDto"},{"$ref":"#/components/schemas/NetherlandsMandateIdentifierDto"},{"$ref":"#/components/schemas/GermanyMandateIdentifierDto"},{"$ref":"#/components/schemas/LuxembourgMandateIdentifierDto"}]},"kycData":{"description":"KYC data for the participant. kycData and its company are always mandatory. The representative and participantAgreement are additionally mandatory when the client's contract type is THIRD_PARTY_CONTRACT_BASED and optional when it is DOKAPI_CONTRACT_BASED.","oneOf":[{"$ref":"#/components/schemas/BelgiumKycDataResponseDto"},{"$ref":"#/components/schemas/FranceKycDataResponseDto"},{"$ref":"#/components/schemas/NetherlandsKycDataResponseDto"},{"$ref":"#/components/schemas/GermanyKycDataResponseDto"},{"$ref":"#/components/schemas/LuxembourgKycDataResponseDto"}]},"kycDataHistory":{"description":"Historical KYC data of mandate, most recent first, with the user that submitted it when known","type":"array","items":{"$ref":"#/components/schemas/KycDataHistoryDto"}}},"required":["ulid","status","countryCode","contractType","creationTimestamp","lastModifiedTimestamp","startDate","identifier","kycData","kycDataHistory"]},"MandatePageDto":{"type":"object","properties":{"items":{"description":"The mandates in the current page","type":"array","items":{"$ref":"#/components/schemas/MandateDto"}},"count":{"type":"number","description":"Number of items in the current page"},"lastEvaluatedKey":{"type":"string","description":"The last pagination key. Pass this in the next call to get the next page."}},"required":["items","count"]},"MandateStatusInformationDto":{"type":"object","properties":{"ulid":{"type":"string","description":"The ulid of the mandate this feedback is about.","example":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ"},"clientUlid":{"type":"string","description":"The ulid of the subscription that owns this mandate.","example":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ"},"status":{"enum":["PENDING_UPLOAD","REQUESTED","REVIEWING","ACTION_REQUIRED","REVIEWED","ACTIVATING","ACTIVE","INACTIVATING","INACTIVE"],"type":"string","description":"The status the mandate transitioned into."},"statusMessage":{"type":"string","description":"Additional information regarding the current status."},"identifier":{"oneOf":[{"$ref":"#/components/schemas/BelgiumMandateIdentifierDto"},{"$ref":"#/components/schemas/FranceMandateIdentifierDto"},{"$ref":"#/components/schemas/NetherlandsMandateIdentifierDto"}]},"peppolEntities":{"type":"array","items":{"$ref":"#/components/schemas/PeppolEntityDto"}}},"required":["ulid","clientUlid","status","statusMessage","identifier"]},"MandateStatusFeedbackDto":{"type":"object","properties":{"event":{"enum":["mandate.requested","mandate.reviewing","mandate.action-required","mandate.reviewed","mandate.activating","mandate.active","mandate.inactivating","mandate.inactive"],"type":"string","description":"The mandate event this feedback relates to. Will be one of the `mandate.*` events."},"ulid":{"type":"string","description":"A unique identifier for this webhook invocation, requests with the same ULID coming in again can be ignored"},"body":{"$ref":"#/components/schemas/MandateStatusInformationDto"}},"required":["event","ulid","body"]},"BelgiumKycDataDto":{"type":"object","properties":{"participantAgreement":{"$ref":"#/components/schemas/ParticipantAgreementDto"},"company":{"$ref":"#/components/schemas/KycCompanyDto"},"representative":{"$ref":"#/components/schemas/KycRepresentativeDto"}},"required":["company"]},"BelgiumParticipantMandateRequestDto":{"type":"object","properties":{"startDate":{"type":"string","format":"date","example":"2026-01-01","description":"The date from which the mandate takes effect. When any entry in `peppolEntities` carries ICD `0225` (French addressing identifier), the date must be at least one day in the future, and in production on or after 2026-09-01 — it becomes the start date of the French directory line, which may not take effect on the day it is registered."},"endDate":{"type":"string","format":"date","example":"2035-01-01","description":"The last day the mandate is in force, inclusive. Must be a calendar date strictly after startDate."},"peppolEntities":{"type":"array","items":{"$ref":"#/components/schemas/PeppolEntityDto"}},"identifier":{"$ref":"#/components/schemas/BelgiumMandateIdentifierDto"},"kycData":{"description":"KYC data for the participant. kycData and its company are always mandatory. The representative and participantAgreement are additionally mandatory when the client's contract type is THIRD_PARTY_CONTRACT_BASED and optional when it is DOKAPI_CONTRACT_BASED.","allOf":[{"$ref":"#/components/schemas/BelgiumKycDataDto"}]}},"required":["startDate","identifier","kycData"]},"AdditionalDocumentUploadDto":{"type":"object","properties":{"key":{"type":"string","description":"The S3 key the uploaded document is stored under. Appears in the mandate's `kycData.additionalDocuments` once the upload has been processed.","example":"01KJAHTSTJNZ1M7F6KW2Y2X4ZQ/01KJB0Y7Q6TN2XKC0F9V5H3M8D/additional-documents/01KJB0Z2W8H4Q1JN6R5T3Y7B9C"},"url":{"type":"string","description":"Presigned URL to `PUT` the document to. Accepts a single document of any content type (PDF, image, ...) and is valid for 50 minutes. The mandate stays in `PENDING_UPLOAD` until the upload lands, and is only requested afterwards.<br/><br/>Only the **first** upload counts. A second `PUT` to this URL still answers `200`, but it is discarded and the mandate keeps the document it was granted on.","format":"url"}},"required":["key","url"]},"RequestMandateResponseDto":{"type":"object","properties":{"message":{"type":"string","example":"The mandate was successfully requested, further communications will be delivered via webhook"},"mandate":{"$ref":"#/components/schemas/MandateDto"},"additionalDocumentUpload":{"description":"Where to upload the KYC proof for this mandate. Only present for a `THIRD_PARTY_CONTRACT_BASED` client, whose mandate is created in `PENDING_UPLOAD` and only requested once the document has been uploaded. Absent for a `DOKAPI_CONTRACT_BASED` client, whose mandate is requested straight away.","allOf":[{"$ref":"#/components/schemas/AdditionalDocumentUploadDto"}]}},"required":["message","mandate"]},"NetherlandsKycDataDto":{"type":"object","properties":{"participantAgreement":{"$ref":"#/components/schemas/ParticipantAgreementDto"},"company":{"$ref":"#/components/schemas/KycCompanyDto"},"representative":{"$ref":"#/components/schemas/KycRepresentativeDto"}},"required":["company"]},"NetherlandsParticipantMandateRequestDto":{"type":"object","properties":{"startDate":{"type":"string","format":"date","example":"2026-01-01","description":"The date from which the mandate takes effect. When any entry in `peppolEntities` carries ICD `0225` (French addressing identifier), the date must be at least one day in the future, and in production on or after 2026-09-01 — it becomes the start date of the French directory line, which may not take effect on the day it is registered."},"endDate":{"type":"string","format":"date","example":"2035-01-01","description":"The last day the mandate is in force, inclusive. Must be a calendar date strictly after startDate."},"peppolEntities":{"type":"array","items":{"$ref":"#/components/schemas/PeppolEntityDto"}},"identifier":{"$ref":"#/components/schemas/NetherlandsMandateIdentifierDto"},"kycData":{"description":"KYC data for the participant. kycData and its company are always mandatory. The representative and participantAgreement are additionally mandatory when the client's contract type is THIRD_PARTY_CONTRACT_BASED and optional when it is DOKAPI_CONTRACT_BASED.","allOf":[{"$ref":"#/components/schemas/NetherlandsKycDataDto"}]}},"required":["startDate","identifier","kycData"]},"FranceKycDataDto":{"type":"object","properties":{"participantAgreement":{"$ref":"#/components/schemas/ParticipantAgreementDto"},"company":{"$ref":"#/components/schemas/KycCompanyDto"},"representative":{"$ref":"#/components/schemas/KycRepresentativeDto"}},"required":["company"]},"FranceParticipantMandateRequestDto":{"type":"object","properties":{"startDate":{"type":"string","format":"date","example":"2026-01-01","description":"The date from which the mandate takes effect. When any entry in `peppolEntities` carries ICD `0225` (French addressing identifier), the date must be at least one day in the future, and in production on or after 2026-09-01 — it becomes the start date of the French directory line, which may not take effect on the day it is registered."},"endDate":{"type":"string","format":"date","example":"2035-01-01","description":"The last day the mandate is in force, inclusive. Must be a calendar date strictly after startDate."},"peppolEntities":{"type":"array","items":{"$ref":"#/components/schemas/PeppolEntityDto"}},"identifier":{"$ref":"#/components/schemas/FranceMandateIdentifierDto"},"kycData":{"description":"KYC data for the participant. kycData and its company are always mandatory. The representative and participantAgreement are additionally mandatory when the client's contract type is THIRD_PARTY_CONTRACT_BASED and optional when it is DOKAPI_CONTRACT_BASED.","allOf":[{"$ref":"#/components/schemas/FranceKycDataDto"}]}},"required":["startDate","identifier","kycData"]},"GermanyKycDataDto":{"type":"object","properties":{"participantAgreement":{"$ref":"#/components/schemas/ParticipantAgreementDto"},"company":{"$ref":"#/components/schemas/KycCompanyDto"},"representative":{"$ref":"#/components/schemas/KycRepresentativeDto"}},"required":["company"]},"GermanyParticipantMandateRequestDto":{"type":"object","properties":{"startDate":{"type":"string","format":"date","example":"2026-01-01","description":"The date from which the mandate takes effect. When any entry in `peppolEntities` carries ICD `0225` (French addressing identifier), the date must be at least one day in the future, and in production on or after 2026-09-01 — it becomes the start date of the French directory line, which may not take effect on the day it is registered."},"endDate":{"type":"string","format":"date","example":"2035-01-01","description":"The last day the mandate is in force, inclusive. Must be a calendar date strictly after startDate."},"peppolEntities":{"type":"array","items":{"$ref":"#/components/schemas/PeppolEntityDto"}},"identifier":{"$ref":"#/components/schemas/GermanyMandateIdentifierDto"},"kycData":{"description":"KYC data for the participant. kycData and its company are always mandatory. The representative and participantAgreement are additionally mandatory when the client's contract type is THIRD_PARTY_CONTRACT_BASED and optional when it is DOKAPI_CONTRACT_BASED.","allOf":[{"$ref":"#/components/schemas/GermanyKycDataDto"}]}},"required":["startDate","identifier","kycData"]},"LuxembourgKycDataDto":{"type":"object","properties":{"participantAgreement":{"$ref":"#/components/schemas/ParticipantAgreementDto"},"company":{"$ref":"#/components/schemas/KycCompanyDto"},"representative":{"$ref":"#/components/schemas/KycRepresentativeDto"}},"required":["company"]},"LuxembourgParticipantMandateRequestDto":{"type":"object","properties":{"startDate":{"type":"string","format":"date","example":"2026-01-01","description":"The date from which the mandate takes effect. When any entry in `peppolEntities` carries ICD `0225` (French addressing identifier), the date must be at least one day in the future, and in production on or after 2026-09-01 — it becomes the start date of the French directory line, which may not take effect on the day it is registered."},"endDate":{"type":"string","format":"date","example":"2035-01-01","description":"The last day the mandate is in force, inclusive. Must be a calendar date strictly after startDate."},"peppolEntities":{"type":"array","items":{"$ref":"#/components/schemas/PeppolEntityDto"}},"identifier":{"$ref":"#/components/schemas/LuxembourgMandateIdentifierDto"},"kycData":{"description":"KYC data for the participant. kycData and its company are always mandatory. The representative and participantAgreement are additionally mandatory when the client's contract type is THIRD_PARTY_CONTRACT_BASED and optional when it is DOKAPI_CONTRACT_BASED.","allOf":[{"$ref":"#/components/schemas/LuxembourgKycDataDto"}]}},"required":["startDate","identifier","kycData"]},"UpdateBelgiumParticipantMandateRequestDto":{"type":"object","properties":{"peppolEntities":{"type":"array","items":{"$ref":"#/components/schemas/PeppolEntityDto"}},"kycData":{"$ref":"#/components/schemas/BelgiumKycDataDto"}},"required":["kycData"]},"UpdateMandateResponseDto":{"type":"object","properties":{"message":{"type":"string","example":"The mandate was successfully updated"},"mandate":{"$ref":"#/components/schemas/MandateDto"}},"required":["message","mandate"]},"UpdateFranceParticipantMandateRequestDto":{"type":"object","properties":{"peppolEntities":{"type":"array","items":{"$ref":"#/components/schemas/PeppolEntityDto"}},"kycData":{"$ref":"#/components/schemas/FranceKycDataDto"}},"required":["kycData"]},"UpdateNetherlandsParticipantMandateRequestDto":{"type":"object","properties":{"peppolEntities":{"type":"array","items":{"$ref":"#/components/schemas/PeppolEntityDto"}},"kycData":{"$ref":"#/components/schemas/NetherlandsKycDataDto"}},"required":["kycData"]},"UpdateGermanyParticipantMandateRequestDto":{"type":"object","properties":{"peppolEntities":{"type":"array","items":{"$ref":"#/components/schemas/PeppolEntityDto"}},"kycData":{"$ref":"#/components/schemas/GermanyKycDataDto"}},"required":["kycData"]},"UpdateLuxembourgParticipantMandateRequestDto":{"type":"object","properties":{"peppolEntities":{"type":"array","items":{"$ref":"#/components/schemas/PeppolEntityDto"}},"kycData":{"$ref":"#/components/schemas/LuxembourgKycDataDto"}},"required":["kycData"]},"InactivateMandateResponseDto":{"type":"object","properties":{"message":{"type":"string","example":"The mandate inactivation was successfully requested, further communications will be delivered via webhook"},"mandate":{"$ref":"#/components/schemas/MandateDto"}},"required":["message","mandate"]},"ClientCancellationFeedbackDto":{"type":"object","properties":{"event":{"type":"string","description":"Will always be `client.cancellation` in this case."},"ulid":{"type":"string","description":"A unique identifier for this webhook invocation, requests with the same ULID coming in again can be ignored"},"body":{"type":"string","description":"A message being set as feedback for client cancellation","example":"Cancellation process completed successfully!"}},"required":["event","ulid","body"]},"ClientCancellationResponseDto":{"type":"object","properties":{"message":{"type":"string","example":"Client cancellation successfully initiated. Further communications will be sent to the client.cancellation webhook."}},"required":["message"]},"WebhookRequestDto":{"type":"object","properties":{"url":{"type":"string","description":"A valid HTTPS Webhook URL.","format":"url","example":"https://webhook-test.com/004818c78eecacef393fee5822991234"},"events":{"description":"A list of event identifiers to be received on this webhook.<br/><br/>","example":["outgoing-peppol-documents.sent","incoming-peppol-documents.received","client.cancellation"],"type":"array","items":{"type":"string"}}},"required":["url","events"]},"WebhookResponseDto":{"type":"object","properties":{"ulid":{"type":"string","example":"01HT00M1TBRPRPN6HT5ARZ1R2F"},"clientUlid":{"type":"string","example":"01HT00M1TBRPRPN6HT5ARZ1R2F"},"creationTimestamp":{"type":"string","example":"2024-03-08T15:34:18.242Z"},"lastModifiedTimestamp":{"type":"string","example":"2024-03-08T15:34:18.242Z"},"url":{"type":"string","format":"url","example":"https://webhook-test.com/004818c78eecacef393fee5822991234"},"events":{"example":["outgoing-peppol-documents.sent","incoming-peppol-documents.received","client.cancellation"],"type":"array","items":{"type":"string"}}},"required":["ulid","clientUlid","creationTimestamp","lastModifiedTimestamp","url","events"]},"CreateWebhookResponseDto":{"type":"object","properties":{"message":{"type":"string","description":"Info about the webhook being created or not","example":"Webhook created successfully"},"webhook":{"description":"Info about the webhook","allOf":[{"$ref":"#/components/schemas/WebhookResponseDto"}]}},"required":["message","webhook"]},"DeleteWebhookResponseDto":{"type":"object","properties":{"message":{"type":"string","description":"Info about the webhook being deleted or not","example":"Webhook deleted successfully"}},"required":["message"]}},"securitySchemes":{"oauth2-cc":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://dev-portal.dokapi.io/api/oauth2/token","scopes":{}}},"description":"This API uses OAuth2 Client Credentials. Client credentials can be retrieved from the subscription details.<br/><br/>The endpoints to which you have access depend on your subscription. If an endpoint does not appear to be available, it might not be included in your current subscription.","x-receive-token-in":"request-body","x-client-id":"","x-client-secret":""}}},"security":[{"oauth2-cc":[]}]}