---
title: "Sync Bill"
method: POST
path: "/bills/{bill_id}/sync"
tags: ["Bills"]
---

# Sync Bill

`POST /bills/{bill_id}/sync`

## Request

- Base URL: `https://api.meow.com/v1`
- URL: `https://api.meow.com/v1/bills/{bill_id}/sync`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/meow/apis/meow-api/docs/bills/:bill_id/sync/post.ts> (a function with typed inputs; its response is checked against the schema)

Queues an already-mapped bill for another sync attempt with your accounting system.

## Path parameters

- `bill_id` string, uuid, required: The bill ID.

## Headers

- `x-entity-id` string, uuid

## Response `200`

Successful Response

- BillResponse
  - `id` string, uuid, required: Identifier for this bill.
  - `status` 'CANCELED' | 'DRAFT_PROCESSING' | 'DRAFT' | 'PAYMENT_INFO_NEEDED' | 'PENDING' | 'APPROVED' | 'REJECTED' | 'SCHEDULED' | 'PAYMENT_INITIATED' | 'PAYMENT_DELIVERED' | 'PAYMENT_FAILED' | 'PAYMENT_CANCELED', required
  - `vendor_name` string, required: The name of the vendor.
  - `invoice_number` string, nullable: The invoice number.
  - `description` string, nullable: Description of the bill.
  - `memo` string, nullable: Memo for the bill.
  - `bill_date` string, date: ISO 8601 full-date in the format `YYYY-MM-DD` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `bill_due_date` string, date: ISO 8601 full-date in the format `YYYY-MM-DD` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `bill_total` string, nullable: The total amount of the bill.
  - `currency` 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BOV' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHE' | 'CHF' | 'CHW' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'COU' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRU' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SLE' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STN' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'USN' | 'UYI' | 'UYU' | 'UYW' | 'UZS' | 'VED' | 'VES' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XAG' | 'XAU' | 'XBA' | 'XBB' | 'XBC' | 'XBD' | 'XCD' | 'XDR' | 'XOF' | 'XPD' | 'XPF' | 'XPT' | 'XSU' | 'XTS' | 'XUA' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWG' | 'ZWL'
  - `payment_type` 'ACH' | 'CRYPTO' | 'INTERNATIONAL_PAYMENT_FX' | 'WIRE' | 'CHECK'
  - `contact_id` string, uuid, nullable: The ID of the associated contact.
  - `category_id` string, uuid, nullable: The spend category this bill is coded to, if any.
  - `category_name` string, nullable: The name of the spend category, if any.
  - `creation_source` 'USER' | 'EMAIL' | 'SCHEDULE', required
  - `created_by` string, required: Who created the bill.
  - `created_at` string, date-time, required: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `updated_at` string, date-time: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `submitted_at` string, date-time: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `submitted_by` string, nullable: Who submitted the bill.
  - `paid_at` string, date-time: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `paid_by` string, nullable: Who paid the bill.
  - `scheduled_at` string, date-time: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `resolved_at` string, date-time: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `canceled_at` string, date-time: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `canceled_by` string, nullable: Who canceled the bill.
  - `bill_schedule_id` string, uuid, nullable: The recurring schedule this bill belongs to, if any.
  - `ordinal` integer, nullable: The bill's position in its recurring schedule (template is 0).
  - `line_items` BillLineItemResponse[]: Line items for the bill.
    - `id` string, uuid, required: Identifier for this line item.
    - `amount` string, required: The unit amount for the line, in the bill's currency.
    - `quantity` string, nullable: Quantity for an itemized line; omitted for an expense line.
    - `description` string, required: What this line is for.
    - `type` 'EXPENSE' | 'ITEM', required
    - `amount_total` string, required: The line total: the unit amount times the quantity for an itemized line, or the unit amount for an expense line.
    - `split_group` string, uuid, nullable: Identifier shared by expense lines that allocate one original line.
    - `expense_account_external_id` string, nullable: The expense account this line is mapped to in your accounting system, as set by `POST /bills/{bill_id}/accounting-mappings` or the line's expense-account endpoint. Null when the line is not mapped yet.
    - `class_external_id` string, nullable: The QuickBooks Class this line is mapped to, when your accounting settings collect one. Null when Class is off for your entity or the line has none.
  - `bill_payment_details` BillPaymentDetailsResponse
    - `account_id` string, nullable: The account this bill will be paid from, in the same id format returned by `GET /accounts`.
    - `payment_type` 'ACH' | 'CRYPTO' | 'INTERNATIONAL_PAYMENT_FX' | 'WIRE' | 'CHECK'
    - `currency` 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BOV' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHE' | 'CHF' | 'CHW' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'COU' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRU' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SLE' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STN' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'USN' | 'UYI' | 'UYU' | 'UYW' | 'UZS' | 'VED' | 'VES' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XAG' | 'XAU' | 'XBA' | 'XBB' | 'XBC' | 'XBD' | 'XCD' | 'XDR' | 'XOF' | 'XPD' | 'XPF' | 'XPT' | 'XSU' | 'XTS' | 'XUA' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWG' | 'ZWL'
    - `scheduled_payment_date` string, date: ISO 8601 full-date in the format `YYYY-MM-DD` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
    - `crypto_destination` CryptoContactDestinationResponse
      - `id` string, uuid, required: Identifier of this crypto address on the contact. Pass it as `crypto_id` to send a crypto transaction here.
      - `destination_address` string, required: On-chain address funds are sent to, exactly as it was submitted.
      - `destination_payment_rail` 'arbitrum' | 'avalanche_c_chain' | 'base' | 'ethereum' | 'optimism' | 'polygon' | 'solana' | 'stellar' | 'sui' | 'tempo' | 'tron' | 'xdc' | 'ach' | 'ach_push' | 'ach_same_day' | 'fednow' | 'wire' | 'swift' | 'sepa' | 'faster_payments' | 'spei' | 'bridge_transfer'
      - `destination_currency` 'usdb' | 'usdc' | 'usdt' | 'dai' | 'pyusd' | 'cash' | 'usdg' | 'usdv' | 'eurc' | 'usd' | 'eur' | 'gbp' | 'mxn' | 'path_usd' | 'ousd'
      - `currency` 'usdc' | 'usdt' | 'pyusd' | 'cash' | 'usdg' | 'usdv' | 'eurc' | 'eth' | 'sol' | 'btc' | 'xrp' | 'path_usd' | 'ousd'
      - `network` 'ethereum' | 'base' | 'solana' | 'arbitrum' | 'polygon' | 'optimism' | 'tron' | 'stellar' | 'avalanche_c_chain' | 'binance' | 'sui' | 'tempo' | 'xdc' | 'bitcoin' | 'ripple'
      - `destination_tag` string, nullable: Destination tag or memo the receiving exchange needs to credit the funds. When the address is an X-address the tag is read out of it, so this is the tag that will actually be used. `null` for networks and addresses that need no tag.
    - `ach_transfer_id` string, nullable: The bank's ID for the ACH transfer that paid this bill, once one has been sent. On a Treasury Prime funding account this is the `ach_...` ID that `GET /accounts/{account_id}/achs/{ach_transfer_id}` accepts; on other banks that endpoint is keyed by transaction group ID, so use this value to reconcile rather than to look the transfer up.
    - `wire_transfer_id` string, nullable: The bank's ID for the wire transfer that paid this bill, once one has been sent. On a Treasury Prime funding account this is the `wire_...` ID that `GET /accounts/{account_id}/wires/{wire_transfer_id}` accepts; on other banks that endpoint is keyed by transaction group ID, so use this value to reconcile rather than to look the transfer up.
    - `crypto_transaction_hash` string, nullable: The on-chain transaction that settled this bill, once it has settled.
  - `additional_documents` BillDocumentResponse[]: Documents attached to the bill, each with a download URL.
    - `id` string, uuid, required: Identifier for this document.
    - `name` string, required: The file name.
    - `url` string, required: A short-lived URL to download the document (expires in 1 hour).
    - `created_at` string, date-time, required: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `img_url` string, nullable: A short-lived URL to download the bill's primary document.
  - `rrule` string, nullable: RFC 5545 RRULE string. Required: DTSTART, RRULE. Allowed frequencies: WEEKLY, MONTHLY.
  - `auto_approval_enabled` boolean, nullable: Whether the recurring schedule auto-approves generated bills.
  - `bill_sync_status` 'synced' | 'requires_sync' | 'sync_complete' | 'sync_failed': Tracks the sync status of a bill with external accounting systems.
  - `payment_sync_status` 'synced' | 'requires_sync' | 'sync_complete' | 'sync_failed': Tracks the sync status of a bill payment with external accounting systems.
  - `accounting_vendor` 'QuickBooks' | 'Xero' | 'NetSuite' | 'Puzzle' | 'Ramp' | 'Stripe' | 'Wave' | 'Relay' | 'Mastercard'
  - `accounting_bill_id` string, nullable: The bill's ID in your accounting system, once it has synced there.
  - `is_excluded_from_accounting` boolean: Whether this bill was excluded from accounting sync. An excluded bill reports no sync status, same as one that never synced.

## Other responses

- `400`: The request could not be processed.
- `401`: Authentication failed.
- `403`: The API key is not authorized for this operation, or the user of a global API key is an admin or controller without approved KYC. The KYC case returns the message `KYC is required for controllers and admins.` until that user completes KYC in the Meow dashboard.
- `429`: Too many requests.

---

[API](https://skmtc.dev/meow/apis/meow-api.md) - [All operations](https://skmtc.dev/meow/apis/meow-api/llms.txt) - [OpenAPI document](https://skmtc.dev/meow/apis/meow-api/revisions/ea2d7e25b63b?raw)
