diff --git a/ShipEngine.Tests/HttpResponseMocks/CreateWarehouse200Response.json b/ShipEngine.Tests/HttpResponseMocks/CreateWarehouse200Response.json
new file mode 100644
index 00000000..d2bd4c80
--- /dev/null
+++ b/ShipEngine.Tests/HttpResponseMocks/CreateWarehouse200Response.json
@@ -0,0 +1,27 @@
+{
+  "name": "Example Corp. East Warehouse",
+  "origin_address": {
+    "company_name": "Example Corp.",
+    "name": "John Doe",
+    "phone": "111-111-1111",
+    "address_line1": "4009 Marathon Blvd",
+    "address_line2": "Suite 300",
+    "city_locality": "Austin",
+    "state_province": "TX",
+    "postal_code": "78756",
+    "country_code": "US",
+    "address_residential_indicator": "no"
+  },
+  "return_address": {
+    "company_name": "Example Corp.",
+    "name": "John Doe",
+    "phone": "111-111-1111",
+    "address_line1": "4009 Marathon Blvd",
+    "address_line2": "Suite 300",
+    "city_locality": "Austin",
+    "state_province": "TX",
+    "postal_code": "78756",
+    "country_code": "US",
+    "address_residential_indicator": "no"
+  }
+}
\ No newline at end of file
diff --git a/ShipEngine.Tests/ShipEngine.Tests.csproj b/ShipEngine.Tests/ShipEngine.Tests.csproj
index 64e2bcfd..cdca9e4f 100644
--- a/ShipEngine.Tests/ShipEngine.Tests.csproj
+++ b/ShipEngine.Tests/ShipEngine.Tests.csproj
@@ -25,6 +25,6 @@
     <ProjectReference Include="..\ShipEngine\ShipEngine.csproj" />
   </ItemGroup>
 
-  <ProjectExtensions><VisualStudio><UserProperties httpresponsemocks_4createimplicitmanifest200response_1json__JsonSchema="{" /></VisualStudio></ProjectExtensions>
+  <ProjectExtensions><VisualStudio><UserProperties /></VisualStudio></ProjectExtensions>
 
 </Project>
