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.
import Foundation
import ServiceStack

/**
* A synchronous service to create XML content that represents a recapitulative tax declaration for 2020.
*/
// @Api(Description="A synchronous service to create XML content that represents a recapitulative tax declaration for 2020.")
public class CreateZm2020Xml : CreateZm2020XmlBase
{
    /**
    * Inländische Umsatzsteuer-Identifikationsnummer des Meldenden bestehend aus dem Länderkürzel 'DE' gefolgt von exakt 9 Ziffern.
    */
    // @ApiMember(Description="Inländische Umsatzsteuer-Identifikationsnummer des Meldenden bestehend aus dem Länderkürzel 'DE' gefolgt von exakt 9 Ziffern.", IsRequired=true)
    public var knri:String

    /**
    * Angaben zum Unternehmer
    */
    // @ApiMember(Description="Angaben zum Unternehmer", IsRequired=true)
    public var anschrift:Anschrift

    /**
    * Allgemeine Daten
    */
    // @ApiMember(Description="Allgemeine Daten", IsRequired=true)
    public var zmZeilen:ZmZeilen

    /**
    * The details of the provider that submits the tax data.
    */
    // @ApiMember(Description="The details of the provider that submits the tax data.", IsRequired=true)
    public var datenLieferant:String

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case knri
        case anschrift
        case zmZeilen
        case datenLieferant
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        knri = try container.decodeIfPresent(String.self, forKey: .knri)
        anschrift = try container.decodeIfPresent(Anschrift.self, forKey: .anschrift)
        zmZeilen = try container.decodeIfPresent(ZmZeilen.self, forKey: .zmZeilen)
        datenLieferant = try container.decodeIfPresent(String.self, forKey: .datenLieferant)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if knri != nil { try container.encode(knri, forKey: .knri) }
        if anschrift != nil { try container.encode(anschrift, forKey: .anschrift) }
        if zmZeilen != nil { try container.encode(zmZeilen, forKey: .zmZeilen) }
        if datenLieferant != nil { try container.encode(datenLieferant, forKey: .datenLieferant) }
    }
}

/**
* Create XML content that represents a recapitulative tax declaration for 2020.
*/
// @Api(Description="Create XML content that represents a recapitulative tax declaration for 2020.")
public class CreateZm2020XmlBase : IPost, Codable
{
    /**
    * Inländische Umsatzsteuer-Identifikationsnummer des Meldenden bestehend aus dem Länderkürzel 'DE' gefolgt von exakt 9 Ziffern.
    */
    // @ApiMember(Description="Inländische Umsatzsteuer-Identifikationsnummer des Meldenden bestehend aus dem Länderkürzel 'DE' gefolgt von exakt 9 Ziffern.", IsRequired=true)
    public var knri:String

    /**
    * Angaben zum Unternehmer
    */
    // @ApiMember(Description="Angaben zum Unternehmer", IsRequired=true)
    public var anschrift:Anschrift

    /**
    * Allgemeine Daten
    */
    // @ApiMember(Description="Allgemeine Daten", IsRequired=true)
    public var zmZeilen:ZmZeilen

    /**
    * The details of the provider that submits the tax data.
    */
    // @ApiMember(Description="The details of the provider that submits the tax data.", IsRequired=true)
    public var datenLieferant:String

    required public init(){}
}

/**
* Angaben zum Unternehmen
*/
// @Api(Description="Angaben zum Unternehmen")
public class Anschrift : Codable
{
    /**
    * Der Name des Unternehmers.
    */
    // @ApiMember(Description="Der Name des Unternehmers.", IsRequired=true, Name="Name")
    public var name:String

    /**
    * Der Adresszusatz des Unternehmers.
    */
    // @ApiMember(Description="Der Adresszusatz des Unternehmers.", Name="Adresszusatz")
    public var adresszusatz:String

    /**
    * Der Straßenname des Unternehmers.
    */
    // @ApiMember(Description="Der Straßenname des Unternehmers.", IsRequired=true, Name="Strasse")
    public var strasse:String

    /**
    * Die Hausnummer des Unternehmers.
    */
    // @ApiMember(Description="Die Hausnummer des Unternehmers.", Name="Hausnr")
    public var hausnr:String

    /**
    * Der Hausnummerzusatz des Unternehmers.
    */
    // @ApiMember(Description="Der Hausnummerzusatz des Unternehmers.", Name="Hausnrzusatz")
    public var hausnrzusatz:String

    /**
    * Der Ort des Unternehmers.
    */
    // @ApiMember(Description="Der Ort des Unternehmers.", IsRequired=true, Name="Ort")
    public var ort:String

    /**
    * Die Postleitzahl des Unternehmers.
    */
    // @ApiMember(Description="Die Postleitzahl des Unternehmers.", Name="PLZ")
    public var plz:String

    /**
    * Übermittlung des ISO-3166-Alpha-2-Codes des Staates von Unternehmer.
    */
    // @ApiMember(Description="Übermittlung des ISO-3166-Alpha-2-Codes des Staates von Unternehmer.", IsRequired=true, Name="Staat")
    public var staat:String

    /**
    * Die Telefonummer des Unternehmers.
    */
    // @ApiMember(Description="Die Telefonummer des Unternehmers.", Name="Telefon")
    public var telefon:String

