Skip to content

Spend Management · Beta

Zip
API integration

Ship Spend Management features without building the integration. Full Zip API access via Proxy, normalized data through Unified APIs, and 130+ MCP-ready tools for AI agents — all extensible to your exact use case.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Zip

Use Cases

Why integrate with Zip

Common scenarios for SaaS companies building Zip integrations for their customers.

01

Embed vendor risk reviews into procurement intake

GRC and security platforms can automatically pick up new vendor requests from Zip, run assessments, and mark the security approval node complete without users leaving your product. This eliminates manual handoffs between procurement and security teams.

02

Sync master financial data into Zip from your ERP

Accounting and ERP platforms can push GL codes, departments, subsidiaries, tax codes, and locations into Zip so employees code requests correctly at intake. This keeps Zip's coding options aligned with the general ledger without manual admin work.

03

Automate AP and invoice payment reconciliation

Payment platforms and AP automation tools can ingest approved invoices from Zip, execute payment, and write the paid status back. Finance teams get end-to-end reconciliation without exporting CSVs or double-entering data.

04

Feed SaaS management tools with pre-purchase visibility

SMP and shadow IT platforms can poll Zip requests and purchase orders to catch new software purchases before deployment. This powers renewal forecasting, duplicate app detection, and license tracking from the moment a request is filed.

05

Push signed contracts back into procurement workflows

CLM platforms can attach counter-signed agreements directly to the originating Zip request as a document, unblocking the procurement team to issue the PO. Legal and procurement stay in sync without email threads.

What You Can Build

Ship these features with Truto + Zip

Concrete product features your team can ship faster by leveraging Truto’s Zip integration instead of building from scratch.

01

Bi-directional vendor master sync

List, create, and update Zip vendors from your app so vendor records stay consistent across your system and Zip's procurement records.

02

Questionnaire-driven workflow triggers

Read intake questionnaire responses on each request to trigger the right downstream workflow (security review, legal redlining, IT provisioning) in your platform.

03

In-thread collaboration via Zip comments

Post status updates, links, and completion notes from your app directly into the Zip request thread so requesters see progress without switching tools.

04

Approved invoice ingestion and paid-status writeback

Pull approved invoices with line items from Zip, process payment in your platform, and update the invoice as paid to close the AP loop.

05

Financial configuration provisioning

Programmatically manage GL codes, departments, tax codes, locations, subsidiaries, and expense categories in Zip from your ERP or finance product.

06

Document upload and retrieval for contracts

Fetch original agreements and W-9s attached to a request, then upload signed MSAs or other finalized documents back onto the same Zip record.

SuperAI

Zip AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_zip_approvals

Search and list approvals in Zip that match a set of filters. Returns approval node records including id, name, status, display_status, node_type, config_type, start_time, complete_time, due_date, sla_hours, assignee, tasks, request, queue, stage, created_at, and updated_at.

list_all_zip_users

Search Zip users using optional filters. Returns per record: id, email, is_active, first_name, last_name, department, subsidiary, manager, roles, queues, groups, external_data, and attributes.

get_single_zip_user_by_id

Get a single Zip user by id. Returns: id, openapi, info, servers, security, paths, components. Required: id.

create_a_zip_user

Create a new Zip user. Returns the created user including id, email, is_active, first_name, last_name, department, subsidiary, manager, roles, queues, groups, external_data, and attributes.

update_a_zip_user_by_id

Update a Zip user by id. Returns the updated user including id, email, is_active, first_name, last_name, department, subsidiary, manager, roles, queues, groups, external_data, and attributes. Required: id.

zip_users_deactivate

Deactivate a Zip user by user_id. Returns the deactivated user including id, email, is_active, first_name, last_name, department, subsidiary, manager, roles, queues, groups, external_data, and attributes. Required: user_id.

list_all_zip_vendors

Search vendors in Zip matching the given criteria. Returns a list of vendor records; each record includes id, name, status, created_at, updated_at, external_id, address, contacts, categories, and owners.

get_single_zip_vendor_by_id

