Refer to Onboarding Documentation for step by step guidance.

Recycling API Guide

NOTE: The Recycling API guide will be getting updated as per the current functionality.  Pls. refer this link as the primary source of information, rather than downloading the content locally.
 Introduction

Recycling API can be used to send recycling information to Microsoft against a Microsoft provided Asset number. The recycling information needs to be specific to:

Type
Description

Collection

Collection of equipments.

Disposition

Data destruction, Triage, etc.

Invoice details

Supplier invoice details

Credit details

Supplier credits and generating revenue to Microsoft

Payment Notifications

Payment information sent to Microsoft.

Certificate of Recycling (COR)

Send file pertaining to certificate of recycling in Job ID level.

Certificate of Destruction (COD)

Send file pertaining to certificate of destruction in Job ID level.

Certificate of Data Erasure

Send file pertaining to certificate of data erasure in Unit ID level

Invoice Document

Send document file pertaining to supplier invoices.

PO Document

Send document file pertaining to supplier purchase orders.

PO Document along with Automated MS Invoice creation

Send all the PO details along with Tax and document file for automated MS Invoice creation.

Transport & Packaging

Transport and packaging details for a Job ID.

DBD (Data Bearing Devices)

This report is only required for Jobs where Data Bearing Devices are found, which were not listed on the Collection Request Form.

Material Audit

Material audit information to calculate material efficiency.

Pre-requisites:

To consume API, you would need to create account and subscribe to API product. in addition to subscribing to API, we need to enable Microsoft Entra ID integration to obtain authentication and authorization tokens that would be used for API communication.

API Information:

TEST : https://supplier.developer.azure-api.net/

PRODUCTION : https://supplier.portal.azure-api.net/

Go the above website and navigate to “Onboarding” link and follow the steps to subscribe to the Recycling API (v1) and request for subscription key that gives you access to querying API. Once requested, Microsoft will verify information and provide required access. 

AUTHENTICATION HEADERS

HEADER : OCP-APIM-SUBSCRIPTIONKEY

DESCRIPTION : Use this header to authenticate with subscription key you receive after subscribing to API

HEADER : AUTHORIZATION

DESCRIPTION : Use this header to pass Oauth2 authentication token. The steps to perform a token exchange are detailed in the following sections. The Value provided follows this format: ‘Bearer ’

SETTING UP MICROSOFT ENTRA ID AND GETTING OAUTH TOKEN

WHO DOES

WHAT TO DO

1

API Consumer Application Developer

Make Sure you have Microsoft Entra ID tenant is set up right

2


API Consumer’s Microsoft Entra ID Admin

Trust our Site – In Microsoft Entra ID, Admin accepts that it can be trusted

3

Consumer Application

Using code, generate Microsoft Entra ID authorization token. Refer code examples online.

4


Consumer Application

Using code, generate eb request with above headers and ad authorization token to get response from API. Sample code on Git hub.

