         case site
         case marketplace
         case additionalInfo = "additional_info"
+        case branchId = "branch_id"
+        case processingMode = "processing_mode"
     }
 
     required public convenience init(from decoder: Decoder) throws {
         let container = try decoder.container(keyedBy: PXCheckoutPreferenceKeys.self)
         let id: String = try container.decode(String.self, forKey: .id)
+        let branchId: String? = try container.decodeIfPresent(String.self, forKey: .branchId)
+        let processingMode: String = try container.decodeIfPresent(String.self, forKey: .processingMode) ?? "aggregator"
         let items: [PXItem] = try container.decodeIfPresent([PXItem].self, forKey: .items) ?? []
         let paymentPreference: PXPaymentPreference? = try container.decodeIfPresent(PXPaymentPreference.self, forKey: .paymentPreference)
         let payer: PXPayer = try container.decode(PXPayer.self, forKey: .payer)

    open var marketplace: String? = "NONE"

    /**
     Additional info - json string.
     */
    open var additionalInfo: String? {

        self.payer = PXPayer(email: payerEmail)
    }

    internal init(id: String, items: [PXItem], payer: PXPayer, paymentPreference: PXPaymentPreference?, siteId: String, expirationDateTo: Date?, expirationDateFrom: Date?, site: PXSite?, differentialPricing: PXDifferentialPricing?, marketplace: String?, branchId: String?, processingMode: String? = "aggregator") {
        self.id = id
        self.items = items
        self.payer = payer