Get a single vendor in Zip by id. Returns the full vendor object including id, name, status, created_at, updated_at, external_id, address, contacts, legal_name, categories, and owners. Required: id.

create_a_zip_vendor

Create or update (upsert) a vendor in Zip keyed by external_id. Returns the created or updated vendor object including id, name, status, created_at, updated_at, external_id, address, contacts, and owners. Required: data.external_id.

update_a_zip_vendor_by_id

Update a single vendor in Zip by id. Returns the updated vendor object including id, name, status, created_at, updated_at, external_id, address, contacts, and owners. Required: id.

delete_a_zip_vendor_by_id

Delete a single vendor in Zip by id. Returns the deleted vendor object including id, name, status, external_id, updated_at, address, and contacts. Required: id.

list_all_zip_requests

Search Zip requests based on various filter and sort parameters, returning up to 30 results per page. Returns per record: id, name, status, request_type, priority, amount_usd, vendor, requester, department, payment_method, price_detail, created_at, and updated_at.

get_single_zip_request_by_id

Get a single Zip purchase request by id. Returns the full request object including id, name, status, request_type, priority, amount_usd, vendor, requester, department, payment_method, price_detail, purchase_order, created_at, and updated_at. Required: id.

update_a_zip_request_by_id

Update a Zip request by id. Returns the updated request object including id, name, status, request_type, priority, amount_usd, vendor, requester, department, payment_method, price_detail, purchase_order, created_at, and updated_at. Required: id.

list_all_zip_departments

List departments in Zip with optional search filters. Returns: id, name, display_name, is_active, hide_in_zip, created_at, updated_at, external_ids, external_data.

get_single_zip_department_by_id

Get a single Zip department by id. Returns the department object including id, name, display_name, is_active, hide_in_zip, created_at, updated_at, and external_data. Required: id.

create_a_zip_department

Create a new department in Zip. Returns the created department object including id, name, display_name, is_active, hide_in_zip, created_at, updated_at, and external_data.

update_a_zip_department_by_id

Update a Zip department by id. Returns the updated department object including id, name, display_name, is_active, hide_in_zip, created_at, updated_at, and external_data. Required: id.

delete_a_zip_department_by_id

Delete a Zip department by id. Returns an empty 204 response on success. Required: id.

list_all_zip_roles

Search and list roles in Zip. Returns each role's id and name. Optionally filter by name or control sort order with sort_by and sort_order.

get_single_zip_role_by_id

Get a single Zip role by id. Returns: id, name, openapi, info, servers, security, paths, components. Required: id.

create_a_zip_role

Create a new role in Zip. Returns: id, name, openapi, info, servers, security, paths, components.

update_a_zip_role_by_id

Update a Zip role by id. Returns: id, name, openapi, info, servers, security, paths, components. Required: id.

delete_a_zip_role_by_id

Delete a Zip role by id. Returns an empty 204 response on success. Required: id.

list_all_zip_invoices

List and search Zip invoices using optional filters. Returns invoice records including id, invoice_number, status, vendor, subsidiary, purchase_orders, line_items, erp_sync_status, and applied_vendor_credits. Supports filtering by status, vendor_id, invoice_number, date ranges (created, updated, approved), invoice amount, and upload_source.

get_single_zip_invoice_by_id

Get a single Zip invoice by id. Returns the full invoice object including id, invoice_number, status, vendor, subsidiary, purchase_orders, line_items, erp_sync_status, applied_vendor_credits, and exception_tasks. Required: id.

create_a_zip_invoice

Create a new invoice in Zip. Returns the created invoice object including id, invoice_number, status, vendor, subsidiary, purchase_orders, line_items, and erp_sync_status.

update_a_zip_invoice_by_id

Update header-level fields on a Zip bill invoice by id, including due_date, invoice_date, and coded invoice flags. The invoice can also be matched to purchase orders by providing purchase_order_ids or purchase_order_numbers. Returns the updated invoice including id, invoice_number, status, vendor, subsidiary, erp_sync_status, and line_items. Required: id.

