---
title: Update
slug: quickbooks/exSC-update
docTags: 
createdAt: 2024-03-06T10:30:58.135Z
---

The following is an example of updating a Bill. The QuickBooks Bill ID (id), Vendor Reference Id (VendorRef) and Sync Token (SyncToken)  are required to update the Bill.  (See [Bill](docId\:MpZPCquzR-OqlFEOnw3y9)&#x20;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 Bill
            Map<String, Object> billMap = new Map<String, Object>();
            List<Object> lineItemList = new List<Object>();
            List<Object> billList = new List<Object>(); 
            
//  Assign value of Opportunity to QuickBook Bill
            billMap.put('TxnDate','2024-04-26');
            billMap.put('DueDate','2024-05-26');
            billMap.put('Id','191');
            billMap.put('SyncToken','0');
            billMap.put('TrackingNumber','12');
            billMap.put('GlobalTaxCalculation','TaxInclusive');
            billMap.put('SalesTermRef' , new Map<String, Object>{'value' => '2' });
            billMap.put('VendorRef' , new Map<String, Object>{'value' => '83' });
            billMap.put('PrivateNote' , 'updated');
            
//  Assign value of OpportunityLineItem to QuickBook Bill
            Map<String, Object> lineItemMap = new Map<String, Object>(); 
            Map<String, Object> salesLineItemDetailMap = new Map<String, Object>(); 
            lineItemMap.put('DetailType','ItemBasedExpenseLineDetail');
            lineItemMap.put('Amount',100);
            salesLineItemDetailMap.put('ItemRef' , new Map<String, Object>{'value' => '19' });
            salesLineItemDetailMap.put('TaxCodeRef', new Map<String, Object>{'value' => 'NON' });
            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 Bill
            billMap.put('Line',lineItemList);
            billList.add(billMap);
            Map<String, Object> reqJSONMap = new Map<String, Object>(); 
            reqJSONMap.put('Bill' , billList); 
            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' , 'updateBill'); 
            finalReqMap.put('RequestJSON' , reqJSON); 
            finalReqMap.put('qbOrgId' , '4620816365285051610');
            // Required, if QuickBooks Multi-Org is enabled in Breadwinner. 
            finalReqMap.put('skipDML' , false); 
            System.debug('Request ::: ' + finalReqMap); 
            Map<String, Object> respMap = breadwinner_qbo.BreadwinnerQBAPI.call(finalReqMap);
            System.debug('Response ::: ' + respMap);
```

Response

```json
{
   action=updateBill,
   timestamp=1714122038660,
   validRequest=true,
   version=1.0
   responseJSON={
      "statusCode":200,
      "bill":[
         {
            "VendorRef":{
               "value":"83",
               "name":"CURL - Vendor"
            },
            "TxnDate":"2024-04-26",
            "TotalAmt":100.00,
            "SyncToken":"1",
            "sparse":false,
            "SFRecordID":"a01F300000GEyZgIAL",
            "SalesTermRef":{
               "value":"2"
            },
            "PrivateNote":"updated",
            "MetaData":{
               "LastUpdatedTime":"2024-04-26T02:00:35-07:00",
               "CreateTime":"2024-04-26T01:41:33-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",
                  "Amount":100.00
               }
            ],
            "Id":"191",
            "DueDate":"2024-05-26",
            "CurrencyRef":{
               "value":"USD",
               "name":"United States Dollar"
            },
            "Balance":100.00,
            "APAccountRef":{
               "value":"33",
               "name":"Accounts Payable (A/P)"
            }
         }
      ]
   }
}
```
:::