Supplier Onboarding process:
1. Suppliers need to register and provide Microsoft the Microsoft Entra ID tenant name.
a. Go to API onboarding page (https://supplier.developer.azure-api.net/). This will provide you with an recommendation to use an Microsoft Entra ID account, with a link to the signup page.
b. Authenticate with a “**@.com” user account and try to login. This will respond with the error that you are not authorized to access the API. Provide us the Microsoft Entra ID Tenant and we will approve this in our portal.
c. Please provide the Microsoft Entra ID Tenant Name/Id and we should be able to approve it in Supplier Web.

i. You can get this by logging into https://aad.portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Properties using your Microsoft Entra ID user credentials.

d. Once approved, supplier need to create Microsoft Entra ID app.

1. https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal#register-an-application-with-azure-ad-and-create-a-service-principal

2. Onboarding Links:
a. Create an Microsoft Entra ID App - https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal#register-an-application-with-azure-ad-and-create-aservice-principal
b. Documentation to create application id and get app key from your tenant: https://docs.microsoft.com/en-us/skype-sdk/trusted-application-api/docs/registrationinazureactivedirectory
c. Sample code for authentication : https://github.com/WilsonReddy/APIMandAAD
Publish payload data of Recycling
You could use PUT call at “https://supplier.developer.azure-api.net/recycling/v1/” to insert recycling payload in bulk. Please use body of request as content type ‘application/json’ and time out for request set at 120 seconds for bulk call.
Max Items that can be sent in Bulk through Recycling API
1000
REQUIRED HEADER

In addition to authorization headers, we would need the below headers in all the payloads:

Correlation-Id – A random GUID value should be provided as the value in Header for each request. We recommend this to be stored with you as well. We would use this to trace any issues or get more information for any issues with API. NOTE: Each time an API is called, the Correlation-Id needs to be unique. For e.g, if an API is called three times for a single Job Id containing 2500 unit id's, each of the API call need to have unique Correlation-Id.
ProgramType – This is the Microsoft business group program code. Provide the ProgramType in API payloads

Program Type : DEVICE

Description: This belongs to Microsoft's "Responsible Recycle" business program.

Program Type : CLOUD

Description: This belongs to Microsoft's "MCIO/Cloud" business program.

Program Type : LINKEDIN_IT

Description: This belongs to LinkedIn IT business group.

Program Type : LINKEDIN_DC

Description: This belongs to the LinkedIn Datacenter business group.

Program Type : SUPPLYCHAIN

Description: This belongs to Recovery Supply Chain business group having customer devices.

Recycling API Endpoint

 The API documentation for each API's are available in the supplier portal (need login). You can click on "API definition" and download the related JSON/YAML contract. The API uses Rest based web request response and standard HTTP codes to communicate over HTTPS protocol.

https://supplier.developer.azure-api.net/docs/services/recycling-api/

TEST
COLLECTION

https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/collection

TEST

DISPOSITIION

https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/v2/disposition

TEST
INVOICE DETAILS

 https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/invoicedetails

TEST
CREDIT DETAILS

https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/creditdetails

TEST
CERTIFICATES

https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/recyclingcertificate

TEST
PAYMENT NOTIFICATIONS

https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/paymentnotifications

TEST
INVOICE DOCUMENT UPLOAD

https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/invoicedocument

TEST
PO DOCUMENT UPLOAD

https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/podocument

TEST
PO DOCUMENT UPLOAD along with Automated MS Invoice creation

https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/v2/podocument

TEST
TRANSPORT & PACKAGING

https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/transportandpackaging

TEST
Material Audit

https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/materialaudit

TEST
DBD (Data Bearing Devices)

https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/dbd

TEST
Close Job

https://test.supplier-api.microsoft.com/recycling/v1/api/devicerecycling/closejob

PRODUCTION
COLLECTION

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/collection

PRODUCTION
DISPOSITION

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/v2/disposition

PRODUCTION
INVOICE DETAILS

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/invoicedetails

PRODUCTION
CREDIT DETAILS

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/creditdetails

PRODUCTION
CERTIFICATES

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/recyclingcertificate

PRODUCTION

PAYMENT NOTIFICATIONS

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/paymentnotifications

PRODUCTION
INVOICE DOCUMENT UPLOAD

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/invoicedocument

PRODUCTION
PO DOCUMENT UPLOAD

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/podocument

PRODUCTION
PO DOCUMENT UPLOAD along with Automated MS Invoice creation

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/v2/podocument

PRODUCTION
TRANSPORT & PACKAGING

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/transportandpackaging

PRODUCTION

Material Audit

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/materialaudit

PRODUCTION
DBD (Data Bearing Devices)

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/dbd

PRODUCTION
Close Job

https://supplier.azure-api.net/recycling/v1/api/devicerecycling/closejob

Program Type: DEVICE
Job Type: Onsite Destruction, Value Recovery, Recycle Only, Prototype.
Program Type: CLOUD
Job Type: Value Recovery, Recycle Only, ITPAC, Previously Shredded Material, DBD Destruction, Buyback
Program Type: LINKEDIN_IT
Job Type: Value Recovery, Box Program, Onsite Destruction.
Program Type: LINKEDIN_DC
Job Type: Value Recovery, Box Program, Onsite Destruction
Program Type: SUPPLYCHAIN
Job Type: Bulk, Destroy Only, Device, Software, Resell

Order in which the reports/payloads need to be sent:
1. Collection: lection, rest of the reports cannot be uploaded. This is an exception for "Buyback" job type where directly credit details can be uploaded.

Also, Disposition can be sent directly in case of Parts harvesting scenario. This type of unit need to be tied up with a parent unit id. The ParentUnitId should already exist in the system. When uploading all the units in bulk, put the ParentUnitId details before parts harvested units when calling API.

2. Disposition: Without Disposition, Invoice/Credit details cannot be sent. This is an exception for "Buyback" job type.
3. Invoice/Credit details:

Invoice Details:

  • Provide Minimum Service Fee & Logistics Fee in a Job level across all the payloads to be consistent. Do not override it with 0 if sending partial units for a Job.

  • MinimumServiceFee & Logistics fee provided iin invoice details (Job level data) will be used to generate Invoice Summary automatically.

  • Provide valid SupplierInvoiceNumber. The same SupplierInvoiceNumber will be used to populate Invoice summary.

Credit Details:

  • Provide valid SupplierPoNumber.

  • Credit Summary will be automatically populated based on the credit details specifics.

    During the Invoice/Credit details stage, a Job can be 'CLOSED'. Do not close the job unless all the units are uploaded for a job id. If a job need to be closed explicitly, pls use the "CloseJob" API.

Buyback JobType: For Buyback Jobs, only the below reports are needed:

1. Credit Details - This report can be uploaded without collection/disposition.

2. PO Document - Supplier PO number should be present in credit details to upload PO Document.

3. Payment Notifications

4.Invoice/Credit Document :

This cannot be uploaded unless we find the Job Id. Job Id existence is defined when Invoice/Credit details is uploaded.

For Invoice Document, "Supplier Invoice Number" needs to exist when sending Invoice Details.

For Credit Document, "Supplier Po Number" needs to exist when sending Credit Details.

5.Transport & Packaging:

This cannot be uploaded unless we find the Job Id. Job Id existence is defined when collection is uploaded.

6.Certificate of Recycling/Destruction:

This cannot be uploaded unless we find the Job Id. Job Id existence is defined when collection is uploaded.

7.Certificate of DataErasure:

This cannot be uploaded unless we find the Job Id/UnitId combination. Job Id/Unit Id existence is defined when collection is uploaded.

8.Close Job:

Call the CloseJob API explicitly to close a Job.

After a Job is closed, below *cannot* be uploaded: Rest of the reports can still be uploaded.

1. Collection

2. Disposition

3. Invoice/Credit Details

Buyback Job Requirements:

For Buyback Jobs, below reports need to be reported through respective APIs:

  1. Credit Details

  2. PO Document - Supplier PO number should be present in credit details to upload PO Document.

  3. Payment Notifications

Collection:

(SLA: 15 Days from 'Received Date' including holidays.)

Column Properties
JSON Structure

Data Field

Datatype

Null Allowed

Description

Report Date

Date

No

Report Date to track the SLA.

Auto populated in Recycling API’s based on suppliers sending data.

Job ID

Text

No

Unique Job Identifier for each requested pickup/collection

Job Type

Text

No

ProgramType specific JobType(s) are listed in this document above.

NOTE: Only one Job Type is allowed per Job ID

Microsoft Company Code

Text

No

Microsoft pickup location ID located on the collection request form

Microsoft PO Number

Number

Yes

Document ID Supplier uses to pay Microsoft.

Microsoft PO Currency

Text

Yes

Currency Microsoft uses to pay supplier.

Collection Site Code

Text

No

Microsoft pickup location code (DC Code / Building ID)

Collection Site Name

Text

No

Microsoft pickup location name (DC Name / Building Name)

Microsoft Collection Ticket Number

Text

No

Microsoft provided ticket number to suppliers for collection.

Collection Address

Text

No

Microsoft pickup location address located on the collection request form

Collection Address No

Number

No

Microsoft pickup location address number located on the collection request form

Collection City

Text

No

Microsoft pickup location city located on the collection request form

Collection Country

Text

No

Country where the devices are picked up. Please provide 2-character ISO Country Code (https://countrycode.org/).

Collection Zip Code

Number

No

Microsoft pickup location zip code located on the collection request form

Collection Date

Number

No

Date when supplier has collected the devices from the MSFT site

Received

Date

No

Date and time unit received at supplier facility (Year/Month/Date)

Description

Text

Yes

Accessories field only for mix, bulk, cables, other

Unit ID

Text

No

Unique ID supplier uses to track a unit throughout the service From collection to final disposition (sold or sent to downstream recycler)

Asset Tag

Text

No

Microsoft Asset Tag number (Note: Units that do not bear a tag should report “NA”)

Asset Tag2

Text

No

Additional Asset Tag number (Note: Units that do not bear a tag should report “NA”)

Serial Number

Text

No

o Serial number (Note: Units that do not bear a Serial Number should report “NA”)

Unit Type

Text

No

Supplier Unit Type / Category

Manufacturer

Text

Yes

Manufacturer

Model

Text

Yes

Model name

Part Number

Text

Yes

Part Number if available

Processing Site

Text

No

Supplier facility where the unit is processed

Processing Country

Text

No

Country where the units are processed. Please provide 2-character ISO Country Code (https://countrycode.org/).

Quantity

Number

No

Quantity, of equipment being reported under this unit ID, wich allows for batch reporting on nonserialized equipment

Weight (Kilos)

Number

No

Device/component weight in kilos

{ "collectionDetails":{ "supplierId": "R004", "supplierName": "XYZ Recycling", "supplierJobId": "10002", "supplierJobType": "Standard/Destruction/Recycle", "supplierReceivedDate": "2019-06-15T13:21:58.000Z", "collectionDate": "2019-06-11T13:21:58.000Z", "msCollectionTicketNumber": "10297910", "collectionSiteCode": "C012", "collectionSiteName": "Microsoft US Redmond", "collectionAddress": "One Microsoft Way", "collectionAddressNumber": "", "collectionCity": "Redmond", "collectionCountry": "US", "collectionZipCode": null, "supplierProcessingSite": "Processing-site name", "supplierProcessingCountry": "US", "msCompanyCode": "1010", "msPONumber": "99288565" }, "assetDetails": [ { "supplierUnitId": "S101", "supplierUnitType": "Server", "assetTagNumber": "73737377", "assetTagNumber2": null, "serialNumber": "132509492057", "description": "For accessories field only for mix/bulk/cables/other", "manufacturer": "LENOVA", "model": "Inspiron", "partNumber": "INS393939", "quantity": 1, "weightInKilos": 7.8, "dataDeviceFormFactor": "NVMe", "hddCount": 2, "cpuSpeed": "2400 MHz", "ramSize": "8192 MB" }, { "supplierUnitId": "S102", "supplierUnitType": "Drive", "assetTagNumber": "NA", "assetTagNumber2": "Sample Tag", "serialNumber": "13260942FDF0", "msPoNumber": "99777565", "description": "For accessories field only for mix/bulk/cables/other", "manufacturer": "MICRON", "model": "M500 2.5 SSD.", "partNumber": "MTFDDAK480MAV", "quantity": 2, "weightInKilos": 9, "dataDeviceFormFactor": "SAS", "hddCount": 6, "cpuSpeed": "5000 MHz", "ramSize": "262144 MB" } ] }

Disposition:

(SLA: 45 Days from 'Collection Received Date' including holidays.)

Column Properties
JSON Structure

Data Field

Data Type

Null Allowed

Description

Report Date

Date

No

Report Date to track the SLA. Auto populated in Recycling API’s based on suppliers sending data.

Job ID

Text

No.

Unique Job Identifier for each requested pickup/collection

Job Type

Text

No

ProgramType specific JobType(s) are listed in this document above. NOTE: Only one Job Type is allowed per Job ID

Job Status

Text

Yes.

ACTIVE/CLOSED (Default is ACTIVE)

Microsoft Company Code

Text

No

Microsoft pickup location ID located on the collection request form.

Microsoft PO Number

Number

Yes

Document ID supplier uses to pay Microsoft.

Microsoft PO Currency

Text.

Yes

Currency Microsoft uses to pay supplier.

Supplier PO Currency

Text

Yes

PO Currency supplier used to pay Microsoft (If sale price is provided)

Destruction Type

Text

Yes

If JobType is "DBD Destruction", this value needs to be provided in Job ID level. Valid values for this attribute are:- Onsite shredding, Offsite shredding, Onsite degauss & punched, Collected degauss & punched, Incineration, Recurring onsite shredding, Recurring offsite shredding, Recurring onsite degauss & punched, Recurring collected degauss & punched, Offsite destruction

Unit ID

Text

No

Unique ID supplier uses to track a unit throughout the service to final disposition

Unit Type

Text

No

Supplier Unit Type / Category

DispositionDate

Date

Yes

If Unit Status = 'Disposed', Disposition Date cannot be empty.

DispositionType

Text

Yes

Valid values are: Sold, Recycled, Destruction, Redeployment If Unit Status = 'Disposed', Disposition Type cannot be empty. NOTE: If Disposition Type is provided, the UnitStatus should be 'Disposed'

ReturnType

Text

Yes

Donation, RTC. "ReturnType" should be provided when DispositionType = 'Redeployment'. (RTC: Return to Customer)

UnitStatus

Text

No

Received, Processing, Processed, Inventory, Disposed.

Asset Tag

Text

No

Microsoft Asset Tag number (Note: Units that do not bear a tag should report “NA”)

Asset Tag2

Text

No

Additional Asset Tag number (Note: Units that do not bear a tag should report “NA”)

Parent Unit ID

Text

Yes

Part harvesting scenario: When parts are harvested, a new Unit ID is generated. Suppliers must link this new UnitID with Parent Unit ID.

Serial Number

Text

No

Serial number (Note: Units that do not bear a Serial Number should report “NA”)

Quantity

Number

Yes

Quantity to be provided only for the case of Parts harvesting Scenario. Quantity, of equipment being reported under this unit ID, which allows for batch reporting on non-serialized equipment.

Weight (Kilos)

Numberq

Yes

Weight to be provided only for the case of Parts harvesting Scenario. Device/component weight in kilos

Sales Price

Number

Yes

Sale price at unit id level (currency to map to Supplier PO currency)

Total Unit Fees

Numberq

Yes

Total Unit Fees charged at unit id level in Microsoft PO currency

Description

Text

Yes

Accessories field only for mix, bulk, cables, other if required

Manufacturer

Text

Yes

Manufacturer

Model

Text

Yes

Model name

Part Number

Text

Yes

Part Number if available

Data Device Form Factor

Text

Yes

HDD Count

Number

Yes

Number of hard disk found.

CPU Speed

Text

Yes

E.g, 2400 MHz

RAM Size

Text

Yes

E.g 8192 MB

Failure Reasons

Text

No

Supplier Failure Reasons

Triage Complete Date

Date

No

Date when device completes all the testing, data sanitization, dismantle and other processing and ready for remarket or

CPU

Text

Yes

CPU size, speed if applicable

RAM

Text

Yes

Memory size if applicable

Wipe Date

Text

Yes

Date device has been wiped if the unit has data bearing components

Certificate of Data Erasure Number

Text

Yes

Number indicating completion of unit data wipe ie Blanco serial number

{ "supplierId": "R004", "supplierName": "XYZ Recycling", "supplierJobID": "10002", "supplierJobType": "DBD Destruction", "msPONumber": "99288565", "msPoCurrency": "USD", "msCompanyCode": "1010", "supplierPoCurrency": "USD", "destructionType": "Offsite shredding/Offsite destruction/etc.", "jobStatus":"Active", "dispositionDetails": [ { "supplierUnitId": "S101", "supplierUnitType": "Server", "unitStatus": "Processing", "dispositionDate": "2020-06-11T23:20:03.658Z", "dispositionType": "Sold, Recycled, Redeployment", "returnType": "Donation/RTC", "wipeDate": "2019-06-13T00:21:58.000Z", "wipeCertificateNumber": "W4848848-R", "recycleCertificateNumber": "R9383", "triageCompleteDate": "2019-06-13T13:21:58.000Z", "triageFailureReasons": "Missing Part(s)- Power Supply Unit;Missing Part(s)-Motherboard", "parentUnitId": "SUP88855", "quantity": 1, "weightInKilos": 7.8, "salePrice": 2828.28, "totalUnitFees": 2100.8, "assetTagNumber": "73737377", "assetTagNumber2": null, "serialNumber": "132509492057", "description": "For accessories field only for mix/bulk/cables/other", "manufacturer": "LENOVA", "model": "Inspiron", "partNumber": "INS393939", "dataDeviceFormFactor": "NVMe", "hddCount": 2, "cpuSpeed": "2400 MHz", "ramSize": "8192 MB" }, { "supplierUnitId": "S103", "supplierUnitType": "Memory", "unitStatus": "Inventory", "dispositionDate": "2020-06-11T23:20:03.658Z", "dispositionType": "Sold, Recycled, Redeployment", "returnType": "Donation/RTC", "wipeDate": "2019-06-13T00:21:58.000Z", "wipeCertificateNumber": "W4844545", "recycleCertificateNumber": "R934545", "triageCompleteDate": "2019-06-13T13:21:58.000Z", "triageFailureReasons": "Missing Part(s)- Power Supply Unit;Missing Part(s)-Motherboard", "parentUnitId": null, "salePrice": 98.33, "totalUnitFees": 800.8, "assetTagNumber": "NA", "assetTagNumber2": "Sample Tag", "serialNumber": "13260942FDF0", "msPoNumber": "99777565", "description": "For accessories field only for mix/bulk/cables/other", "manufacturer": "MICRON", "model": "M500 2.5 SSD.", "partNumber": "MTFDDAK480MAV", "dataDeviceFormFactor": "SAS", "hddCount": 6, "cpuSpeed": "5000 MHz", "ramSize": "262144 MB" } ] }

Invoice Details:

(SLA: 120 Days from 'Collection Received Date' including holidays.)

Column Properties
JSON Structure

Data Field

Data Type

Null Allowed

Description

Reporting Month

Date

No

First day of the reporting month.

Auto populated in Recycling API’s based on suppliers sending data.

Job ID

Text

No

Unique Job Identifier for each requested pickup/collection

Job Type

Text

No

ProgramType specific JobType(s) are listed in this document above

NOTE: Only one Job Type is allowed per Job ID

Job Status

Text

Yes

ACTIVE/CLOSED (Default is ACTIVE)

Microsoft PO Number

Number

No

Document ID supplier uses to pay Microsoft.

Microsoft PO Currency

Text

No

Currency Microsoft uses to pay supplier.

Billing Country

Text

No

Country code for billing. Please provide 2-character ISO Country Code (https://countrycode.org/).

Supplier Billing Entity

Text

Yes

Microsoft provided supplier ID.

Supplier Invoice Number

Number

No

Document ID supplier uses to bill MSFT (supplier internal number)

Logistics Fee

Number

No

Logistics fees in a Job Level in Microsoft PO currency. If this API is called multiple times for a single JobId, the logistics Fee needs to be same across all the uploads.

Minimum Service Fee

Number

Yes

Minimum Job Or Service fee charged for a single Job ID in Microsoft PO currency. If this API is called multiple times for a single JobId, the MinimumServiceFee needs to be same across all the uploads.

Miscellaneoous Fee Supplier Invoice Number

Text

Yes

Supplier Invoice Number tagged with Logistics Fee and Minimum service Fee.

NOTE: If this value is not provided, the default value will be the first 'Supplier Invoice Number' provided in the current invoice details payload.

Unit ID

Text

No

Unique ID supplier uses to track a unit throughout the service to final disposition (sold or sent to downstream recycler)

Unit Type

Text

No

Supplier Unit Type for the specific Program.

Unit Fee 1

Number

No

Fees charged at unit id level in Microsoft PO currency

Unit Fee 2

Number

No

See above

Unit Fee 3

Number

No

See above

Total Unit Fees

Number

No

sum of Unit Fee 1, 2, 3 etc. in Microsoft PO currency

{ "supplierId": "R004", "supplierName": "XYZ Recycling", "supplierJobID": "10002", "supplierJobType": "Destruction", "msCompanyCode": "1010", "msPONumber": "99288565", "msPoCurrency": "USD", "billingCountry": "US", "logisticsFee": 76, "minimumServiceFee":0, "miscFeeSupplierInvoiceNumber": "INV303828", "supplierBillingEntity": "MicrosoftProvidedSupplierID-MS PO Number related", "jobStatus": "ACTIVE", "invoiceDetails": [ { "supplierUnitID": "S101", "supplierUnitType": "Server", "unitFee1": 8.8, "unitFee2": 11, "unitFee3": 81, "totalUnitFees": 100.8, "supplierInvoiceNumber": "INV303827-CanBeSameAcrossAllUnitsForAJobId" }, { "supplierUnitID": "S105", "supplierUnitType": "Monitor", "unitFee1": 38.8, "unitFee2": 131, "unitFee3": 821, "totalUnitFees": 2100.8, "supplierInvoiceNumber": "INV303828" } ] }

Credit Details:

(SLA: 120 Days from 'Collection Received Date' including holidays.)

Column Properties
JSON Structure

Data Field

Data Type

Null Allowed

Description

Reporting Month

Date

No

First day of the reporting month

Auto populated in Recycling API’s based on suppliers sending data.

Job ID

Text

No

Unique Job Identifier for each requested pickup/collection

Job Type

Text

No

ProgramType specific JobType(s) are listed in this document above.

NOTE: Only one Job Type is allowed per Job ID

Job Status

Text

Yes

ACTIVE/CLOSED (Default is ACTIVE)

Supplier PO Number

Text

No

PO Number supplier uses to pay Microsoft value recovery

Supplier PO Currency

Text

No

PO Currency supplier used to pay Microsoft.

Billing Country

Text

No

Country code for billing. Please provide 2-character ISO Country Code (https://countrycode.org/).

Unit ID

Text

No

Unique ID supplier uses to track a unit throughout the service to final disposition (sold or sent to downstream recycler)

Unit Type

Text

No

Supplier Unit Type / Category

Date Sold

Date

No

Date device sold

Sales Price

Number

No

Sale price at unit id level (currency to map to Supplier PO currency)

Supplier Commission

Number

No

Supplier Revenue share at unit id level (currency to map to Supplier PO currency)

MS Rev Share

Number

No

Microsoft revenue share at unit id level (currency to map to Supplier PO currency). This is the actual credit which Microsoft is receiving (it is the amount after deducting supplier commission)

{ "supplierId": "R004", "supplierName": "XYZ Recycling", "supplierJobID": "10002", "supplierJobType": "Destruction", "msCompanyCode": "1010", "jobStatus": "ACTIVE", "supplierPoCurrency": "INR", "billingCountry": "US", "creditDetails": [ { "supplierUnitID": "S101", "supplierUnitType": "Server", "dateSold": "2020-03-31T07:05:04.216Z", "salePrice": 2828.28, "supplierCommission": 7, "msRevenueShare": 44.44, "supplierPoNumber": "SUP1010202" }, { "supplierUnitID": "S104", "supplierUnitType": "Monitor", "dateSold": "2020-03-31T07:05:04.216Z", "salePrice": 2828.28, "supplierCommission": 27, "msRevenueShare": 284.44, "supplierPoNumber": "SUP1010202" } ] }

Certificates (Recycling/Destruction/DataErasure):

API Headers:

Correlation-Id : “96e1474f-a81c-480f-af02-3ba42491e760”

Type: “Recycling” OR "Destruction" OR "DataErasure"

NOTE: DataErasure is in a unit level. SupplierUnitId needs to be provided to upload this type of certificate.

Type
Column Properties
JSON Structure

Recycling

Data Field

Data Type

Null Allowed

Description

1

Supplier Id

Text

No

Static Id provided by Microsoft

2

Supplier Job Id

Text

No

Job Id for which certificate is uploaded.

3

Certificate File Name

Text

No

Filename along with extension.

4

Certificate File Content

Number

No

File content as byte[] array.

{ "supplierId": "R003", "supplierJobId": "10002", "certificateFileName": "SampleCertificateName-10 "certificateFileContent":” JVBERi0xLjQKJeLjz9MKNCAwIG9iaiA8PC9Db2xvclN }

Destruction

Data Field

Data Type

Null Allowed

Description

1

Supplier Id

Text

No

Static Id provided by Microsoft.

2

Supplier Job Id

Text

No

Job Id for which certificate is uploaded.

3

Certificate File Name

Text

No

Filename along with extension.

4

Certificate File Content

Number

No

File content as byte[] array.

{ "supplierId": "R003", "supplierJobId": "10002", "certificateFileName": "SampleCertificateName-10 "certificateFileContent":” JVBERi0xLjQKJeLjz9MKNCAwIG9iaiA8PC9Db2xvclN }

DataErasure

Data Field

Data Type

Null Allowed

Description

1

Supplier Id

Text

No

Static Id provided by Microsoft

2

Supplier Job Id

Text

No

Job Id for which certificate is uploaded.

3

Supplier Unit Id

Text

No

Unit Id for which data erasure was done.

4

Certificate File Name

Text

No

Filename along with extension.

5

Certificate File Content

Number

No

File content as byte[] array

{ "supplierId": "R003", "supplierJobId": "10002", "supplierUnitId": "S101", "certificateFileName": "SampleCertificateName-10 "certificateFileContent":” JVBERi0xLjQKJeLjz9MKNCAwIG9iaiA8PC9Db2xvclN }

Payment Notifications:
Column Properties
JSON Structure

Data Field

Data Type

Null Allowed

Description

Supplier PO Number

Text

No

PO Number supplier uses to pay Microsoft.

Supplier PO Currency

Text

No

Currency supplier uses to pay Microsoft

Microsoft Invoice Number

Text

No

Microsoft Invoice number issued.

Payment Amount

Number

No

Total amount of Payment for this line item which was paid/wired.

Payment Amount in USD

Number

No

Total amount of Payment for this line item in USD.

Payment Date

Date

No

Date when wire is sent.

{ "supplierId": "R004", "supplierName": "XYZ Recycling", "paymentDetails": [ { "supplierPoNumber": "SUP1010202", "supplierPoCurrency": "INR", "msInvoiceNumber": "MS-INV-998383838", "paymentDate": "2020-03-31T00:00:00.000Z", "paymentAmount": 245000.28, "paymentAmountUSD": 1000 }, { "supplierPoNumber": "SUP898", "supplierPoCurrency": "USD", "msInvoiceNumber": "MS-INV-998383838", "paymentDate": "2020-06-09T00:00:00.000Z", "paymentAmount": 678.29, "paymentAmountUSD": 678.29 } ] }

Invoice Document(file upload):
Column Properties
JSON Structure

Data Field

Data Type

Null Allowed

Description

Supplier Id

Text

No

Supplier Id provided by Microsoft

Supplier Invoice Number

Text

No

Document ID supplier uses to bill MSFT (supplier internal number

Microsoft Company Code

Text

No

Microsoft pickup location ID located on the collection request form.

File Name

Text

No

File name along with extension.

File Content

Binary

No

File content in binary format.

{ "supplierId": "R001", "supplierInvoiceNumber": "INV38388", "msCompanyCode": "1010", "fileName": "SUP1010203-PoDocument-Sample.pdf", "fileContent":"FileContent in Binary format--- JVBERi0xLjQKJeLjz9MKNCAwIG9iaiA8PC9Db2xvclNw" }

PO Document(file upload):
Column Properties
JSON Structure

Data Field

Data Type

Null Allowed

Description

Supplier Id

Text

No

Supplier Id provided by Microsoft.

Supplier PO Number

Text

No

PO Number supplier uses to pay Microsoft value recovery

Microsoft Company Code

Text

No

Microsoft pickup location ID located on the collection request form.

File Name

Text

No

File name along with extension.

File Content

Binary

No

File content in binary format.

{ "supplierId": "R001", "supplierPoNumber": "PO38388", "msCompanyCode": "1010", "fileName": "SUP1010203-PoDocument-Sample.pdf", "fileContent":"FileContent in Binary format--- JVBERi0xLjQKJeLjz9MKNCAwIG9iaiA8PC9Db2xvclNw" }

PO Document file upload with Tax details - Automated Microsoft Invoicing
Column Properties
JSON Structure

Data Field

Data Type

Null Allowed

Description

Supplier Id

Text

No

Supplier Id provided by Microsoft.

Supplier PO Number

Text

No

PO Number supplier uses to pay Microsoft value recovery

Microsoft Company Code

Text

No

Microsoft pickup location ID located on the collection request form.

Supplier PO Currency

Text

No

PO Currency supplier used to pay Microsoft.

Supplier PO Amount

Number

No

Total amount of the PO (This should be equivalent to Total MSRevenueShare sent in Credit Details)

NOTE: If the total MSRevenueShare for all the Jobs linked with this PO number is not equivalent to Supplier PO Amount sent in this payload, it will result in error. Pls. cross check the Credit details for all Job Id(s) linked with this 'SupplierPoNumber'.

(currency to map to Supplier PO currency)

Tota Freight Charges

Number

No

Total Freight charges for this PO (currency to map to Supplier PO currency)

Tax 1

Number

No

Tax (currency to map to Supplier PO currency)

Tax 2

Number

No

Tax (currency to map to Supplier PO currency)

Total Supplier PO Amount

Number

No

Total PO Amount including Tax(s) sent to Microsoft for Invoicing (currency to map to Supplier PO currency)

File Name

Text

No

PO Document file name along with extension.

File Content

Binary

No

File content in binary format.

{ "supplierId": "R001", "supplierPoNumber": "SUP10102036", "msCompanyCode": "1010", "supplierPoCurrency":"INR", "supplierPoAmount": 351.24, "totalFreightCharges": 10.10, "tax1":30.10, "tax2":20.90, "totalSupplierPoAmount": 412.34, "fileName": "SUP1010203-PoDocument-Sample.pdf", "fileContent":"FileContent in Binary format--- JVBERi0xLjQKJeLjz9MKNCAwIG9iaiA8PC9Db2xvclNw" }

Transport and Packaging:
Column Properties
JSON Structure

Data Field

Data Type

Null Allowed

Description

Supplier Id

Text

No

Static Supplier ID provided by Microsoft to submit across all payloads for Recycling API's.

Supplier Name

Text

No

Supplier Name.

Supplier Job Id

Text

No

Existing Job Id for which Transportation was used.

Transport Supplier Name

Text

Yes

Sub-Contractor company name, if trucks are not owned by you.

Load Weight (In KGs)

Number

No

Total collection weight in KG's (to include all equpment, packaging, and pallets)

Pallet Quantity

Number

No

Total Pallets utilized in this collection/Job Id

Vehicle Start Point Address

Text

No

Full Address of vehicle starting location to collect this Job Id

Point To Point

Text

.No

Yes/No - Confirmation that vehicle has gone straight from MS Location to Supplier Location with no unattended vehicle stops.

Approved Secure Location Address

Text

Yes

Full Address of the Approved secure location Or N/A, if Point To Point = "Yes"

Mileage

Number

No

Total miles travelled in relation to the collection per vehicle (Vehicle starting point to ITAD facility)

Vehicle Quantity

Number

No

Total number of vehicles used for the collection or the percentage of the vehicle occupied by the Job ID - e.g. 0.5. 0.33, 1.0 , 2.0, 3.0

Vehicle Tonnage

Number

No

Tonnage of each vehicle (e.g. 26)

Fuel Type

Text

No

Fuel Type of each vehicle (e.g. Diesel/Petrol/ Electric / Hydrogen / Bio Based)

Total Packaging Weight In KGs

Number

No

Total Packaging weight in Job Level.

Packaging Material Type

Text

No

For e.g, Wood Pallets, Cardboard, etc.

packaging Weight In KGs

Number

No

Total packaging weight for the Material Type.

Recycled Material Content Percentage

Number

No

Recycled material content % for the material type.

Reused Packaging Percentage

Number

No

Reused Packaging % for the material type.

Reused Packaging Weight In KGs

Number

No

Total amount of the packaging weight used on this material type, which was Reused after the collection for Microsoft Note: All records must have a reported weight if none than report 0.00

Recycled Packaging Weight In KGs

Number

No

Total amount of the packaging weight used on this Material type, which was Recycled after the collection for Microsoft Note: All records must have a reported weight if none than report 0.00

Composted Packaging Weight In KGs

Number

No

Total amount of the packaging weight used on this Material type, which was Composted after the collection for Microsoft Note: All records must have a reported weight if none than report 0.00

Landfill Packaging Weight In KGs

Number

No

Total amount of the packaging weight used on this Material type, which went to a Landfill Note: All records must have a reported weight if none than report 0.00

Incinerated Packaging Weight In KGs

Number

No

Total amount of the packaging weight used on this Material type, which was Incinerated Note: All records must have a reported weight if none than report 0.00

{ "supplierId": "R001", "supplierName": "XYZ Recycling", "supplierJobId": "10002", "transportSupplierName": "XYZ Supplier (If different from self)", "loadWeightInKilos": 9282.50, "palletQuantity": 65, "vehicleStartPointAddress": "1 Microsoft way, Redmond", "pointToPoint": "Yes", "approvedSecureLocationAddress": "If pointToPoint is No, provide address here", "mileageInMiles": 15, "vehicleQuantity": 1, "vehicleTonnage": 26, "fuelType": "Petrol", "totalPackagingWeightInKilos": 250, "packagingDetails": [ { "packagingMaterialType": "Cardboard", "packagingWeightInKilos": 40, "recycledMaterialContentPercentage": 35, "reusedPackagingPercentage": 100, "reusedPackagingWeightInKilos": 36.50, "recycledPackagingWeightInKilos": 20.78, "compostedPackagingWeightInKilos": 89, "landfillPackagingWeightInKilos": 50, "incineratedPackagingWeightInKilos": 10 }, { "packagingMaterialType": "Wood Pallets", "packagingWeightInKilos": 210, "recycledMaterialContentPercentage": 50, "reusedPackagingPercentage": 50, "reusedPackagingWeightInKilos": 67.50, "recycledPackagingWeightInKilos": 70.10, "compostedPackagingWeightInKilos": 30, "landfillPackagingWeightInKilos": 350, "incineratedPackagingWeightInKilos": 30 } ] }

Material Audit:

Column Properties
JSON Structure

Data Field

Data Type

Null Allowed

Description

Supplier Id

Text

No

Static Supplier ID provided by Microsoft to submit across all payloads for Recycling API's.

Supplier Name

Text

No

Supplier Name.

Supplier Job Id

Text

No

Existing Job Id to send material audit information

Supplier Unit Type

Text

No

Supplier Unit Type / Category

Material Type

Text

No

Any material that is a part of the composition of the unit type (i.e. copper, gold, battery, lightbulb, etc.)

Material Weight Before Processing (In KGs)

Number

No

Total weight of material before processing in KGs.

Material Weight After Processing (In KGs)

Number

No

Total weight of material after processing in KGs.

Material Processing Type

Text

No

How was the element material processed? (i.e. smelted, shredded, etc.)

Channel Type

Text

Yes

Final customer to process the element material (i.e. vendor, smelter, recycler, etc.)

Recyclable Material Weight Before Processing (In KGs)

Number

No

Total weight of recyclable material before processing in KGs.

Material Efficiency Percentage

Number

No

Recycling efficiency % for material.

Material Purity

Number

No

Ratio of pure material / total processed material

File Name

Text

Yes

File name along with extension.

File Content

Binary

Yes

File content in binary format.

{ "supplierId": "R001", "supplierName": "XYZ Recycling", "supplierJobId": "10002", "supplierUnitType": "Server", "materialType": "Copper", "materialWeightBeforeProcessingInKg": 10.39, "materialWeightAfterProcessingInKg": 9.33, "materialProcessingType": "Shredded", "channelType": "Vendor", "recyclableMaterialWeightBeforeProcessingInKg": 5.36, "materialEfficiencyPercentage": 67.50, "materialPurity": 1.73, "fileName": "materialaudit-sample.pdf", "fileContent":"FileContent in Binary format--- JVBERi0xLjQKJeLjz9MKNCAwIG9iaiA8PC9Db2xvclNw" }

DBD(Data bearing devices):

Column Properties

1 .Data Field : Supplier Id

Data Type : Text

Null Allowed: No

Description : Static Supplier ID provided by Microsoft to submit across all payloads for Recycling API's

2. Data Field : Supplier Name

Data Type : Text

Null Allowed: No

Description : Supplier Name.

3.Data Field : Supplier Job Id

Data Type : Text

Null Allowed: No

Description : Existing Job Id.

4.Data Field : supplierJobType

Data Type : Text

Null Allowed: No

Description : Existing Job Type associated with this Job Id.

5.Data Field : supplierUnitId

Data Type : Text

Null Allowed: No

Description : Unique ID supplier uses to track a unit throughout the service

6.Data Field : supplierUnitType

Data Type : Text

Null Allowed: No

Description : Supplier Unit Type

7.Data Field : assetTagNumber

Data Type : Text

Null Allowed: Yes

Description : Microsoft Asset Tag number (Note: Units that do not bear a tag should report “NA”)

8.Data Field : assetTagNumber2

Data Type : Text

Null Allowed: Yes

Description : Additional Asset Tag number (Note: Units that do not bear a tag should report “NA”)

9.Data Field : serialNumber

Data Type : Text

Null Allowed: Yes

Description : Serial number (Note: Units that do not bear a Serial Number should report “NA”)

10.Data Field : msPoNumber

Data Type : Text

Null Allowed: Yes

Description : PO Number assciated with Microsoft.

11.Data Field : description

Data Type : Text

Null Allowed: Yes

Description : Description of the DBD

12.Data Field : manufacturer

Data Type : Text

Null Allowed: Yes

Description : Manufacturer of the DBD

13.Data Field : partNumber

Data Type : Text

Null Allowed: Yes

Description : Part Number if available

14.Data Field : model

Data Type : Text

Null Allowed: Yes

Description : Model of the DBD if available

15.Data Field : quantity

Data Type : Text

Null Allowed: No

Description : Quantity, of equipment being reported under this unit ID, wich allows for batch reporting on non-serialized equipment.

16.Data Field : weightInKilos

Data Type : Text

Null Allowed: No

Description : Device/component weight in kilos

17. Data Field : dataDeviceFormFactor

Data Type : Text

Null Allowed: No

Description : Data device form factor of the DBD. Valid values are listed below: HDD SSD USB PCIe_SSD NVDIMM Tape Flash HSM M2

18.Data Field : hddCount

Data Type : Text

Null Allowed: Yes

Description : Total count of HDD reported under this unit id.

19.Data Field : parentUnitId

Data Type : Text

Null Allowed: Yes

Description : Parts Harvesting: Parent Unit id associated with it.

20.Data Field : parentUnitType

Data Type : Text

Null Allowed: Yes

Description : Parts Harvesting: Parent unit type.

21.Data Field : parentUnitSerialNumber

Data Type : Text

Null Allowed: Yes

Description : Parts Harvesting: Serial number of parent unit id.

22.Data Field : parentUnitAssetTagNumber

Data Type : Text

Null Allowed: Yes

Description : Parts Harvesting: Asset tag number of parent unit id.

23.Data Field : dbdImages

Data Type : Text

Null Allowed: Yes

Description : Images being sent as byte array. This can be null or multiple images.

JSON Structure

{ "supplierId": "R004", "supplierName": "XYZ Recycling", "supplierJobId": "10002", "supplierJobType": "Standard/Destruction/Recycle", "dbdDetails": [ { "supplierUnitId": "S101", "supplierUnitType": "Server", "assetTagNumber": "73737377", "assetTagNumber2": null, "serialNumber": "132509492057", "description": "For accessories field only for mix/bulk/cables/other", "manufacturer": "LENOVA", "model": "Inspiron", "partNumber": "INS393939", "quantity": 1, "weightInKilos": 7.8, "dataDeviceFormFactor": "NVMe", "hddCount": 2, "parentUnitId": null, "parentUnitType": null, "parentUnitSerialNumber": null, "parentUnitAssetTagNumber": null }, { "supplierUnitId": "S102", "supplierUnitType": "Network Module", "assetTagNumber": "NA", "assetTagNumber2": "Sample Tag", "serialNumber": "13260942FDF0", "msPoNumber": "99777565", "description": "For accessories field only for mix/bulk/cables/other", "manufacturer": "MICRON", "model": "M500 2.5 SSD.", "partNumber": "MTFDDAK480MAV", "quantity": 2, "weightInKilos": 9, "dataDeviceFormFactor": "SAS", "hddCount": 6, "parentUnitId": "33737", "parentUnitType": "Server", "parentUnitSerialNumber": null, "parentUnitAssetTagNumber": null } ], "dbdImages": [ { "fileName": "dbdimagefilename-1.pdf", "fileContent": "......kNjMwYjkzNjRmY2VhOTM5ZmY+XS9Sb290IDEyIDAgUi9TaXplIDE0Pj4Kc3RhcnR4cmVmCjIw }, { "fileName": "imagefileName-2.jpg", "fileContent": "......TE3OTc5NTlkNjMwYjkzNjRmY2VhOTM5ZmY+XS9Sb290IDEyIDAgUi9TaXplIDE0Pj4Kc3RhcnR } ] }

Close Job:

1.Data Field : Supplier Id

Data Type : Text

Null Allowed: No

Description : Static Supplier ID provided by Microsoft to submit across all payloads

2.Data Field : Supplier Name

Data Type : Text

Null Allowed: No

Description : Supplier Name.

3.Data Field : Supplier Job Id

Data Type : Text

Null Allowed: No

Description : Parts Harvesting: Serial number of parent unit id.

4.Data Field : supplierJobType

Data Type : Text

Null Allowed: No

Description : Existing Job Type associated with this Job Id.

5.Data Field : jobStatus

Data Type : Text

Null Allowed: No

Description : CLOSED

JSON Structure

{ "supplierReportingDate": "2022-01-26T12:05", "supplierId": "R004", "supplierName": "XYZ Recycling", "supplierJobId": "10002", "supplierJobType": "Value Recovery", "jobStatus": "CLOSED" }

Recycling API Response:

Every API call will have a response in the form of JSON Structure.

Suppliers should validate the response and resend the payloads after fixing the issues listed in response object. Supplier teams should also store this response as log entries in their telemetry database to keep track of history.

The Error response object will be as below:

{ "correlationId": "96e1474f-a81c-480f-af02-3ba42491e760", "timeStamp": "2020-03-14T20:42:48.4385661Z", "errorResponses": [ { "supplierId": "R001", "supplierJobId": "10002", "supplierUnitId": "S101", "errorCode": "1004", "errorMessage": "Asset Quantity cannot be <= 0." } ], "successResponses": [ { "supplierId": "R001", "supplierJobId": "10002", "supplierUnitId": "S102" } ] }

errorResponses” attribute will give all the failures related to a single JobID/UnitID combination.

successResponses” attribute will give all the payloads which were successfully accepted related to a single JobID/UnitID combination.

Recycling API Error Code(s):

If payload validations for Job/Unit id's are *not* successful at Microsoft end, they are indicated by means of error code described as below: Suppliers should validate the error code/description and store it in their telemetry logs for tracking.

Error Code : 1001

Error Description : Supplier ID cannot be empty.

Comment :

Error Code : 1002

Error Description : Job ID cannot be empty.

Comment :

Error Code : 1003

Error Description : Unit ID cannot be empty.

Comment :

Error Code : 1004

Error Description : Asset Quantity cannot be <= 0.

Comment :

Error Code : 1005

Error Description : Company Code cannot be empty.

Comment :

Error Code : 1006

Error Description : Supplier Name cannot be empty.

Comment :

Error Code : 1007

Error Description : Job Type cannot be empty.

Comment :

Error Code : 1008

Error Description : Unit Type cannot be empty.

Comment :

Error Code : 1009

Error Description : Unit Type is not valid for the provided program type.

Comment :

Error Code : 1010

Error Description : Supplier ID is Invalid

Comment :

Error Code : 1011

Error Description : Supplier ID is not authorized to send data for this program type.

Comment :

Error Code : 1012

Error Description : Supplier Invoice Number cannot be empty.

Comment :

Error Code : 1013

Error Description : Supplier PO Number cannot be empty.

Comment :

Error Code : 1014

Error Description : Microsoft PO Number cannot be empty.

Comment :

Error Code : 1015

Error Description : Microsoft PO Currency cannot be empty.

Comment :

Error Code : 1016

Error Description : Supplier PO Currency cannot be empty.

Comment :

Error Code : 1017

Error Description : Invalid Collection Country Code.

Comment :

Error Code : 1018

Error Description : Invalid Processing Country Code.

Comment :

Error Code : 1019

Error Description : Collection address cannot be empty.

Comment :

Error Code : 1020

Error Description : Collection city cannot be empty.

Comment :

Error Code : 1021

Error Description : Collection zip code cannot be empty.

Comment :

Error Code : 1022

Error Description : Collection Date cannot be empty.

Comment :

Error Code : 1023

Error Description : Invalid Billing Country Code.

Comment :

Error Code : 1024

Error Description : Logistics Fee does not match with Invoice details.

Comment : Re-upload invoice details with logistics fee linked to the Job Id.

Error Code : 1025

Error Description : Minimum service Fee does not match with Invoice details.

Comment : Re-upload invoice details with minimum service fee linked to the Job Id.

Error Code : 1026

Error Description : Job ID does not exist!

Comment : If Certificates/DBD/PO Document/Invoice Document is being uploaded, Job Id should exist in the system based out of collection/disposition/invoice/credit.

Error Code : 1027

Error Description : Microsoft Invoice Number cannot be empty.

Comment :

Error Code : 1028

Error Description : Collection site code cannot be empty.

Comment :

Error Code : 1029

Error Description : Collection site name cannot be empty.

Comment :

Error Code : 1030

Error Description : Invalid AssetTag Number. Accepts alphanumeric and [,-\\/]. Blank spaces are not allowed.

Comment : Provide valid asset tag number for the unit id.

Error Code : 1031

Error Description : Invalid Serial Number. Accepts alphanumeric, blank and [,\\/=@-+.#]

Comment : Provide valid serial number for the unit id.

Error Code : 1032

Error Description : Forex conversion rate does't exist for this currency code. Pls. contact Microsoft team.

Comment :

Error Code : 1033

Error Description : Invalid Supplier PO currency provided for credit amounts

Comment :

Error Code : 1034

Error Description : Invalid MS PO currency provided for invoice amounts!

Comment :

Error Code : 1035

Error Description : Invalid currency code

Comment :

Error Code : 1036

Error Description : Currency mismatch from already provided data!

Comment : If Invoice/Credit details is already sent with an associated currency, it cannot be changed. Pls. contact Microsoft team.

Error Code : 1037

Error Description : Total supplier units exceeded max limit for posting data through API!

Comment : Limit 1000 units in every API call.

Error Code : 1038

Error Description : Supplier Invoice Number cannot be empty for invoiced Unit Id's.

Comment : When sending Invoice details, make sure all the unit id's have a SupplierInvoiceNumber linked to it.

Error Code : 1039

Error Description : Supplier PO Number cannot be empty for credit Unit Id's.

Comment : When sending Credit details, make sure all the unit id's have a SupplierPoNumber linked to it.

Error Code : 1040

Error Description : Supplier PO Number does not belong to any Job ID.

Comment :Link this Supplier PO Number with existing Job Id by uploading credit details.

Error Code : 1041

Error Description : Supplier Invoice Number does not belong to any Job ID.

Comment : Link this Supplier Invoice number with existing Job Id by uploading invoice details.

Error Code: 1042

Error Description: Invalid Job Unit Id. Collection doesn't exist. Dispostion can be sent directly only along with parent unit id.

Comment: Collection should exist if Disposition/Invoice details/Credit details is being uploaded. If Disposition is being uploaded without collection, then ParentUnitId needs to be linked with the unit id. When uploading Invoice/Credit details, collection and disposition should exist. For Buyback job, collection is not required.

Error Code: 1044

Error Description: At least one Unit Id should exist in Invoice details for job having LogisticsFee (or) MinimumServiceFee > 0.

Comment: If *Only* LogisticsFee and MinimumServiceFee exists, invoice details should be uploaded with atleast one reference of unit id with total fee as 0. This will link the Supplier Invoice Number with Job Id.

Error Code: 1045

Error Description: Invalid Disposition Type!

Comment: Disposition Type can be either Sold/Recycled/Redeployment

Error Code: 1046

Error Description: Disposition Type cannot be empty, if Unit Status is Disposed!

Comment: Provide the Disposition Type if Unit status is 'Disposed'.

Error Code: 1047

Error Description: Invalid Unit Status!

Comment: Unit Status can be either Received/Processing/Processed/Inventory/Disposed.

Error Code: 1048

Error Description: Supplier Received Date cannot be empty.

Comment: Collection cannot be sent with blank Received date.

Error Code: 1049

Error Description: Unit Status should be 'Disposed', if Disposition Type Or Disposition Date is being provided!

Comment:

Error Code: 1050

Error Description: Disposition Date cannot be empty, if Unit Status is Disposed!

Comment: Disposition Date and Disposition Type should be provided together when UnitStatus is 'Disposed'

Error Code: 1051

Error Description: Job Type is Invalid for this Program.

Comment: Check the valid Job Types in this documentation. Each ProgramType have a set of configurable Job Types set by business groups.

Error Code: 1052

Error Description: Invalid Client Company Code!

Comment: Check the company code listed in collection request form. If not listed, pls. check with respective program manager.

Error Code: 1053

Error Description: 'DataDeviceFormFactor' cannot be empty for data bearing devices!

Comment: When uploading DBD devices, "DataDeviceFormFactor" cannot be empty. Some examples are HDD, SSD, USB, PCIe_SSD, NVDIMM, Tape, Flash, HSM, M2

Error Code: 1054

Error Description: Destruction type does not exist or is Invalid!

Comment: Check Disposition section above for valid destruction type(s).

Error Code: 1055

Error Description: PO Amount cannot be <= 0!

Comment:

Error Code: 1056

Error Description: PO Amount does not match with credit details. Submit Credit details again with amount matching to the PO.

Comment: Submit Credit details again with amount matching to the PO.

Error Code: 1057

Error Description: PO document already submitted for Invoicing. No Changes are allowed.

Comment: The PO Document earlier uploaded has been sent for Invoicing. No changes are allowed at this point of time.

Error Code: 1058

Error Description: PO document is already uploaded for this 'SupplierPoNumber'. Pls. link the credit details with a different PO number.

Comment: Since PO Document is already uploaded, the given "SupplierPoNumber" cannot be linked with any unit id.

Error Code: 1059

Error Description: Parent Unit Id does not exist for this Job. Pls. upload the parent unit report and then parts harvested unit in order.

Comment: The ParentUnitId should already exist in the system. When uploading all the units in bulk, put the ParentUnitId details before parts harvested units when calling API.

Error Code: 1060

Error Description: Company code not enabled for automated Microsoft invoicing in SAP.

Comment: The company code is not enabled for automated invoicing in SAP. Currently only limited company codes are enabled.

Error Code: 1061

Error Description: PO document is not uploaded for the corresponding 'SupplierPoNumber'

Comment: Pls. upload the PO document before pushing Payment notifications report.

Error Code: 1062

Error Description: Disposition Date cannot be a future date!

Comment:

Error Code: 1063

Error Description: Triage Complete Date cannot be a future date!

Comment:

Error Code: 1064

Error Description: <TotalSupplierPoAmount>should be equal to the sum of <POAmount, Tax1, Tax2 and FreightCharges>.

Comment: When uploading PO Document with Tax details, the 'TotalSupplierPoAmount' should be equal to the sum of other amounts including Tax.

Error Code: 1065

Error Description: Sale Price should be > 0, when the item is 'Sold' and 'Disposed'.

Comment:

Error Code: 1066

Error Description: Weight of the device/hardware/parts cannot be <= 0.

Comment:

Error Code: 1100

Error Description: Parts Harvesting: Parts quantity cannot be 0!

Comment: If a unit id has ParentUnitId associated to it, the quantity cannot be 0.

Error Code: 1102

Error Description: Parts Harvesting: Weight of total parts cannot be 0!

Comment:

Error Code: 2001

Error Description: Error while inserting payload data.

Comment: Check the JSON payload for formatting issues.

Error Code: 3001

Error Description: Invalid file name!. Pls. provide only the file name of the certificate with valid characters.

Comment: File name needs to be without special characters and with extension.

Error Code: 3002

Error Description: Invalid type in header. Type can be Recycling/DataErasure/Destruction

Comment: When uploading certificates, provide the certificate type in header.

Error Code: 3003

Error Description: Supplier Unit Id cannot be empty for certificate of data erasure.

Comment: Data erasure certificates are uploaded for each unit id, which cannot be empty.

Error Code: 3004

Error Description: Invalid file content or file does not exist!

Comment: The content of the file sent as byte array is invalid.

Error Code: 4001

Error Description: Invalid year.

Comment: JSON value contains invalid year.

Error Code: 4002

Error Description: Invalid month.

Comment: JSON value contains invalid month.

Error Code: 5001

Error Description: Unable to validate 'Collection Ticket Number'. Pls. contact Cloud/MCIO team to check validation web service!

Comment: Pls. contact Microsoft ITAD team alias on Validation API service.

Error Code: 5002

Error Description: Invalid collection ticket number!

Comment: Provide an valid ticket number. For Cloud, an valid GDCO ticket number should be provided.

Error Code: 5003

Error Description: Invalid packaging material type!

Comment: Packaging Material Type should be provided as per configured values. Pls. contact Microsoft team to get a list of material type

Error Code: 5004

Error Description: Program type mismatch!

Comment: Job Id was linked with a different Program type. Pls. contact Microsoft team.

Error Code: 5005

Error Description: This Job is 'CLOSED'. No updates can be performed!

Comment: Pls. contact Microsoft team if changes exists after a Job is closed.

Error Code: 5006

Error Description: This Job is over the threshold limit(days) to accept payloads. No additions/updates can be performed at this time!

Comment: Pls. contact Microsoft team if a old job needs to be modified.