zip_invoices_submit

Submit a Zip bill invoice for approval. Validates the draft invoice for completeness, then transitions it into the approval workflow. Returns the updated invoice including id, invoice_number, status, vendor, subsidiary, erp_sync_status, and line_items. Required: invoice_id.

zip_invoices_update_paid_status

Update the paid status of a Zip invoice, marking it as PAID or UNPAID. Returns the updated invoice object including id, invoice_number, status, vendor, subsidiary, purchase_orders, and line_items. Required: invoice_id, data.new_status; when marking as PAID, data.paid_on_date and data.currency are also required.

list_all_zip_invoice_line_items

List invoice line items in Zip. Returns: id, description, quantity, rate, billed_amount, received_amount, line_number, tax_amount, shipping_amount, misc_amount, total, pre_tax_total, currency, start_date, end_date, start_date_iso, end_date_iso, line_type, line_type_name, secondary_line_type, department, expense_category, gl_code, item_account, location, tax_codes, vendor_item, attributes,…

create_a_zip_invoice_line_item

Add one or more line items to a Zip invoice. Returns: list. Required: invoice_id.

update_a_zip_invoice_line_item_by_id

Update an existing invoice line item in Zip. Returns the updated line item including id, description, rate, quantity, total, line_type, department, expense_category, gl_code, and other fields. Required: invoice_id, id.

list_all_zip_purchase_orders

List and search purchase orders in Zip using optional filters on creation date, update date, open amount, and vendor. Returns one record per purchase order including id, po_number, total_amount, total_amount_usd, currency, status, vendor, created_at, updated_at, payment_method, payment_frequency, and billing/tax amounts.

get_single_zip_purchase_order_by_id

Get a single Zip purchase order by id. Returns the full purchase order object including id, po_number, total_amount, total_amount_usd, currency, status, vendor, payment_method, payment_frequency, created_at, updated_at, and all billing and tax amounts. Required: id.

list_all_zip_agreements

Search and list agreements in Zip. Returns agreement records including agreement_number, name, agreement_status, currency, amount, start_date, end_date, renewal_status, attachments, original_request, child_requests, purchase_orders, and renewal_stakeholder_queues. Optionally filter by vendor_id, subsidiary_id, or department_id.

get_single_zip_agreement_by_id

Get a single Zip agreement by id. Returns the full agreement object including agreement_number, name, agreement_status, currency, amount, start_date, end_date, renewal_status, attachments, original_request, child_requests, purchase_orders, and renewal_stakeholder_queues. Required: id.

list_all_zip_vendor_credits

Search vendor credits in Zip, optionally filtered by credit invoice number. Returns vendor credit records including id, credit_number, currency, vendor, subsidiary, amount, applied_invoices, and line_items.

get_single_zip_vendor_credit_by_id

Get a single vendor credit in Zip by id. Returns the vendor credit including id, credit_number, currency, vendor, subsidiary, amount, applied_invoices, and line_items. Required: id.

create_a_zip_vendor_credit

Create a new vendor credit in Zip. Returns the created vendor credit including id, credit_number, currency, vendor, subsidiary, amount, and line_items. Required: vendor_id, subsidiary_id, currency.

update_a_zip_vendor_credit_by_id

Update the header information of a vendor credit in Zip by id. Returns the updated vendor credit including id, credit_number, currency, vendor, subsidiary, amount, and line_items. Required: id.

zip_vendor_credits_submit

Submit a vendor credit for approval in Zip. Returns the submitted vendor credit including id and credit_invoice_number. Required: vendor_credit_id.

update_a_zip_vendor_credit_line_item_by_id

Update a vendor credit line item in Zip by id. Returns the updated line item including id, description, quantity, rate, line_type, currency, total, and coding fields such as department, expense_category, gl_code, and location. Required: vendor_credit_id, id.

list_all_zip_locations

Search Zip locations, optionally filtering by name. Returns a list of location objects including id, name, status, created_at, updated_at, and external_data.

create_a_zip_location

