---
title: Applying Payment to an Invoice
slug: quickbooks/applying-payment-to-an-invoice
docTags: 
createdAt: 2023-12-06T12:41:21.999Z
---

With the Global API, you can create a payment and have that payment link to one or more invoices.

This is similar to the [Create Payment Request ](docId:9yy4t65IZTAdQbqKLKGmD) but @create additional "Line" and "LinkedTxn" parameters.

:::CodeblockTabs
Request

```apex
//  Create a Map to store all the data of a Payment
Map<String, Object> paymentMap = new Map<String, Object>(); 
paymentMap.put('TotalAmt','20');
paymentMap.put('DisplayName','Breadwinner Inc');
paymentMap.put('CustomerRef' , new Map<String, Object>{'value' => '70'});

// Link first Invoice to a Payment
Map<String,Object> lineMap = new Map<String, Object>();
lineMap.put('Amount','10');

Map<String,Object> linkedTxnMap = new Map<String, Object>();
linkedTxnMap.put('TxnId','233');
linkedTxnMap.put('TxnType','Invoice');

List<object> linkedTxnList = new List<object>();
linkedTxnList.add(linkedTxnMap);

lineMap.put('LinkedTxn',linkedTxnList);

// Link second Invoice to a Payment
Map<String,Object> paymentLineMap = new Map<String, Object>();
paymentLineMap.put('Amount','10');

Map<String,Object> paymentLinkedTxnMap = new Map<String, Object>();
paymentLinkedTxnMap.put('TxnId','234');
paymentLinkedTxnMap.put('TxnType','Invoice');

List<object> paymentLinkedTxnList = new List<object>();
paymentLinkedTxnList.add(paymentLinkedTxnMap);

paymentLineMap.put('LinkedTxn',paymentLinkedTxnList);

List<object> lineList = new List<object>();
lineList.add(lineMap);
lineList.add(paymentLineMap);
paymentMap.put('Line' ,lineList);

//  Initializing the RequestJSON Data to be passed.
Map<String, Object> requestJSONMap = new Map<String, Object>();
requestJSONMap.put('payments', new List<Object>{paymentMap});
String reqJSON = JSON.serialize(requestJSONMap);

Map<String, Object> reqObj = new Map<String, Object>();
reqObj.put('version', '1.0');
reqObj.put('action', 'createPayment');
reqObj.put('requestJSON', reqJSON);
//Required, if QuickBooks Multi-Org is enabled in Breadwinner. 
//reqObj.put('qbOrgId', '4620816365285051610');
System.debug(reqJSON);

//  Placing a request to Breadwinner Global API
Map<String, Object> respMap = breadwinner_qbo.BreadwinnerQBAPI.call(reqObj);
System.debug(respMap);
```

Response

```json
{
   action=createPayment,
   responseJSON={
  "statusCode": 200,
  "payments": [
    {
      "UnappliedAmt": 0,
      "TxnDate": "2023-12-11",
      "TotalAmt": 20,
      "SyncToken": "0",
      "sparse": false,
      "MetaData": {
        "LastUpdatedTime": "2023-12-11T02:44:44-08:00",
        "CreateTime": "2023-12-11T02:44:44-08:00"
      },
      "Line": [
        {
          "LinkedTxn": [
            {
              "TxnType": "Invoice",
              "TxnId": "233"
            }
          ],
          "Amount": 10
        },
        {
          "LinkedTxn": [
            {
              "TxnType": "Invoice",
              "TxnId": "234"
            }
          ],
          "Amount": 10
        }
      ],
      "Id": "238",
      "DepositToAccountRef": {
        "value": "4"
      },
      "CustomerRef": {
        "value": "70",
        "name": "Link two Inv to Payment"
      },
      "CurrencyRef": {
        "value": "USD",
        "name": "United States Dollar"
      }
    }
  ]
},
   timestamp=1661164863899,
   validRequest=true,
   version=1.0
}
```
:::

Do you want to know the list of supported parameters for a Payment? See [here](docId\:ASRn2GZJqlQI_5JeXDwaa).