    required public init(){}
}

/**
* Allgemeine Daten
*/
// @Api(Description="Allgemeine Daten")
public class ZmZeilen : Codable
{
    /**
    * Währung
    */
    // @ApiMember(Description="Währung", IsRequired=true, Name="Waehrung")
    public var waehrung:Waehrung

    /**
    * Berichtigte Meldung
    */
    // @ApiMember(Description="Berichtigte Meldung", IsRequired=true, Name="Meldeart")
    public var meldeart:Meldeart

    /**
    * 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.
    */
    // @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")
    public var anzeige:Bool

    /**
    * Widerruf meiner Anzeige nach § 18a Absatz 1 UStG
    */
    // @ApiMember(Description="Widerruf meiner Anzeige nach § 18a Absatz 1 UStG", IsRequired=true, Name="Widerruf")
    public var widerruf:Bool

    /**
    * Meldungszeitraum
    */
    // @ApiMember(Description="Meldungszeitraum", IsRequired=true, Name="Mzr")
    public var mzr:Mzr

    /**
    * Meldungen der Warenlieferungen
    */
    // @ApiMember(Description="Meldungen der Warenlieferungen", IsRequired=true, Name="Zeilen")
    public var zeilen:[Zeile] = []

    required public init(){}
}

/**
* Die Art der Währung
*/
public enum Waehrung : String, Codable
{
    case UNGUELTIG
    case EUR
}

/**
* Art der Meldung
*/
public enum Meldeart : Int, Codable
{
    case Nein = 10
    case Ja = 11
}

/**
* Meldungszeitraum
*/
// @Api(Description="Meldungszeitraum")
public class Mzr : Codable
{
    /**
    * Quartal
    */
    // @ApiMember(Description="Quartal", IsRequired=true, Name="Quart")
    public var quart:Quart

    /**
    * Die 4-stellige Jahreszahl, welche die Veranlagungszeitraum darstellt.
    */
    // @ApiMember(Description="Die 4-stellige Jahreszahl, welche die Veranlagungszeitraum darstellt.", IsRequired=true, Name="Jahr")
    public var jahr:Int

    required public init(){}
}

/**
* Die Art des Quartals
*/
public enum Quart : Int, Codable
{
    case Q1 = 1
    case Q2 = 2
    case Q3 = 3
    case Q4 = 4
    case JM = 5
    case M11 = 11
    case M12 = 12
    case M13 = 13
    case M14 = 14
    case M21 = 21
    case M22 = 22
    case M23 = 23
    case M24 = 24
    case M25 = 25
    case M26 = 26
    case M27 = 27
    case M28 = 28
    case M29 = 29
    case M30 = 30
    case M31 = 31
    case M32 = 32
}

/**
* Meldung der Warenlieferungen
*/
// @Api(Description="Meldung der Warenlieferungen")
public class Zeile : Codable
{
    /**
    * Umsatzart
    */
    // @ApiMember(Description="Umsatzart", IsRequired=true, Name="Umsatzart")
    public var umsatzart:Umsatzart

    /**
    * Umsatzsteuer-Identifikationsnummer des Erwerbers / Unternehmers in einem anderen Mitgliedstaat
    */
    // @ApiMember(Description="Umsatzsteuer-Identifikationsnummer des Erwerbers / Unternehmers in einem anderen Mitgliedstaat", IsRequired=true, Name="Knre")
    public var knre:String

    /**
    * Summe (Euro)
    */
    // @ApiMember(Description="Summe (Euro)", IsRequired=true, Name="Betrag")
    public var betrag:GeldBetragOhneCent11EN

    required public init(){}
}

/**
* Die Art des Umsatzes.
*/
public enum Umsatzart : String, Codable
{
    case D
    case L
    case S
}

/**
* 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.
*/
// @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.")
public class GeldBetragOhneCent11EN : GrossGeldBetragOhneCent
{
    /**
    * The intrinsic currency value.
    */
    // @ApiMember(Description="The intrinsic currency value.")
    public var wert:Int

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case wert
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        wert = try container.decodeIfPresent(Int.self, forKey: .wert)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if wert != nil { try container.encode(wert, forKey: .wert) }
    }
}

/**
* Specifies an amount of money without cents with limits and a specialized string representation
*/
// @Api(Description="Specifies an amount of money without cents with limits and a specialized string representation")
public class GrossGeldBetragOhneCent : Codable
{
    /**
    * The intrinsic currency value.
    */
    // @ApiMember(Description="The intrinsic currency value.")
    public var wert:Int

    required public init(){}
}

/**
* Represents the response from a service that generates XML content.
*/
// @Api(Description="Represents the response from a service that generates XML content.")
public class XmlResponse : Codable
{
    /**
    * The XML-based content of the response.
    */
    // @ApiMember(Description="The XML-based content of the response.")
    public var content:String

    /**
    * Metadata that contains structured error information on the XML response.
    */
    // @ApiMember(Description="Metadata that contains structured error information on the XML response.")
    public var responseStatus:ResponseStatus

    required public init(){}
}


Swift CreateZm2020Xml DTOs

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

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

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: application/json
Content-Type: application/json
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: application/json
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"}}}