Create a new location in Zip. Returns the created location object including id, name, status, created_at, and updated_at.

update_a_zip_location_by_id

Update an existing Zip location by id, modifying its name and/or status via a data wrapper. Returns the updated location object including id, name, status, created_at, and updated_at. Required: id.

delete_a_zip_location_by_id

Delete a Zip location by id. Returns an empty 204 response on success. Required: id.

list_all_zip_subsidiaries

List subsidiaries in Zip, optionally filtered by name or active status. Returns per record: id, name, display_name, is_active, created_at, updated_at, external_data, and address.

get_single_zip_subsidiary_by_id

Get a single Zip subsidiary by id. Returns the subsidiary record including id, name, display_name, is_active, created_at, updated_at, address, and external_data. Required: id.

create_a_zip_subsidiary

Create a new subsidiary in Zip. Returns the created subsidiary including id, name, display_name, is_active, created_at, updated_at, external_data, and address.

update_a_zip_subsidiary_by_id

Update a Zip subsidiary by id. Returns the updated subsidiary including id, name, display_name, is_active, created_at, updated_at, external_data, and address. Required: id.

delete_a_zip_subsidiary_by_id

Delete a Zip subsidiary by id. Returns an empty 204 response on success. Required: id.

list_all_zip_gl_codes

Search and list GL accounts in Zip. Supports optional filters by name and active status. Returns: id, created_at, updated_at, name, currency, active, subsidiaries, external_id, external_data, account_type, account_sub_type, account_number, source.

get_single_zip_gl_code_by_id

Get a single GL account by id in Zip. Returns: name, key, show_in_zip, lookup, openapi, info, servers, security, paths, components. Required: id.

create_a_zip_gl_code

Create a new GL account in Zip. Returns: id, created_at, updated_at, name, currency, active, subsidiaries, external_id, external_data, account_type, account_sub_type, account_number, source, openapi, info, servers, security, paths, components.

update_a_zip_gl_code_by_id

Update an existing GL account by id in Zip. Returns: id, created_at, updated_at, name, currency, active, subsidiaries, external_id, external_data, account_type, account_sub_type, account_number, source, openapi, info, servers, security, paths, components. Required: id.

list_all_zip_expense_categories

List all expense categories in Zip. Returns: id, name, description, active, gl_code_id, subsidiary_ids, source.

get_single_zip_expense_category_by_id

Get a single expense category by id in Zip. Returns: id, created_at, updated_at, name, description, source, active, external_data, gl_code, subsidiaries, openapi, info, servers, security, paths, components. Required: id.

create_a_zip_expense_category

Create a new expense category in Zip. Returns the created category object including id, name, description, active, source, gl_code, subsidiaries, created_at, updated_at, and external_data.

update_a_zip_expense_category_by_id

Update an expense category by id in Zip. Returns: id, name, description, active, gl_code_id, subsidiary_ids, source, openapi, info, servers, security, paths, components. Required: id.

delete_a_zip_expense_category_by_id

Delete a single expense category by id in Zip. Returns an empty 204 response on success. Required: id.

list_all_zip_tax_codes

Search and list tax codes in Zip with optional filters on name, active status, or tax code type. Returns: id, created_at, updated_at, display_name, name, description, active, rate, country, city, county, state, tax_code_type, external_id, external_data.

get_single_zip_tax_code_by_id

Get a single Zip tax code by id. Returns: id, created_at, updated_at, display_name, name, description, active, rate, country, city, county, state, tax_code_type, external_id, external_data, openapi, info, servers, security, paths, components. Required: id.

create_a_zip_tax_code

Create a new tax code in Zip. Returns the created tax code object including id, name, display_name, active, rate, tax_code_type, country, state, city, county, description, created_at, updated_at, and external_data.

update_a_zip_tax_code_by_id

Update an existing Zip tax code by id. Returns the updated tax code object including id, name, display_name, active, rate, tax_code_type, country, state, city, county, description, created_at, updated_at, and external_data. Required: id.

delete_a_zip_tax_code_by_id

