Pulling Profit And Loss Information in Bulk

Updated 1 week ago ​by nussi

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();
}
}


How did we do?