diff --git a/ShipEngine.Tests/ShipEngineMethodTests/CreateWarehouseTest.cs b/ShipEngine.Tests/ShipEngineMethodTests/CreateWarehouseTest.cs
new file mode 100644
index 00000000..e12e9e24
--- /dev/null
+++ b/ShipEngine.Tests/ShipEngineMethodTests/CreateWarehouseTest.cs
@@ -0,0 +1,87 @@
+using Moq;
+using Newtonsoft.Json;
+using ShipEngineSDK;
+using ShipEngineSDK.Common.Enums;
+using ShipEngineSDK.CreateWarehouse;
+using System;
+using System.IO;
+using System.Net.Http;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace ShipEngineTest
+{
+    public class CreateWarehouseTest
+    {
+
+        public TestUtils TestUtils;
+
+        public Params Params;
+
+        public CreateWarehouseTest()
+        {
+
+            Params = new Params()
+            {
+                IsDefault = true,
+                Name = "Warehouse 1",
+                OriginAddress = new ShipEngineSDK.Common.Address()
+                {
+                    Name = "John Doe",
+                    AddressLine1 = "4009 Marathon Blvd",
+                    CityLocality = "Austin",
+                    StateProvince = "TX",
+                    PostalCode = "78756",
+                    CountryCode = Country.US,
+                    Phone = "512-555-5555"
+                },
+                ReturnAddress = new ShipEngineSDK.Common.Address()
+                {
+                    Name = "John Doe",
+                    AddressLine1 = "4009 Marathon Blvd",
+                    CityLocality = "Austin",
+                    StateProvince = "TX",
+                    PostalCode = "78756",
+                    CountryCode = Country.US,
+                    Phone = "512-555-5555"
+                },
+            };
+
+            TestUtils = new TestUtils();
+        }
+
+        [Fact]
+        public async void ValidCreateWarehouse()
+        {
+            var config = new Config("TEST_bTYAskEX6tD7vv6u/cZ/M4LaUSWBJ219+8S1jgFcnkk");
+            var mockShipEngineFixture = new MockShipEngineFixture(config);
+
+            string json = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../HttpResponseMocks/CreateWarehouse200Response.json"));
+
+            mockShipEngineFixture.StubRequest(HttpMethod.Post, "/v1/warehouses", System.Net.HttpStatusCode.OK, json);
+
+            var result = await mockShipEngineFixture.ShipEngine.CreateWarehouse(Params, config);
+
+            Assert.Equal("se-277331", result.WarehouseId);
+            Assert.Equal("Example Corp. East Warehouse", result.Name);
+            Assert.Equal("2021-08-27T16:29:56.8779097Z", result.CreatedAt);
+        }
+
+        [Fact]
+        public async void InvalidRetriesInMethodCall()
+        {
+            var apiKeyString = "TEST_bTYAskEX6tD7vv6u/cZ/M4LaUSWBJ219+8S1jgFcnkk";
+
+            var config = new Config(apiKey: apiKeyString);
+            var mockHandler = new Mock<ShipEngine>(config);
+            var shipEngine = mockHandler.Object;
+
+            var ex = await Assert.ThrowsAsync<ShipEngineException>(async () => await shipEngine.CreateLabelFromRate(Params, methodConfig: new Config(apiKey: "12345", retries: -1)));
+            Assert.Equal(ErrorSource.Shipengine, ex.ErrorSource);
+            Assert.Equal(ErrorType.Validation, ex.ErrorType);
+            Assert.Equal(ErrorCode.InvalidFieldValue, ex.ErrorCode);
+            Assert.Equal("Retries must be greater than zero.", ex.Message);
+            Assert.Null(ex.RequestId);
+        }
+    }
+}
\ No newline at end of file
diff --git a/ShipEngine/Models/Dto/CreateWarehouse/Params.cs b/ShipEngine/Models/Dto/CreateWarehouse/Params.cs
new file mode 100644
index 00000000..11a79185
--- /dev/null
+++ b/ShipEngine/Models/Dto/CreateWarehouse/Params.cs
@@ -0,0 +1,16 @@
+namespace ShipEngineSDK.CreateWarehouse
+{
+    using ShipEngineSDK.Common;
+    using System;
+    using System.Collections.Generic;
+    using System.Text;
+
+    public class Params
+    {
+        public bool IsDefault { get; set; }
+        public string Name { get; set; }
+        public Address OriginAddress { get; set; }
+        public Address ReturnAddress { get; set; }
+        public string WarehouseId { get; set; }
+    }
+}
diff --git a/ShipEngine/Models/Dto/CreateWarehouse/Result.cs b/ShipEngine/Models/Dto/CreateWarehouse/Result.cs
new file mode 100644
index 00000000..803999d9
--- /dev/null
+++ b/ShipEngine/Models/Dto/CreateWarehouse/Result.cs
@@ -0,0 +1,12 @@
+namespace ShipEngineSDK.ListWarehouse
+{
+    using ShipEngineSDK.Warehouse;
+    using System;
+    using System.Collections.Generic;
+    using System.Text;
+
+    public class Result
+    {
+        public Warehouse.Result[] Warehouses { get; set; }
+    }
+}
diff --git a/ShipEngine/Models/Dto/ImportOrders/Params.cs b/ShipEngine/Models/Dto/ImportOrders/Params.cs
new file mode 100644
index 00000000..1457384e
--- /dev/null
+++ b/ShipEngine/Models/Dto/ImportOrders/Params.cs
@@ -0,0 +1,24 @@
+namespace ShipEngineSDK.ImportOrders
+{
+    using ShipEngineSDK.Common;
+    using System;
+    using System.Collections.Generic;
+    using System.Text;
+
+    public class Params
+    {
+        public string OrderSourceId { get; set; }
+        public string OrderSourceNickname { get; set; }
+        public string OrderSourceCode { get; set; }
+        public string OrderSourceFriendlyName { get; set; }
+        public bool Active { get; set; }
+        public RefreshInfo RefreshInfo { get; set; }
+    }
+
+    public class RefreshInfo
+    {
+        public string Status { get; set; }
+        public string LastRefreshAttempt { get; set; }
+        public string RefreshDate { get; set; }
+    }
+}
diff --git a/ShipEngine/Models/Dto/ListManifest/Result.cs b/ShipEngine/Models/Dto/ListManifest/Result.cs
new file mode 100644
index 00000000..2a61cf2b
--- /dev/null
+++ b/ShipEngine/Models/Dto/ListManifest/Result.cs
@@ -0,0 +1,18 @@
+#nullable disable
+
+using ShipEngineSDK.Manifests;
+using System.Collections.Generic;
+
+namespace ShipEngineSDK.ListManifest
+{
+    /// <summary>
+    /// List Carrier Results
+    /// </summary>
+    public class Result
+    {
+        /// <summary>
+        /// List of carriers associated with the account
+        /// </summary>
+        public List<Manifest> Manifests { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/ShipEngine/Models/Dto/ListSalesOrder/Result.cs b/ShipEngine/Models/Dto/ListSalesOrder/Result.cs
new file mode 100644
index 00000000..62ac57cd
--- /dev/null
+++ b/ShipEngine/Models/Dto/ListSalesOrder/Result.cs
@@ -0,0 +1,113 @@
+#nullable disable
+
+using ShipEngineSDK.Common;
+using ShipEngineSDK.Common.Enums;
+using System;
+using System.Collections.Generic;
+
+namespace ShipEngineSDK.ListSalesOrder
+{
+    /// <summary>
+    /// List Carrier Results
+    /// </summary>
+    public class Result
+    {
+        public List<SalesOrder> SalesOrders { get; set; }
+        public int Total { get; set; }
+    }
+
+    public class SalesOrder
+    {
+        public string SalesOrderId { get; set; }
+        public string ExternalOrderId { get; set; }
+        public string ExternalOrderNumber { get; set; }
+        public OrderSource OrderSource { get; set; }
+        public SalesOrderStatus SalesOrderStatus { get; set; }
+        public DateTime? OrderDate { get; set; }
+        public DateTime? CreatedAt { get; set; }
+        public DateTime? ModifiedAt { get; set; }
+        public PaymentDetails PaymentDetails { get; set; }
+        public Customer Customer { get; set; }
+        public BillTo BillTo { get; set; }
+        public Address ShipTo { get; set; }
+        public SalesOrderItems SalesOrderItems { get; set; }
+    }
+
+    public class SalesOrderItems
+    {
+        public string SalesOrderItemId { get; set; }
+        public List<LineItemDetails> LineItemDetails { get; set; }
+    }
+
+    public class LineItemDetails
+    {
+        public string Name { get; set; }
+        public string Sku { get; set; }
+        public Weight Weight { get; set; }
+        public Address ShipTo { get; set; }
+        public RequestedShippingOptions RequestedShippingOptions { get; set; }
+        public PriceSummary PriceSummary { get; set; }
+        public int Quantity { get; set; }
+        public bool IsGift { get; set; }
+    }
+
+    public class PriceSummary
+    {
+        public MonetaryValue UnitPrice { get; set; }
+        public MonetaryValue EstimatedTax { get; set; }
+        public string EstimatedShipping { get; set; }
+        public MonetaryValue Total { get; set; }
+    }
+
+    public class RequestedShippingOptions
+    {
+        public string ShippingSerive { get; set; }
+        public DateTime? ShipDate { get; set; }
+    }
+
+    public class BillTo
+    {
+        public string Email { get; set; }
+        public Address Address { get; set; }
+    }
+
+    public class Customer
+    {
+        public string Name { get; set; }
+        public string Phone { get; set; }
+        public string Email { get; set; }
+    }
+
+    public class PaymentDetails
+    {
+        public MonetaryValue Subtotal { get; set; }
+        public MonetaryValue EstimatesShipping { get; set; }
+        public MonetaryValue EstimatesTax { get; set; }
+        public MonetaryValue GrandTotal { get; set; }
+    }
+
+    public class SalesOrderStatus
+    {
+        public string PaymentStatus { get; set; }
+        public string FulfillmentStatus { get; set; }
+        public bool IsCancelled { get; set; }
+    }
+
+    public class OrderSource
+    {
+        public string OrderSourceId { get; set; }
+        public string OrderSourceNickname { get; set; }
+        public string OrderSourceCode { get; set; }
+        public string OrderSourceFriendlyName { get; set; }
+        public RefreshInfo RefreshInfo { get; set; }
+        public bool Active { get; set; }
+    }
+    public class RefreshInfo
+    {
+        public string Status { get; set; }
+        public string LastRefreshAttempt { get; set; }
+        public string RefreshDate { get; set; }
+    }
+
+
+}
\ No newline at end of file
diff --git a/ShipEngine/Models/Dto/ListWarehouse/Result.cs b/ShipEngine/Models/Dto/ListWarehouse/Result.cs
new file mode 100644
index 00000000..95ae9ea6
--- /dev/null
+++ b/ShipEngine/Models/Dto/ListWarehouse/Result.cs
@@ -0,0 +1,17 @@
+namespace ShipEngineSDK.ListWarehouse
+{
+    using ShipEngineSDK.Common;
+    using System;
+    using System.Collections.Generic;
+    using System.Text;
+
+    public class Params
+    {
+        public string WarehouseId { get; set; }
+        public bool IsDefault { get; set; }
+        public string Name { get; set; }
+        public string CreatedAt { get; set; }
+        public Address OriginAddress { get; set; }
+        public Address ReturnAddress { get; set; }
+    }
+}
diff --git a/ShipEngine/Models/Dto/Warehouse/Warehouse.cs b/ShipEngine/Models/Dto/Warehouse/Warehouse.cs
new file mode 100644
index 00000000..fc3eabd1
--- /dev/null
+++ b/ShipEngine/Models/Dto/Warehouse/Warehouse.cs
@@ -0,0 +1,16 @@
+namespace ShipEngineSDK.Warehouse
+{
+    using ShipEngineSDK.Common;
+    using System;
+    using System.Collections.Generic;
+    using System.Text;
+
+    public class Result
+    {
+        public string WarehouseId { get; set; }
+        public string Name { get; set; }
+        public string CreatedAt { get; set; }
+        public Address OriginAddress { get; set; }
+        public Address ReturnAddress { get; set; }
+    }
+}
diff --git a/ShipEngine/ShipEngine.cs b/ShipEngine/ShipEngine.cs
index cbdcf2f8..3dc024aa 100644
--- a/ShipEngine/ShipEngine.cs
+++ b/ShipEngine/ShipEngine.cs
@@ -1,5 +1,6 @@
 using Newtonsoft.Json;
 using ShipEngineSDK.Common;
+using ShipEngineSDK.ListWarehouse;
 using System.Collections.Generic;
 using System.Net.Http;
 using System.Threading.Tasks;
@@ -112,7 +113,58 @@ public ShipEngine(Config config) : base()
 
             return carriers;
         }
+        /// <summary>
+        /// List Manifests
+        /// </summary>
+        /// <returns></returns>
+        public async Task<ListManifest.Result> ListManifests()
+        {
+            var path = $"/v1/manifests";
+            var manifests = await SendHttpRequestAsync<ListManifest.Result>(HttpMethod.Get, path, null, _client, _config);
+            return manifests;
+        }
 
+        /// <summary>
+        /// List Manifests
+        /// </summary>
+        /// <param name="manifestId"></param>
+        /// <param name="methodConfig"></param>
+        /// <returns></returns>
+        public async Task<ListManifest.Result> ListManifests(string manifestId, Config methodConfig)
+        {
+            var client = ConfigureHttpClient(methodConfig, new HttpClient());
+
+            var path = $"/v1/manifests";
+            var manifests = await SendHttpRequestAsync<ListManifest.Result>(HttpMethod.Get, path, null, client, methodConfig);
+            return manifests;
+        }
+
+        /// <summary>
+        /// Get Created Manifest
+        /// </summary>
+        /// <param name="manifestId"></param>
+        /// <returns></returns>
+        public async Task<Manifests.Result> GetManifest(string manifestId)
+        {
+            var path = $"/v1/manifests/{manifestId}";
+            var manifest = await SendHttpRequestAsync<Manifests.Result>(HttpMethod.Get, path, null, _client, _config);
+            return manifest;
+        }
+
+        /// <summary>
+        /// Get Created Manifest
+        /// </summary>
+        /// <param name="manifestId"></param>
+        /// <param name="methodConfig"></param>
+        /// <returns></returns>
+        public async Task<Manifests.Result> GetManifest(string manifestId, Config methodConfig)
+        {
+            var client = ConfigureHttpClient(methodConfig, new HttpClient());
+
+            var path = $"/v1/manifests/{manifestId}";
+            var manifest = await SendHttpRequestAsync<Manifests.Result>(HttpMethod.Get, path, null, client, methodConfig);
+            return manifest;
+        }
 
         /// <summary>
         /// Create a manifest
@@ -363,5 +415,137 @@ public ShipEngine(Config config) : base()
 
             return labelResult;
         }
+
+        /// <summary>
+        /// Create a warehouse with provided details
+        /// </summary>
+        /// <param name="warehouseParams"></param>
+        /// <returns></returns>
+        public async Task<CreateWarehouse.Params> CreateWarehouse(ShipEngineSDK.CreateWarehouse.Params warehouseParams)
+        {
+            var path = $"/v1/warehouses";
+
+            string warehouseParamsString = JsonConvert.SerializeObject(warehouseParams, JsonSerializerSettings);
+
+            var warehosueResult = await SendHttpRequestAsync<CreateWarehouse.Params>(HttpMethod.Post, path, warehouseParamsString, _client, _config);
+
+            _client.Dispose();
+
+            return warehosueResult;
+        }
+        /// <summary>
+        /// Creates a warehouse with the provided details
+        /// </summary>
+        /// <param name="warehouseParams"></param>
+        /// <param name="methodConfig"></param>
+        /// <returns></returns>
+        public async Task<CreateWarehouse.Params> CreateWarehouse(ShipEngineSDK.CreateWarehouse.Params warehouseParams, Config methodConfig)
+        {
+
+            var client = ConfigureHttpClient(methodConfig, new HttpClient());
+
+            var path = $"/v1/warehouses";
+
+            string warehouseParamsString = JsonConvert.SerializeObject(warehouseParams, JsonSerializerSettings);
+
+            var warehosueResult = await SendHttpRequestAsync<CreateWarehouse.Params>(HttpMethod.Post, path, warehouseParamsString, client, methodConfig);
+
+            client.Dispose();
+
+            return warehosueResult;
+        }
+
+        /// <summary>
+        /// List all warehouses
+        /// </summary>
+        /// <returns></returns>
+        public async Task<ListWarehouse.Result> ListWarehouses()
+        {
+            var path = "v1/warehouses";
+
+            var warehouses = await SendHttpRequestAsync<ListWarehouse.Result>(HttpMethod.Get, path, null, _client, _config);
+
+            _client.Dispose();
+            return warehouses;
+        }
+        /// <summary>
+        /// Get a list of all warehouses
+        /// </summary>
+        /// <param name="methodConfig"></param>
+        /// <returns></returns>
+        public async Task<ListWarehouse.Result> ListWarehouses(Config methodConfig)
+        {
+            var client = ConfigureHttpClient(methodConfig, new HttpClient());
+            var path = "v1/warehouses";
+
+            var warehouses = await SendHttpRequestAsync<ListWarehouse.Result>(HttpMethod.Get, path, null, client, methodConfig);
+
+            client.Dispose();
+            return warehouses;
+        }
+
+        /// <summary>
+        /// Get warehouse by Id
+        /// </summary>
+        /// <param name="warehouseId"></param>
+        /// <returns></returns>
+        public async Task<Warehouse.Result> GetWarehouseByWarehouseId(string warehouseId)
+        {
+            var path = $"/v1/warehouse/{warehouseId}";
+
+            var warehouseInfo = await SendHttpRequestAsync<Warehouse.Result>(HttpMethod.Get, path, null, _client, _config);
+
+            _client.Dispose();
+
+            return warehouseInfo;
+        }
+
+        /// <summary>
+        /// Get warehouse by Id
+        /// </summary>
+        /// <param name="warehouseId"></param>
+        /// <param name="methodConfig"></param>
+        /// <returns></returns>
+        public async Task<Warehouse.Result> GetWarehouseByWarehouseId(string warehouseId, Config methodConfig)
+        {
+            var client = ConfigureHttpClient(methodConfig, new HttpClient());
+
+            var path = $"/v1/warehouse/{warehouseId}";
+
+            var warehouseInfo = await SendHttpRequestAsync<Warehouse.Result>(HttpMethod.Get, path, null, client, methodConfig);
+
+            client.Dispose();
+
+            return warehouseInfo;
+        }
+
+        public async Task ImportOrders(ImportOrders.Params importOrderParams)
+        {
+            var path = "/v-beta/order_sources/";
+
+            string paramString = JsonConvert.SerializeObject(importOrderParams, JsonSerializerSettings);
+
+            await SendHttpRequestAsync<object>(HttpMethod.Put, path, paramString, _client, _config);
+            _client.Dispose();
+            return;
+        }
+        public async Task<ListSalesOrder.Result> ListSalesOrders(string orderSourceId)
+        {
+            try
+            {
+                var path = $"/v-beta/sales_orders{orderSourceId}";
+                var result = await SendHttpRequestAsync<ListSalesOrder.Result>(HttpMethod.Put, path, null, _client, _config);
+
+                _client.Dispose();
+                return result;
+            }
+            catch (System.Exception ex)
+            {
+
+                throw;
+            }
+        }
+
+
     }
 }
\ No newline at end of file