Delete a Zip tax code by id. Returns an empty 204 response on success. Required: id.

create_a_zip_vendor_contact

Create a vendor contact in Zip for a specific vendor. Returns the created contact object including id, vendor_id, first_name, last_name, email, title, phone, and phone_country. Required: vendor_id, first_name, last_name, email.

list_all_zip_vendor_items

List vendor items in Zip. Returns vendor item records including id, status, currency, rate_cents, vendor_id, product_id, supplier_part_number, and lead_time.

create_a_zip_vendor_item

Create a new vendor item in Zip. Returns the created vendor item including id, status, currency, rate_cents, vendor_id, product_id, supplier_part_number, and lead_time.

update_a_zip_vendor_item_by_id

Update a vendor item in Zip by id. Returns the updated vendor item including id, status, currency, rate_cents, vendor_id, product_id, supplier_part_number, lead_time, and purchasing_group_ids. Required: id.

list_all_zip_vendor_item_groups

List vendor item groups in Zip. Returns a collection of vendor item group records including id, name, description, currency, activePriceRange, vendor, childMemberships, and objectType.

create_a_zip_vendor_item_group

Create a new vendor item group in Zip. Returns the created vendor item group object including id, name, description, currency, activePriceRange, vendor, childMemberships, and objectType.

update_a_zip_vendor_item_group_by_id

Update a single vendor item group in Zip by id. Returns the updated vendor item group object including id, name, description, currency, activePriceRange, vendor, childMemberships, and objectType. Required: id.

list_all_zip_vendor_payment_methods

List all payment methods for a Zip vendor. Returns: id, country, currency, custom_fields, external_data, payment_file_format_id, payment_file_format_name, payment_method, vendor, is_approved, is_deleted, is_deleted_by_vendor, updated_at. Required: vendor_id.

list_all_zip_lookups

List Zip lookup types. Returns a paginated collection of lookup records including id, name, integration_key, integration_name, display_name_fields, filters, and show_in_zip.

get_single_zip_lookup_by_id

Get a single Zip lookup type by id. Returns the lookup object including id, name, integration_key, display_name_fields, filters, settings_fields, and show_in_zip. Required: id.

create_a_zip_lookup

Create a new Zip lookup type. Returns the created lookup object including id, name, integration_key, display_name_fields, filters, settings_fields, and show_in_zip.

update_a_zip_lookup_by_id

Update a Zip lookup type by id. Returns the updated lookup object including id, name, integration_key, display_name_fields, filters, settings_fields, and show_in_zip. Required: id.

delete_a_zip_lookup_by_id

Delete a Zip lookup type by id. Returns an empty 204 response on success. Required: id.

list_all_zip_lookup_options

Search and list lookup options in Zip, optionally filtering by key, name, show_in_zip, or lookup_id. Returns: id, name, key, show_in_zip, lookup.

get_single_zip_lookup_option_by_id

Get a single Zip lookup option by id. Returns: id, name, key, show_in_zip, lookup, openapi, info, servers, security, paths, components. Required: id.

create_a_zip_lookup_option

Create a new lookup option in Zip. Returns the created option including id, name, key, show_in_zip, and lookup.

update_a_zip_lookup_option_by_id

Update an existing Zip lookup option by id. Returns the updated option including id, name, key, show_in_zip, and lookup. Required: id.

delete_a_zip_lookup_option_by_id

Delete a Zip lookup option by id. Returns an empty 204 response on success. Required: id.

list_all_zip_item_accounts

Search and list Zip item accounts using optional filters. Returns: id, created_at, updated_at, name, active, subsidiaries, item_unit_of_measure, external_id, external_data.

get_single_zip_item_account_by_id

Get a Zip item account by id. Returns a wrapper object including name, key, show_in_zip, and a lookup object containing the full item account record (id, created_at, updated_at, name, active, subsidiaries, item_unit_of_measure, external_data). Required: id.

create_a_zip_item_account

Create a new item account in Zip. Returns: id, created_at, updated_at, name, active, subsidiaries, item_unit_of_measure, external_id, external_data.

