> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://beta-docs.payabli.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://beta-docs.payabli.com/_mcp/server.

# Manage bills with the API

In Payabli, bills represent a bill from a vendor that a paypoint is expected to pay. Use managed payables with Payabli to turn those payouts to vendors into an income stream.

> **Tip**
>
> Learn how to use our OCR engine to scrape documents and create bills: [Use the OCR Engine](/developer-guides/pay-ops-ocr-guide)

## Basic bill workflow

1. When you get an invoice from a vendor or supplier, add it to Payabli as a bill via the API, File Exchange, or the web.
2. Update or delete bills, and then queue them for approval.
3. After bills are approved, make payout requests, and you can pay one or many bills.

Via an enablement process, your vendors are contacted to help decide on a payment method. The goal is that they choose to receive payments through virtual cards for ease, speed, and security of payment.

## Considerations

Keep these points in mind when working with bills:

* You don't have to use Payabli's bill engine to make a payout. When making a payout request, set the query parameter `doNotCreateBills` to `true`.
* We strongly recommend including bill images with your bills. Including bill images can make payouts faster, more accurate,  and prevent problems.
* You can pay more than one bill with one payout request. If several active bills added, queued, and ready to be paid, you can make a payout request to pay all active bills. Remittance information for that single payout request will include the details for all of the paid bills.
* Bill approval isn't required. If a bill status is *Active* or *Approved* it can be sent for payout. If a bill status is *Sent to Approval* or *Pending Approval* you can't send it for payout.
* You can use the [OCR engine](/api-reference/import/ocr-a-base64-encoded-string) to capture data from uploaded bill images.

## Create a bill

To create a single bill, send a POST request to `/api/Bill/single/{entry}`.

For complete information, see the [API reference](/api-reference/bill/add-bill).

This example adds a bill to the entrypoint with ID `8cfec329267`. The bill is for a vendor with the `vendorNumber` "'1234-A". The bill number is *ABC-123*, and the request includes an uploaded bill image, and optional fields like comments.

### Request

