/// <summary>
        /// PrepareRequest
        /// </summary>
        /// <exception cref="SveaWebPayValidationException"></exception>
        /// <returns>CreateOrderEuRequest</returns>
        public CreateOrderEuRequest PrepareRequest()
        {
            var errors = ValidateOrder();

            if (errors.Length > 0)
            {
                throw new SveaWebPayValidationException(errors);
            }

            var sveaOrder = new CreateOrderEuRequest {
                Auth = GetPasswordBasedAuthorization()
            };

            var             formatter          = new WebServiceRowFormatter <CreateOrderBuilder>(CrOrderBuilder);
            List <OrderRow> formattedOrderRows = formatter.FormatRows();

            // make order rows and put in CreateOrderInformation
            OrderInfo = new CreateOrderInformation
            {
                CustomerIdentity         = CrOrderBuilder.GetSoapPurifiedCustomer(),
                ClientOrderNumber        = CrOrderBuilder.GetClientOrderNumber(),
                CreatePaymentPlanDetails = CrOrderBuilder.GetCampaignCode() != null
                                                   ? new CreatePaymentPlanDetails
                {
                    CampaignCode = CrOrderBuilder.GetCampaignCode(),
                    SendAutomaticGiroPaymentForm =
                        CrOrderBuilder.GetSendAutomaticGiroPaymentForm()
                }
                                                   : null,
                OrderDate         = CrOrderBuilder.GetOrderDate(),
                CustomerReference = CrOrderBuilder.GetCustomerReference(),
                OrderRows         = formattedOrderRows.ToArray(),
                PeppolId          = CrOrderBuilder.GetPeppolId()
            };

            sveaOrder.CreateOrderInformation = SetOrderType(OrderInfo);

            return(sveaOrder);
        }