list_all_zip_item_receipts

List item receipts in Zip with optional filters on creation/update timestamps or status. Returns: id, created_at, updated_at, note, status, receipt_number, archive_note, received_date, external_link, external_data, purchase_order, line_items.

get_single_zip_item_receipt_by_id

Get a single Zip item receipt by id. Returns the full receipt record including id, type, status, created_at, updated_at, received_date, receipt_number, note, archive_note, external_link, purchase_order, and line_items. Required: id.

list_all_zip_amortization_schedules

List amortization schedules in Zip with optional filters on active status and name. Returns: id, is_active, name, source.

get_single_zip_amortization_schedule_by_id

Get a single amortization schedule in Zip by id. Returns: id, is_active, name, source, openapi, info, servers, security, paths, components. Required: id.

list_all_zip_delegations

List Zip delegations for the authenticated organization with optional filters. Returns: id, created_at, updated_at, starts_at, ends_at, timezone, note, status, master_key, delegator, delegate.

get_single_zip_delegation_by_id

Get a single Zip delegation by id. Returns the delegation object including id, type, status, starts_at, ends_at, timezone, note, master_key, delegator, delegate, created_at, and updated_at. Required: id.

create_a_zip_delegation

Create an out-of-office delegation in Zip, transferring a user's approval responsibilities to a delegate for a specified date range. Returns: id, created_at, updated_at, starts_at, ends_at, timezone, note, status, master_key, delegator, delegate, openapi, info, servers, security, paths, components. Required: data.delegator_id, data.delegate_id, data.start_date, data.end_date, data.timezone. Only…

update_a_zip_delegation_by_id

Update an existing Zip delegation by id. Returns: id, created_at, updated_at, starts_at, ends_at, timezone, note, status, master_key, delegator, delegate, openapi, info, servers, security, paths, components. Required: id. At least one field in data must be provided; changing the delegate triggers a circular delegation check.

delete_a_zip_delegation_by_id

Soft-delete a Zip delegation by id, setting its end date to yesterday and marking its status as EXPIRED; any in-progress delegated approvals are reassigned to the original delegator. Returns: id, created_at, updated_at, starts_at, ends_at, timezone, note, status, master_key, delegator, delegate, openapi, info, servers, security, paths, components. Required: id.

get_single_zip_queue_by_id

Get a single queue in Zip by id. Returns the queue object including id, name, type, queue_owners, queue_members, assignment_logic, default_assignee, description, and group_email. Required: id.

create_a_zip_queue

Create a main queue in Zip. Returns the created queue object including id, name, type, queue_owners, queue_members, assignment_logic, and default_assignee. Required: name, queue_owners, queue_members, assignment_logic.

update_a_zip_queue_by_id

Update a main queue or subqueue in Zip by id. Returns the updated queue object including id, name, type, queue_owners, queue_members, assignment_logic, default_assignee, description, and group_email. Required: id.

delete_a_zip_queue_by_id

Delete a queue in Zip by id. Returns an empty 204 response on success. Required: id.

create_a_zip_sub_queue

Create a subqueue on a parent queue in Zip. Returns the created sub-queue object including its id, type, name, queue_owners, queue_members, and assignment_logic. Required: queue_id.

list_all_zip_products

List Zip products by their IDs. Returns each product's id, name, type, line_type, manufacturer_name, unspsc_code, gl_code, item_account, and item_unit_of_measure. Required: guids.

create_a_zip_product

Create a new product in Zip. Returns the created product object including id, name, type, line_type, manufacturer_name, unspsc_code, gl_code, item_account, and item_unit_of_measure. Required: data.name.

update_a_zip_product_by_id

Update a Zip product by id. Returns the updated product object including id, name, type, line_type, manufacturer_name, unspsc_code, gl_code, item_account, and item_unit_of_measure. Required: id.

list_all_zip_currencies

List all supported currencies in Zip from your organization's admin settings. Returns: id, name, external_data.

update_a_zip_currency_by_id

