Pulling Profit And Loss Information in Bulk
Overview
In order to get information about profit and loss for multiple orders, you can consume the endpoint presented in this article. In order to consume it, you must:
- Be authenticated user
For information on how you can authenticate, see: Authentication
As soon as you do authentication and receive a valid token, it needs to be passed on every call to the server.
Endpoint

Example for such endpoint for TT server is:
https://tt.api.sellercloud.com/api/Orders/ProfitAndLoss
For your server endpoint will be:
āhttps://{your_server_id}.api.sellercloud.com/api/Orders/ProfitAndLoss
Request Payload
{
"Orders": [
5828302
]
}
Response
[
{
"OrderItems": [
{
"ProductID": "variation-10-foot-ca",
"QtySold": 3,
"OrderUnitSiteCost": 0,
"OrderSiteCost": 0,
"ProductUnitSiteCost": 0,
"ProductSiteCost": 0,
"SellingPrice": 0,
"RefundTotal": 2,
"ChannelCommission": 0,
"TransactionFee": 0,
"FinalCostTotal": 12,
"Profit": -12,
"ProfitPercent": 0
}
],
"OrderID": 5828302,
"PaymentStatus": 30,
"ShippingStatus": 3,
"ShipDate": "2021-01-02T04:01:58.777+02:00",
"Channel": 0,
"CustomerID": 127345,
"IsTaxCollectedByMarketplace": false,
"SettlementDataAvailable": false,
"ItemCost": "0",
"ItemCostUsd": "0",
"PostingFee": "0",
"PostingFeeUsd": "0",
"Comission": "0",
"ComissionUsd": "0",
"TransportationFee": "0",
"TransactionFee": "0",
"TransactionFeeUsd": "0",
"ShippingCost": "12",
"ShippingCostUsd": "12",
"FbaOrderHandling": "0",
"FbaPickAndPack": "0",
"FbaShippingChargeback": "0",
"FbaGiftWrapChargeback": "0",
"FbaWeightHandling": "0",
"Tax": "0",
"TaxUsd": "0",
"Promotion": "0",
"PromotionUsd": "0",
"Rebates": "0",
"RebatesUsd": "0",
"OrderCost": "12",
"OrderCostUsd": "12",
"Payments": null,
"PaymentsUsd": null,
"Adjustments": "0",
"AdjustmentsUsd": "0",
"DropShipFee": "0",
"DropShipFeeUsd": "0",
"ShippingClaim": "0",
"ProfitLoss": "-9",
"ProfitLossPercentage": "-140.0 %",
"ProfitLossUsd": "-9",
"ProfitLossForParentOrder": null,
"QbExported": false,
"CurrencyCode": 0,
"FirstSalesRep": null,
"SecondSalesRep": null,
"ThirdSalesRep": null
}
]
Field | Description |
OrderID | ID of the sales order. |
OrderItems | Array of order items information related to fees, commissions, prices, costs for each item. |
CurrencyCode | Currency code of the order. Info for all available currencies can be found here: https://developer.sellercloud.com/article/tgetz37vsb-currency-codes |
PaymentStatus | All available payment statuses can be found here: https://developer.sellercloud.com/article/tyqyqdqs96-payment-status |
ShippingStatus | All available shipping statuses can be found here: https://developer.sellercloud.com/article/qop69ki11j-order-shipping-status |
ShipDate | When order has been shipped. |
Channel | Codes for all channels can be found here: https://developer.sellercloud.com/article/tgixpkduu9-channels |
CustomerID | ID of the customer. That information can be used for doing other calls for retrieving additional information for that customer> More info here: https://developer.sellercloud.com/article/4as8xdqs6t-get-single-customer |
DropshipFee | Dropshipping fee. If orders is not using USD, then dropshipping fee will be calculated in the correct order's currency according to the currency rates. |
DropshipFeeUsd | Dropshipping fee in USD. |
Commission | Commission fee. If order is from Amazon or FBA order, than commissions is "N/A" If orders is not using USD, then commission will be calculated in the correct order's currency according to the currency rates. |
Response Status Codes
200 | OK |
401 | Unauthorized |
500 | Internal Server Error |
Demo in c#
Authentication
public class LoginResponse
{
public string token_type { get; set; }
public string access_token { get; set; }
public DateTime? validFrom { get; set; }
public DateTime? validTo { get; set; }
}
public interface IAuthenticationClient
{
string Login(string baseUri, LoginRequest request);
}
public class LoginRequest
{
public LoginRequest(string username, string password)
{
this.Username = username;
this.Password = password;
}
public string Username { get; }
public string Password { get; }
}
public class AuthenticationClient : IAuthenticationClient
{
public string Login(string baseUri, LoginRequest loginRequest)
{
using (var client = new HttpClient())
using (var request = new HttpRequestMessage(HttpMethod.Post, $"{baseUri}/api/token"))
{
var json = JsonConvert.SerializeObject(loginRequest);
using (var stringContent = new StringContent(json, Encoding.UTF8, "application/json"))
{
request.Content = stringContent;
var responseMessage = client.SendAsync(request).Result;
var content = responseMessage.Content
.ReadAsStringAsync()
.Result;
var response = JsonConvert.DeserializeObject<LoginResponse>(content);
return response.access_token;
}
}
}
}
Getting Profit And Loss
public class GetProfitAndLossRequest
{
public IEnumerable<int> Orders { get; set; }
}
string baseUri = "http://{server_id}.api.sellercloud.com/rest";
string url = $"{baseUri}/api/Orders/ProfitAndLoss";
string username = "{your_username}";
string password = "{your_password}";
IAuthenticationClient authenticationClient = new AuthenticationClient();
string token = authenticationClient.Login(baseUri, new LoginRequest(username, password));
var content = new GetProfitAndLossRequest()
{
Orders = realOrders
};
using (var client = new HttpClient())
using (var request = new HttpRequestMessage(HttpMethod.Post, url))
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var json = JsonConvert.SerializeObject(content);
using (var stringContent = new StringContent(json, Encoding.UTF8, "application/json"))
{
request.Content = stringContent;
var responseMessage = await client.SendAsync(request);
var jsonContent = await responseMessage.Content.ReadAsStringAsync();
}
}