---
title: Update
slug: quickbooks/update
docTags: 
createdAt: 2024-03-08T07:30:02.687Z
---

The following is an example of update Purchase Order. The QuickBooks Purchase Order Id (id), Vendor Reference Id (VendorRef) and Sync Token (SyncToken)  are required to update the Purchase Order (See [Purchase Order](docId\:j53AXK0QEbupb8e_WaV9-) for the available fields).

:::hint{type="info"}
Note:  You can only update one record at a time.

- When you want to update specific fields of an entity without affecting others, use a sparse update operation by setting sparse= 'true' in your request. This approach is more efficient and less prone to unintended changes than a full update.
:::

:::CodeblockTabs
Request

```apex
//  Create a Map to store all the data of a Purchase Order  
            Map<String, Object> purchaseOrderMap = new Map<String, Object>(); 
            List<Object> lineItemList = new List<Object>();
            List<Object> purchaseOrderList = new List<Object>(); 
            
//  Assign value of Opportunity to QuickBook PurchaseOrder
            purchaseOrderMap.put('TxnDate','2024-04-26');
            purchaseOrderMap.put('DueDate','2024-05-26');
            purchaseOrderMap.put('Id','193');
            purchaseOrderMap.put('SyncToken','0');
            purchaseOrderMap.put('PurchaseOrderEmail' , new Map<String, Object>{'EmailAddress' =>'abc@gmail.com'});
            purchaseOrderMap.put('VendorRef' , new Map<String, Object>{'value' => '83' });
            purchaseOrderMap.put('PrivateNote' , 'updated');
               
//  Assign value of OpportunityLineItem to QuickBook PurchaseOrder
            Map<String, Object> lineItemMap = new Map<String, Object>(); 
            Map<String, Object> salesLineItemDetailMap = new Map<String, Object>(); 
            lineItemMap.put('Description','Updated');
            lineItemMap.put('DetailType','ItemBasedExpenseLineDetail');
            lineItemMap.put('Amount',100);
            salesLineItemDetailMap.put('ItemRef' , new Map<String, Object>{'value' => '19' });
            salesLineItemDetailMap.put('Qty','10');
            salesLineItemDetailMap.put('UnitPrice','10');
            if(lineItemMap.get('DetailType') == 'SalesItemLineDetail'){
            	lineItemMap.put('SalesItemLineDetail',salesLineItemDetailMap); 
               }else if(lineItemMap.get('DetailType') == 'ItemBasedExpenseLineDetail'){
                lineItemMap.put('ItemBasedExpenseLineDetail',salesLineItemDetailMap); 
               }
            lineItemList.add(lineItemMap);

//  Adding the Line Items to QuickBook PurchaseOrder
            purchaseOrderMap.put('Line',lineItemList);
            purchaseOrderList.add(purchaseOrderMap);
            Map<String, Object> reqJSONMap = new Map<String, Object>(); 
            reqJSONMap.put('PurchaseOrder' , purchaseOrderList); 
            String reqJSON = JSON.serialize(reqJSONMap); 
            Map<String, Object> finalReqMap = new Map<String, Object>(); 
            Map<String,Object> reqOptions = new Map<String,Object>(); 
            finalReqMap.put('options' , reqOptions); 
            finalReqMap.put('version' , '1.0'); 
            finalReqMap.put('action' , 'updatePurchaseOrder'); 
            finalReqMap.put('RequestJSON' , reqJSON);
            // Required, if QuickBooks Multi-Org is enabled in Breadwinner.  
            finalReqMap.put('qbOrgId' , '4620816365285051610');
            finalReqMap.put('skipDML' , false); 
            System.debug('Request ::: ' + finalReqMap); 
            Map<String, Object> respMap = breadwinner_qbo.BreadwinnerQBAPI.call(finalReqMap);
            System.debug('Response ::: ' + respMap);
```

Response

```json
{
   action=updatePurchaseOrder,
   timestamp=1714122665865,
   validRequest=true,
   version=1.0,
   responseJSON={
      "statusCode":200,
      "purchaseOrder":[
         {
            "VendorRef":{
               "value":"83",
               "name":"CURL - Vendor"
            },
            "TxnDate":"2024-04-26",
            "TotalAmt":100.00,
            "SyncToken":"1",
            "sparse":false,
            "SFRecordID":"a01F300000GEyaeIAD",
            "PrivateNote":"updated",
            "POStatus":"Open",
            "MetaData":{
               "LastUpdatedTime":"2024-04-26T02:11:04-07:00",
               "CreateTime":"2024-04-26T02:07:22-07:00"
            },
            "Line":[
               {
                  "LineNum":1,
                  "ItemBasedExpenseLineDetail":{
                     "UnitPrice":10,
                     "TaxCodeRef":{
                        "value":"NON"
                     },
                     "Qty":10,
                     "ItemRef":{
                        "value":"19",
                        "name":"GenWatt Diesel 1000kW"
                     },
                     "BillableStatus":"NotBillable"
                  },
                  "Id":"2",
                  "DetailType":"ItemBasedExpenseLineDetail",
                  "Description":"Updated",
                  "Amount":100.00
               }
            ],
            "Id":"193",
            "CustomField":[
               
            ],
            "CurrencyRef":{
               "value":"USD",
               "name":"United States Dollar"
            },
            "APAccountRef":{
               "value":"33",
               "name":"Accounts Payable (A/P)"
            }
         }
      ]
   }
}
```
:::