Upsert currencies in Zip (append-only). Adds new currencies to the supported list without removing existing ones absent from the request. Returns: supported_currencies.

get_single_zip_document_by_id

Get a Zip document by id and download its binary file content. Returns the raw PDF binary content of the document — the response body is an application/pdf binary stream, not a JSON object. Required: id.

create_a_zip_document

Upload a document to Zip as a multipart form, optionally attaching it to a purchase request or invoice. Returns: id, file_name, openapi, info, servers, security, paths, components.

get_single_zip_payment_method_by_id

Get a single payment method by id in Zip. Returns: id, updated_at, openapi, info, servers, security, paths, components. Optionally include sensitive data or soft-deleted records via query parameters. Required: id.

update_a_zip_payment_method_by_id

Update a payment method by id in Zip, modifying its external integration mapping or custom fields. Returns the updated payment method object including id, country, currency, payment_method, vendor, is_approved, is_deleted, and updated_at. Required: id.

list_all_zip_payment_terms

List payment terms in Zip with optional search filters. Returns: id, name, net_period_in_days, is_active, external_data.

get_single_zip_payment_term_by_id

Get a single Zip payment terms record by id. Returns: id, name, net_period_in_days, is_active, external_data, openapi, info, servers, security, paths, components. Required: id.

get_single_zip_payout_by_id

Get a single payout in Zip by id. Returns the payout object including id, type, amount, fx_rate, reference_id, paid_on_date, reversed_on_date, payment_provider_creation_time, payment_method_type, currency_object, funding_currency_object, vendor, account, subsidiary, invoices, created_at, and updated_at. Required: id.

create_a_zip_address

Create a new address in Zip, optionally associated with a vendor. The data object must include lines, locality, and country. Returns the created address object including id, lines, locality, country, postal_code, status, address_str, display_country, display_region, and vendor address type flags. Required: data.

create_a_zip_comment

Create a comment on a Zip purchase requisition or invoice, or reply to an existing comment on Zip's RDP. Returns: success, comment, openapi, info, servers, security, paths, components. Required: data.user_id, data.external_display_name, and one of data.text or data.text_html; plus one of data.comment_parent_id, data.purchase_requisition_id, or data.invoice_id.

delete_a_zip_comment_by_id

Delete a Zip comment by its GUID. Returns: success, openapi, info, servers, security, paths, components. Required: id.

list_all_zip_request_comments

List comments belonging to a Zip request. Returns: id, text, text_html, user_id, external_url, external_display_name, comment_parent_id, created_at. Required: request_id.

update_a_zip_request_line_item_by_id

Update the line items on a Zip request. Returns the updated line item object including id, description, quantity, rate, line_type, currency, department, expense_category, and gl_code. Required: request_id.

list_all_zip_request_questionnaire_responses

List questionnaire responses for a Zip request. Returns each questionnaire's id, name, status, and question_responses array (including question_prompt, question_id, data, selected_options, text, weight, weighted_score, section, and reviewer_scores). Required: request_id.

list_all_zip_user_groups

List user groups in Zip, optionally filtered by name and sorted by creation or update time. Returns each matching group's id and name. The source documents only these two fields for this resource.

get_single_zip_user_group_by_id

Get a single Zip user group by id. Returns: id, name, openapi, info, servers, security, paths, components. Required: id.

list_all_zip_workflows

List all request workflows configured for the company in Zip. Returns: id, name, status.

list_all_zip_workflow_attributes

List configurable attributes for a Zip workflow given its ID. Returns one attribute record per item including id, name, data, config_id, integration_data, and entity_type. Required: workflow_id.

list_all_zip_audit_logs

List audit trail logs in Zip. Returns: id, timestamp, event_type, user, api_key, user_ip_address, accessed_from, description, data. Supports optional filtering by created_after, created_before, event_type, creator_id, creator_email, and actor_type. Requires a Zip Premier subscription.

list_all_zip_purchase_categories

List all available purchase categories in Zip as defined under company settings. Returns a three-level hierarchy: each top-level category has a name and a subcategories array; each mid-level subcategory has a name and a nested subcategories array; each deepest-level subcategory has an id (UUID) and name.