POST [https://api-sandbox.payabli.com/api/Bill/single/\{entry}](https://api-sandbox.payabli.com/api/Bill/single/\{entry})

**`CreateBill`**

```curl CreateBill
curl -X POST https://api-sandbox.payabli.com/api/Bill/single/8cfec329267 \
     -H "requestToken: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{
  "accountingField1": "MyInternalId",
  "attachments": [
    {
      "filename": "my-doc.pdf",
      "ftype": "pdf",
      "furl": "https://mysite.com/my-doc.pdf"
    }
  ],
  "billDate": "2024-07-01",
  "billItems": [
    {
      "itemCost": 5,
      "itemCategories": [
        "deposits"
      ],
      "itemCommodityCode": "010",
      "itemDescription": "Deposit for materials",
      "itemMode": 0,
      "itemProductCode": "M-DEPOSIT",
      "itemProductName": "Materials deposit",
      "itemQty": 1,
      "itemTaxAmount": 7,
      "itemTaxRate": 0.075,
      "itemTotalAmount": 123,
      "itemUnitOfMeasure": "SqFt"
    }
  ],
  "billNumber": "ABC-123",
  "comments": "Deposit for materials",
  "dueDate": "2024-07-01",
  "endDate": "2024-07-01",
  "frequency": "monthly",
  "mode": 0,
  "netAmount": "3762.87",
  "status": -99,
  "terms": "NET30",
  "vendor": {
    "vendorNumber": "1234-A"
  }
}'
```

**`CreateBill`**

```python CreateBill
import requests

url = "https://api-sandbox.payabli.com/api/Bill/single/8cfec329267"

payload = {
    "accountingField1": "MyInternalId",
    "attachments": [
        {
            "filename": "my-doc.pdf",
            "ftype": "pdf",
            "furl": "https://mysite.com/my-doc.pdf"
        }
    ],
    "billDate": "2024-07-01",
    "billItems": [
        {
            "itemCost": 5,
            "itemCategories": ["deposits"],
            "itemCommodityCode": "010",
            "itemDescription": "Deposit for materials",
            "itemMode": 0,
            "itemProductCode": "M-DEPOSIT",
            "itemProductName": "Materials deposit",
            "itemQty": 1,
            "itemTaxAmount": 7,
            "itemTaxRate": 0.075,
            "itemTotalAmount": 123,
            "itemUnitOfMeasure": "SqFt"
        }
    ],
    "billNumber": "ABC-123",
    "comments": "Deposit for materials",
    "dueDate": "2024-07-01",
    "endDate": "2024-07-01",
    "frequency": "monthly",
    "mode": 0,
    "netAmount": "3762.87",
    "status": -99,
    "terms": "NET30",
    "vendor": { "vendorNumber": "1234-A" }
}
headers = {
    "requestToken": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

**`CreateBill`**

```javascript CreateBill
const url = 'https://api-sandbox.payabli.com/api/Bill/single/8cfec329267';
const options = {
  method: 'POST',
  headers: {requestToken: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"accountingField1":"MyInternalId","attachments":[{"filename":"my-doc.pdf","ftype":"pdf","furl":"https://mysite.com/my-doc.pdf"}],"billDate":"2024-07-01","billItems":[{"itemCost":5,"itemCategories":["deposits"],"itemCommodityCode":"010","itemDescription":"Deposit for materials","itemMode":0,"itemProductCode":"M-DEPOSIT","itemProductName":"Materials deposit","itemQty":1,"itemTaxAmount":7,"itemTaxRate":0.075,"itemTotalAmount":123,"itemUnitOfMeasure":"SqFt"}],"billNumber":"ABC-123","comments":"Deposit for materials","dueDate":"2024-07-01","endDate":"2024-07-01","frequency":"monthly","mode":0,"netAmount":"3762.87","status":-99,"terms":"NET30","vendor":{"vendorNumber":"1234-A"}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

**`CreateBill`**

```go CreateBill
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api-sandbox.payabli.com/api/Bill/single/8cfec329267"

	payload := strings.NewReader("{\n  \"accountingField1\": \"MyInternalId\",\n  \"attachments\": [\n    {\n      \"filename\": \"my-doc.pdf\",\n      \"ftype\": \"pdf\",\n      \"furl\": \"https://mysite.com/my-doc.pdf\"\n    }\n  ],\n  \"billDate\": \"2024-07-01\",\n  \"billItems\": [\n    {\n      \"itemCost\": 5,\n      \"itemCategories\": [\n        \"deposits\"\n      ],\n      \"itemCommodityCode\": \"010\",\n      \"itemDescription\": \"Deposit for materials\",\n      \"itemMode\": 0,\n      \"itemProductCode\": \"M-DEPOSIT\",\n      \"itemProductName\": \"Materials deposit\",\n      \"itemQty\": 1,\n      \"itemTaxAmount\": 7,\n      \"itemTaxRate\": 0.075,\n      \"itemTotalAmount\": 123,\n      \"itemUnitOfMeasure\": \"SqFt\"\n    }\n  ],\n  \"billNumber\": \"ABC-123\",\n  \"comments\": \"Deposit for materials\",\n  \"dueDate\": \"2024-07-01\",\n  \"endDate\": \"2024-07-01\",\n  \"frequency\": \"monthly\",\n  \"mode\": 0,\n  \"netAmount\": \"3762.87\",\n  \"status\": -99,\n  \"terms\": \"NET30\",\n  \"vendor\": {\n    \"vendorNumber\": \"1234-A\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("requestToken", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

**`CreateBill`**

```ruby CreateBill
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.payabli.com/api/Bill/single/8cfec329267")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["requestToken"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"accountingField1\": \"MyInternalId\",\n  \"attachments\": [\n    {\n      \"filename\": \"my-doc.pdf\",\n      \"ftype\": \"pdf\",\n      \"furl\": \"https://mysite.com/my-doc.pdf\"\n    }\n  ],\n  \"billDate\": \"2024-07-01\",\n  \"billItems\": [\n    {\n      \"itemCost\": 5,\n      \"itemCategories\": [\n        \"deposits\"\n      ],\n      \"itemCommodityCode\": \"010\",\n      \"itemDescription\": \"Deposit for materials\",\n      \"itemMode\": 0,\n      \"itemProductCode\": \"M-DEPOSIT\",\n      \"itemProductName\": \"Materials deposit\",\n      \"itemQty\": 1,\n      \"itemTaxAmount\": 7,\n      \"itemTaxRate\": 0.075,\n      \"itemTotalAmount\": 123,\n      \"itemUnitOfMeasure\": \"SqFt\"\n    }\n  ],\n  \"billNumber\": \"ABC-123\",\n  \"comments\": \"Deposit for materials\",\n  \"dueDate\": \"2024-07-01\",\n  \"endDate\": \"2024-07-01\",\n  \"frequency\": \"monthly\",\n  \"mode\": 0,\n  \"netAmount\": \"3762.87\",\n  \"status\": -99,\n  \"terms\": \"NET30\",\n  \"vendor\": {\n    \"vendorNumber\": \"1234-A\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

**`CreateBill`**

```java CreateBill
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api-sandbox.payabli.com/api/Bill/single/8cfec329267")
  .header("requestToken", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"accountingField1\": \"MyInternalId\",\n  \"attachments\": [\n    {\n      \"filename\": \"my-doc.pdf\",\n      \"ftype\": \"pdf\",\n      \"furl\": \"https://mysite.com/my-doc.pdf\"\n    }\n  ],\n  \"billDate\": \"2024-07-01\",\n  \"billItems\": [\n    {\n      \"itemCost\": 5,\n      \"itemCategories\": [\n        \"deposits\"\n      ],\n      \"itemCommodityCode\": \"010\",\n      \"itemDescription\": \"Deposit for materials\",\n      \"itemMode\": 0,\n      \"itemProductCode\": \"M-DEPOSIT\",\n      \"itemProductName\": \"Materials deposit\",\n      \"itemQty\": 1,\n      \"itemTaxAmount\": 7,\n      \"itemTaxRate\": 0.075,\n      \"itemTotalAmount\": 123,\n      \"itemUnitOfMeasure\": \"SqFt\"\n    }\n  ],\n  \"billNumber\": \"ABC-123\",\n  \"comments\": \"Deposit for materials\",\n  \"dueDate\": \"2024-07-01\",\n  \"endDate\": \"2024-07-01\",\n  \"frequency\": \"monthly\",\n  \"mode\": 0,\n  \"netAmount\": \"3762.87\",\n  \"status\": -99,\n  \"terms\": \"NET30\",\n  \"vendor\": {\n    \"vendorNumber\": \"1234-A\"\n  }\n}")
  .asString();
```

**`CreateBill`**

```php CreateBill
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api-sandbox.payabli.com/api/Bill/single/8cfec329267', [
  'body' => '{
  "accountingField1": "MyInternalId",
  "attachments": [
    {
      "filename": "my-doc.pdf",
      "ftype": "pdf",
      "furl": "https://mysite.com/my-doc.pdf"
    }
  ],
  "billDate": "2024-07-01",
  "billItems": [
    {
      "itemCost": 5,
      "itemCategories": [
        "deposits"
      ],
      "itemCommodityCode": "010",
      "itemDescription": "Deposit for materials",
      "itemMode": 0,
      "itemProductCode": "M-DEPOSIT",
      "itemProductName": "Materials deposit",
      "itemQty": 1,
      "itemTaxAmount": 7,
      "itemTaxRate": 0.075,
      "itemTotalAmount": 123,
      "itemUnitOfMeasure": "SqFt"
    }
  ],
  "billNumber": "ABC-123",
  "comments": "Deposit for materials",
  "dueDate": "2024-07-01",
  "endDate": "2024-07-01",
  "frequency": "monthly",
  "mode": 0,
  "netAmount": "3762.87",
  "status": -99,
  "terms": "NET30",
  "vendor": {
    "vendorNumber": "1234-A"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'requestToken' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

**`CreateBill`**

```csharp CreateBill
using RestSharp;

var client = new RestClient("https://api-sandbox.payabli.com/api/Bill/single/8cfec329267");
var request = new RestRequest(Method.POST);
request.AddHeader("requestToken", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"accountingField1\": \"MyInternalId\",\n  \"attachments\": [\n    {\n      \"filename\": \"my-doc.pdf\",\n      \"ftype\": \"pdf\",\n      \"furl\": \"https://mysite.com/my-doc.pdf\"\n    }\n  ],\n  \"billDate\": \"2024-07-01\",\n  \"billItems\": [\n    {\n      \"itemCost\": 5,\n      \"itemCategories\": [\n        \"deposits\"\n      ],\n      \"itemCommodityCode\": \"010\",\n      \"itemDescription\": \"Deposit for materials\",\n      \"itemMode\": 0,\n      \"itemProductCode\": \"M-DEPOSIT\",\n      \"itemProductName\": \"Materials deposit\",\n      \"itemQty\": 1,\n      \"itemTaxAmount\": 7,\n      \"itemTaxRate\": 0.075,\n      \"itemTotalAmount\": 123,\n      \"itemUnitOfMeasure\": \"SqFt\"\n    }\n  ],\n  \"billNumber\": \"ABC-123\",\n  \"comments\": \"Deposit for materials\",\n  \"dueDate\": \"2024-07-01\",\n  \"endDate\": \"2024-07-01\",\n  \"frequency\": \"monthly\",\n  \"mode\": 0,\n  \"netAmount\": \"3762.87\",\n  \"status\": -99,\n  \"terms\": \"NET30\",\n  \"vendor\": {\n    \"vendorNumber\": \"1234-A\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

**`CreateBill`**

```swift CreateBill
import Foundation

let headers = [
  "requestToken": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "accountingField1": "MyInternalId",
  "attachments": [
    [
      "filename": "my-doc.pdf",
      "ftype": "pdf",
      "furl": "https://mysite.com/my-doc.pdf"
    ]
  ],
  "billDate": "2024-07-01",
  "billItems": [
    [
      "itemCost": 5,
      "itemCategories": ["deposits"],
      "itemCommodityCode": "010",
      "itemDescription": "Deposit for materials",
      "itemMode": 0,
      "itemProductCode": "M-DEPOSIT",
      "itemProductName": "Materials deposit",
      "itemQty": 1,
      "itemTaxAmount": 7,
      "itemTaxRate": 0.075,
      "itemTotalAmount": 123,
      "itemUnitOfMeasure": "SqFt"
    ]
  ],
  "billNumber": "ABC-123",
  "comments": "Deposit for materials",
  "dueDate": "2024-07-01",
  "endDate": "2024-07-01",
  "frequency": "monthly",
  "mode": 0,
  "netAmount": "3762.87",
  "status": -99,
  "terms": "NET30",
  "vendor": ["vendorNumber": "1234-A"]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/Bill/single/8cfec329267")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

A successful response returns the bill ID in the `responseData` field.

### Response (200)

```json
{
  "isSuccess": true,
  "responseCode": 1,
  "responseData": 6101,
  "responseText": "Success"
}
```

If your workflow requires bill approval, you can send the bill to approval with the API. For more information, see [Send a bill to approval](/api-reference/bill/send-a-bill-to-approval).

After your bill is approved you can make a payout request to pay the bill. For more information, see [Make a payout request](/api-reference/moneyout/authorize-a-transaction-for-payout).

## Import bills

You can import a list of bills into Payabli using the API. This is useful if you have a large number of bills to add at once, or if you want to automate the process. Before you get started, download the example CSV file and open it with the editor of your choice. Use it as an example to help you build your import file.

Download CSV

To create a bill, send a POST request to the `/api/Import/billsForm/{entrypoint}` endpoint, with an attached CSV file.

This example imports billImport.csv for the entrypoint `e56ce00572`.

### Request

POST [https://api-sandbox.payabli.com/api/Import/billsForm/\{entry}](https://api-sandbox.payabli.com/api/Import/billsForm/\{entry})

**`ImportBills`**

```curl ImportBills
curl -X POST https://api-sandbox.payabli.com/api/Import/billsForm/8cfec329267 \
     -H "requestToken: <apiKey>" \
     -H "Content-Type: multipart/form-data" \
     -F file=@<file1>
```

**`ImportBills`**

```python ImportBills
import requests

url = "https://api-sandbox.payabli.com/api/Import/billsForm/8cfec329267"

files = { "file": "open('<file1>', 'rb')" }
headers = {"requestToken": "<apiKey>"}

response = requests.post(url, files=files, headers=headers)

print(response.json())
```

**`ImportBills`**

```javascript ImportBills
const url = 'https://api-sandbox.payabli.com/api/Import/billsForm/8cfec329267';
const form = new FormData();
form.append('file', '<file1>');

const options = {method: 'POST', headers: {requestToken: '<apiKey>'}};

options.body = form;

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

**`ImportBills`**

```go ImportBills
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api-sandbox.payabli.com/api/Import/billsForm/8cfec329267"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001--\r\n")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("requestToken", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

**`ImportBills`**

```ruby ImportBills
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.payabli.com/api/Import/billsForm/8cfec329267")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["requestToken"] = '<apiKey>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001--\r\n"

response = http.request(request)
puts response.read_body
```

**`ImportBills`**

```java ImportBills
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api-sandbox.payabli.com/api/Import/billsForm/8cfec329267")
  .header("requestToken", "<apiKey>")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001--\r\n")
  .asString();
```

**`ImportBills`**

```php ImportBills
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api-sandbox.payabli.com/api/Import/billsForm/8cfec329267', [
  'multipart' => [
    [
        'name' => 'file',
        'filename' => '<file1>',
        'contents' => null
    ]
  ]
  'headers' => [
    'requestToken' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

**`ImportBills`**

```csharp ImportBills
using RestSharp;

var client = new RestClient("https://api-sandbox.payabli.com/api/Import/billsForm/8cfec329267");
var request = new RestRequest(Method.POST);
request.AddHeader("requestToken", "<apiKey>");
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

**`ImportBills`**

```swift ImportBills
import Foundation

let headers = ["requestToken": "<apiKey>"]
let parameters = [
  [
    "name": "file",
    "fileName": "<file1>"
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/Import/billsForm/8cfec329267")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

A successful request returns a JSON response with the number of added and rejected records, and any errors. The imported data is now available for use, and you can confirm by checking PartnerHub or PayHub.

### Response (200)

```json
{
  "isSuccess": true,
  "pageIdentifier": "null",
  "responseCode": 1,
  "responseData": {
    "added": 26,
    "errors": [
      "errors",
      "errors"
    ],
    "rejected": 2
  },
  "responseText": "Success"
}
```

> **Check**
>
> The `responseData` object contains the number of records added and rejected. The `errors` field contains any errors that occurred during the import process.

After you import bills, you can manage them with the API. For example, you can update or delete bills, send them for approval, and create payout requests.

## Manage bills

You can also manage your bills via the API. See these endpoint references for more information:

* [Update a bill](/api-reference/bill/update-bill)
* [Delete a bill](/api-reference/bill/delete-bill)
* [Send a bill to approval](/api-reference/bill/send-a-bill-to-approval)
* [Approve a bill](/api-reference/bill/approve-or-disapprove-a-bill)