Tax Filing Service

<back to all web services

CreateZm2020Xml

SyncUmsatzsteuerZusammenfassende Meldung

A synchronous service to create XML content that represents a recapitulative tax declaration for 2020.

Requires Authentication
The following routes are available for this service:
POST/CreateZm2020XmlA synchronous service to create xml content that represents a recapitulative tax declaration for 2020.
namespace PwC.xEric.Core.Domain.Concretes.Models

open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    ///<summary>
    ///Represents the response from a service that generates XML content.
    ///</summary>
    [<Api(Description="Represents the response from a service that generates XML content.")>]
    [<AllowNullLiteral>]
    type XmlResponse() = 
        ///<summary>
        ///The XML-based content of the response.
        ///</summary>
        [<ApiMember(Description="The XML-based content of the response.")>]
        member val Content:String = null with get,set

        ///<summary>
        ///Metadata that contains structured error information on the XML response.
        ///</summary>
        [<ApiMember(Description="Metadata that contains structured error information on the XML response.")>]
        member val ResponseStatus:ResponseStatus = null with get,set

    ///<summary>
    ///Angaben zum Unternehmen
    ///</summary>
    [<Api(Description="Angaben zum Unternehmen")>]
    [<AllowNullLiteral>]
    type Anschrift() = 
        ///<summary>
        ///Der Name des Unternehmers.
        ///</summary>
        [<ApiMember(Description="Der Name des Unternehmers.", IsRequired=true, Name="Name")>]
        member val Name:String = null with get,set

        ///<summary>
        ///Der Adresszusatz des Unternehmers.
        ///</summary>
        [<ApiMember(Description="Der Adresszusatz des Unternehmers.", Name="Adresszusatz")>]
        member val Adresszusatz:String = null with get,set

        ///<summary>
        ///Der Straßenname des Unternehmers.
        ///</summary>
        [<ApiMember(Description="Der Straßenname des Unternehmers.", IsRequired=true, Name="Strasse")>]
        member val Strasse:String = null with get,set

        ///<summary>
        ///Die Hausnummer des Unternehmers.
        ///</summary>
        [<ApiMember(Description="Die Hausnummer des Unternehmers.", Name="Hausnr")>]
        member val Hausnr:String = null with get,set

        ///<summary>
        ///Der Hausnummerzusatz des Unternehmers.
        ///</summary>
        [<ApiMember(Description="Der Hausnummerzusatz des Unternehmers.", Name="Hausnrzusatz")>]
        member val Hausnrzusatz:String = null with get,set

        ///<summary>
        ///Der Ort des Unternehmers.
        ///</summary>
        [<ApiMember(Description="Der Ort des Unternehmers.", IsRequired=true, Name="Ort")>]
        member val Ort:String = null with get,set

        ///<summary>
        ///Die Postleitzahl des Unternehmers.
        ///</summary>
        [<ApiMember(Description="Die Postleitzahl des Unternehmers.", Name="PLZ")>]
        member val PLZ:String = null with get,set

        ///<summary>
        ///Übermittlung des ISO-3166-Alpha-2-Codes des Staates von Unternehmer.
        ///</summary>
        [<ApiMember(Description="Übermittlung des ISO-3166-Alpha-2-Codes des Staates von Unternehmer.", IsRequired=true, Name="Staat")>]
        member val Staat:String = null with get,set

        ///<summary>
        ///Die Telefonummer des Unternehmers.
        ///</summary>
        [<ApiMember(Description="Die Telefonummer des Unternehmers.", Name="Telefon")>]
        member val Telefon:String = null with get,set

    ///<summary>
    ///Die Art der Währung
    ///</summary>
    type Waehrung =
        | UNGUELTIG = 0
        | EUR = 1

    ///<summary>
    ///Art der Meldung
    ///</summary>
    type Meldeart =
        | Nein = 10
        | Ja = 11

    ///<summary>
    ///Die Art des Quartals
    ///</summary>
    type Quart =
        | Q1 = 1
        | Q2 = 2
        | Q3 = 3
        | Q4 = 4
        | JM = 5
        | M11 = 11
        | M12 = 12
        | M13 = 13
        | M14 = 14
        | M21 = 21
        | M22 = 22
        | M23 = 23
        | M24 = 24
        | M25 = 25
        | M26 = 26
        | M27 = 27
        | M28 = 28
        | M29 = 29
        | M30 = 30
        | M31 = 31
        | M32 = 32

    ///<summary>
    ///Meldungszeitraum
    ///</summary>
    [<Api(Description="Meldungszeitraum")>]
    [<AllowNullLiteral>]
    type Mzr() = 
        ///<summary>
        ///Quartal
        ///</summary>
        [<ApiMember(Description="Quartal", IsRequired=true, Name="Quart")>]
        member val Quart:Quart = new Quart() with get,set

        ///<summary>
        ///Die 4-stellige Jahreszahl, welche die Veranlagungszeitraum darstellt.
        ///</summary>
        [<ApiMember(Description="Die 4-stellige Jahreszahl, welche die Veranlagungszeitraum darstellt.", IsRequired=true, Name="Jahr")>]
        member val Jahr:Int32 = new Int32() with get,set

    ///<summary>
    ///Die Art des Umsatzes.
    ///</summary>
    type Umsatzart =
        | D = 0
        | L = 1
        | S = 2

    ///<summary>
    ///Specifies an amount of money without cents with limits and a specialized string representation
    ///</summary>
    [<Api(Description="Specifies an amount of money without cents with limits and a specialized string representation")>]
    [<AllowNullLiteral>]
    type GrossGeldBetragOhneCent() = 
        ///<summary>
        ///The intrinsic currency value.
        ///</summary>
        [<ApiMember(Description="The intrinsic currency value.")>]
        member val Wert:Int64 = new Int64() with get,set

    ///<summary>
    ///Represents an amount of money without cents whose value has a maximum length of 11 digits. That is, 1 to 11 digits. Minus sign allowed.
    ///</summary>
    [<Api(Description="Represents an amount of money without cents whose value has a maximum length of 11 digits. That is, 1 to 11 digits. Minus sign allowed.")>]
    [<AllowNullLiteral>]
    type GeldBetragOhneCent11EN() = 
        inherit GrossGeldBetragOhneCent()
        ///<summary>
        ///The intrinsic currency value.
        ///</summary>
        [<ApiMember(Description="The intrinsic currency value.")>]
        member val Wert:Int64 = new Int64() with get,set

    ///<summary>
    ///Meldung der Warenlieferungen
    ///</summary>
    [<Api(Description="Meldung der Warenlieferungen")>]
    [<AllowNullLiteral>]
    type Zeile() = 
        ///<summary>
        ///Umsatzart
        ///</summary>
        [<ApiMember(Description="Umsatzart", IsRequired=true, Name="Umsatzart")>]
        member val Umsatzart:Umsatzart = new Umsatzart() with get,set

        ///<summary>
        ///Umsatzsteuer-Identifikationsnummer des Erwerbers / Unternehmers in einem anderen Mitgliedstaat
        ///</summary>
        [<ApiMember(Description="Umsatzsteuer-Identifikationsnummer des Erwerbers / Unternehmers in einem anderen Mitgliedstaat", IsRequired=true, Name="Knre")>]
        member val Knre:String = null with get,set

        ///<summary>
        ///Summe (Euro)
        ///</summary>
        [<ApiMember(Description="Summe (Euro)", IsRequired=true, Name="Betrag")>]
        member val Betrag:GeldBetragOhneCent11EN = null with get,set

    ///<summary>
    ///Allgemeine Daten
    ///</summary>
    [<Api(Description="Allgemeine Daten")>]
    [<AllowNullLiteral>]
    type ZmZeilen() = 
        ///<summary>
        ///Währung
        ///</summary>
        [<ApiMember(Description="Währung", IsRequired=true, Name="Waehrung")>]
        member val Waehrung:Waehrung = new Waehrung() with get,set

        ///<summary>
        ///Berichtigte Meldung
        ///</summary>
        [<ApiMember(Description="Berichtigte Meldung", IsRequired=true, Name="Meldeart")>]
        member val Meldeart:Meldeart = new Meldeart() with get,set

        ///<summary>
        ///Die in § 18a Absatz 1 Satz 2 UStG enthaltene Regelung nehme ich nicht in Anspruch.  Ich gebe die Zusammenfassende Meldung künftig monatlich ab. Diese Anzeige bindet mich bis zum Zeitpunkt des Widerrufs, mindestens aber für die Dauer von 12 Kalendermonaten.
        ///</summary>
        [<ApiMember(Description="Die in § 18a Absatz 1 Satz 2 UStG enthaltene Regelung nehme ich nicht in Anspruch.  Ich gebe die Zusammenfassende Meldung künftig monatlich ab. Diese Anzeige bindet mich bis zum Zeitpunkt des Widerrufs, mindestens aber für die Dauer von 12 Kalendermonaten.", IsRequired=true, Name="Meldeart")>]
        member val Anzeige:Boolean = new Boolean() with get,set

        ///<summary>
        ///Widerruf meiner Anzeige nach § 18a Absatz 1 UStG
        ///</summary>
        [<ApiMember(Description="Widerruf meiner Anzeige nach § 18a Absatz 1 UStG", IsRequired=true, Name="Widerruf")>]
        member val Widerruf:Boolean = new Boolean() with get,set

        ///<summary>
        ///Meldungszeitraum
        ///</summary>
        [<ApiMember(Description="Meldungszeitraum", IsRequired=true, Name="Mzr")>]
        member val Mzr:Mzr = null with get,set

        ///<summary>
        ///Meldungen der Warenlieferungen
        ///</summary>
        [<ApiMember(Description="Meldungen der Warenlieferungen", IsRequired=true, Name="Zeilen")>]
        member val Zeilen:ResizeArray<Zeile> = new ResizeArray<Zeile>() with get,set

    ///<summary>
    ///Create XML content that represents a recapitulative tax declaration for 2020.
    ///</summary>
    [<Api(Description="Create XML content that represents a recapitulative tax declaration for 2020.")>]
    [<AllowNullLiteral>]
    type CreateZm2020XmlBase() = 
        interface IPost
        ///<summary>
        ///Inländische Umsatzsteuer-Identifikationsnummer des Meldenden bestehend aus dem Länderkürzel 'DE' gefolgt von exakt 9 Ziffern.
        ///</summary>
        [<ApiMember(Description="Inländische Umsatzsteuer-Identifikationsnummer des Meldenden bestehend aus dem Länderkürzel 'DE' gefolgt von exakt 9 Ziffern.", IsRequired=true)>]
        member val Knri:String = null with get,set

        ///<summary>
        ///Angaben zum Unternehmer
        ///</summary>
        [<ApiMember(Description="Angaben zum Unternehmer", IsRequired=true)>]
        member val Anschrift:Anschrift = null with get,set

        ///<summary>
        ///Allgemeine Daten
        ///</summary>
        [<ApiMember(Description="Allgemeine Daten", IsRequired=true)>]
        member val ZmZeilen:ZmZeilen = null with get,set

        ///<summary>
        ///The details of the provider that submits the tax data.
        ///</summary>
        [<ApiMember(Description="The details of the provider that submits the tax data.", IsRequired=true)>]
        member val DatenLieferant:String = null with get,set

    ///<summary>
    ///A synchronous service to create XML content that represents a recapitulative tax declaration for 2020.
    ///</summary>
    [<Api(Description="A synchronous service to create XML content that represents a recapitulative tax declaration for 2020.")>]
    [<AllowNullLiteral>]
    type CreateZm2020Xml() = 
        inherit CreateZm2020XmlBase()
        ///<summary>
        ///Inländische Umsatzsteuer-Identifikationsnummer des Meldenden bestehend aus dem Länderkürzel 'DE' gefolgt von exakt 9 Ziffern.
        ///</summary>
        [<ApiMember(Description="Inländische Umsatzsteuer-Identifikationsnummer des Meldenden bestehend aus dem Länderkürzel 'DE' gefolgt von exakt 9 Ziffern.", IsRequired=true)>]
        member val Knri:String = null with get,set

        ///<summary>
        ///Angaben zum Unternehmer
        ///</summary>
        [<ApiMember(Description="Angaben zum Unternehmer", IsRequired=true)>]
        member val Anschrift:Anschrift = null with get,set

        ///<summary>
        ///Allgemeine Daten
        ///</summary>
        [<ApiMember(Description="Allgemeine Daten", IsRequired=true)>]
        member val ZmZeilen:ZmZeilen = null with get,set

        ///<summary>
        ///The details of the provider that submits the tax data.
        ///</summary>
        [<ApiMember(Description="The details of the provider that submits the tax data.", IsRequired=true)>]
        member val DatenLieferant:String = null with get,set

F# CreateZm2020Xml DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /CreateZm2020Xml HTTP/1.1 
Host: taxfiling.staging.pwc.de 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	knri: String,
	anschrift: 
	{
		name: String,
		adresszusatz: String,
		strasse: String,
		hausnr: String,
		hausnrzusatz: String,
		ort: String,
		plz: String,
		staat: String,
		telefon: String
	},
	zmZeilen: 
	{
		waehrung: UNGUELTIG,
		meldeart: Nein,
		anzeige: False,
		widerruf: False,
		mzr: 
		{
			quart: Q1,
			jahr: 0
		},
		zeilen: 
		[
			{
				umsatzart: D,
				knre: String,
				betrag: 
				{
					wert: 0
				}
			}
		]
	},
	datenLieferant: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	content: String,
	responseStatus: 
	{
		errorCode: String,
		message: String,
		stackTrace: String,
		errors: 
		[
			{
				errorCode: String,
				fieldName: String,
				message: String,
				meta: 
				{
					String: String
				}
			}
		],
		meta: 
		{
			String: String
		}
	}
}