create_a_zip_budget

Create or update a budget in Zip for a given fiscal period and set of dimensions. Returns the upserted budget including its id, type, start_date, end_date, amount, dimensions, and owners. Required: data (must contain start_date, end_date, amount, and dimensions).

create_a_zip_budget_actual

Create or update a budget actual in Zip for a given date and set of dimensions (upsert). Returns the resulting budget actual including its id, type, date, amount, dimensions, and matched_budget_id. Required: date, amount, dimensions (sent within a data wrapper).

list_all_zip_option_filter_rules

List option filter rules in Zip. Returns a collection of rules, each including rule_id, type, target_field, source_field_1, and target_filtered_options.

update_a_zip_option_filter_rule_by_id

Create or update (upsert) an option filter rule in Zip by rule_id. If a rule with the given rule_id already exists it is updated; otherwise a new rule is created. Returns the rule object including rule_id, type, target_field, source_field_1, target_filtered_options, source_field_1_values, source_field_2, source_field_2_values, upload_source, user_permission_groups, created_at, and updated_at.…

delete_a_zip_option_filter_rule_by_id

Delete an existing option filter rule in Zip by rule_id. Returns: success, rule_id, openapi, info, servers, security, paths, components. Required: rule_id.

create_a_zip_einvoice

Create an invoice in Zip from an e-invoice XML document. Supply the XML as a raw/base64 string; an optional base64-encoded PDF can be provided to override the PDF generated from the XML. Returns the created invoice object including its id, status, invoice_date, due_date, vendor, subsidiary, currency, and description. Required: xml.

Why Truto

Why use Truto’s MCP server for Zip

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 600+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

Unified APIs

Unified APIs for Zip

Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.

Unified User Directory API

Groups

Groups are a collection of users in the source application. In some applications, they might also be called Teams.

View Docs

Roles

The Role object represents a role of a User.

View Docs

Users

The User object represents a User.

View Docs

How It Works

From zero to integrated

Go live with Zip in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Zip account

Use Truto’s frontend SDK to connect your customer’s Zip account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Zip

Truto’s Proxy API is a 1-to-1 mapping of the Zip API. You call us, we call Zip, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Zip’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Zip on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

What data objects does the Zip integration support?

The integration covers requests, approvals, vendors, invoices and line items, purchase orders, agreements, vendor credits, users, departments, roles, locations, subsidiaries, GL codes, tax codes, expense categories, documents, comments, questionnaire responses, workflows, audit logs, budgets, and more. Both read and write operations are supported where Zip's API allows it.

Can I write back approval decisions or status updates from my app?

Yes. You can update requests, submit or update the paid status of invoices, submit vendor credits, and post comments back into the Zip request thread. This lets your product participate in Zip's approval orchestration rather than just reading data.

How do I map users and roles between Zip and my product?

Zip user, role, and group data is available through both the Zip-specific tools and Truto's Unified User Directory API. You can use the unified model if you're integrating with multiple identity or spend platforms, or the native Zip endpoints when you need Zip-specific fields.

Can we pull the exact questionnaire answers a requester submitted?

Yes. The list_all_zip_request_questionnaire_responses endpoint returns the specific answers employees provided during intake, which is what you'd use to drive conditional logic in your own workflows (e.g., trigger a SOC 2 review only if PII is involved).

How does Truto handle authentication with Zip?

Truto manages the OAuth handshake, token storage, and refresh cycles for each of your end-users' Zip accounts. Your app receives a stable connection identifier and doesn't need to store or rotate Zip credentials directly.

Can we sync custom fields or lookup values defined in a customer's Zip instance?

Yes. Zip's lookups and lookup options are exposed through dedicated endpoints, so you can list, create, and update custom picklist values and reference them when creating requests, invoices, or vendors.

Zip

Get Zip integrated into your app

Our team understands what it takes to make a Zip integration successful. A short, crisp 30 minute call with folks who understand the problem.