Skip to content

Spend Management · Beta

Procurify
API integration

Ship Spend Management features without building the integration. Full Procurify API access via Proxy and 50+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

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

Talk to us
Procurify

Use Cases

Why integrate with Procurify

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

01

Automate SaaS procurement intake

SaaS management and ITAM platforms can push new software requests and renewals into Procurify as requisitions, letting their users route purchases through existing approval chains without leaving the procurement system of record.

02

Sync HRIS user provisioning with Procurify

HRIS and identity platforms can automatically create, update, and deactivate Procurify users as employees join, move departments, or leave — keeping approval hierarchies and budget centers aligned with the source of truth.

03

Close the loop on AP payments

B2B payment platforms can pull approved bills out of Procurify, execute payments, and mark bills as paid — eliminating manual reconciliation between the payment rail and the AP ledger.

04

Keep vendor catalogs live inside Procurify

Vertical marketplaces and preferred-supplier platforms can continuously push catalog items and vendor records into Procurify so end users shop from an up-to-date, approved catalog.

05

Surface committed spend in finance dashboards

FP&A and analytics tools can read purchase orders, bills, and payments from Procurify to show committed vs. actual spend by department, location, or account code in real time.

What You Can Build

Ship these features with Truto + Procurify

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

01

New-hire requisition automation

Trigger a Procurify requisition for a standard equipment or software bundle the moment a new employee is created in your HR or onboarding product.

02

Two-way vendor and catalog sync

Push vendors and catalog items into Procurify and pull updates back so your marketplace or SaaS catalog stays consistent with the customer's procurement system.

03

PO status tracking

Fetch purchase orders and their line items to show fulfillment, closure, and billing status directly inside your application.

04

AP payment write-back

List outstanding bills and AP items, process payments in your fintech product, then mark bills as paid in Procurify to close the AP workflow automatically.

05

Receipt and 3-way match automation

Create receipt items against purchase orders when goods or services are delivered, enabling your users to complete 3-way matching without manual data entry.

06

Chart-of-accounts and org structure mirroring

Keep departments, locations, and account codes in sync between Procurify and your ERP, HRIS, or budgeting tool so every requisition carries the right coding.

SuperAI

Procurify 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_procurify_users

List users, filterable by active state, location, role, permission, and pending invite. Returns: id, firstName, lastName, user, email, department, location, profile_image.

create_a_procurify_user

Invite one or more new users; the body is an array of users, and each user needs an email. Returns: id, firstName, lastName, user, email, department, location, profile_image.

update_a_procurify_user_by_id

Update a user by id (full update, PUT). Returns: id, firstName, lastName, user, email, department, location, profile_image. Required: id, email, firstName, lastName, location, department.

delete_a_procurify_user_by_id

Deactivate a user by id; Procurify deactivates the user and does not delete it. Returns an empty 204 response on success. Required: id.

list_all_procurify_current_user

Get the user account the access token belongs to. Returns: id, uuid, domains, headquarter_logo, systemaccess_cache, approval_delegatee, is_approval_delegatee, department.

list_all_procurify_permissions

List the user permissions that can be granted. Returns: id, codename, tier.

list_all_procurify_permission_groups

List the system roles (permission groups). Returns: id, name, user_count, permissions, type, tier.

list_all_procurify_locations

List locations. Returns: id, name, url, logo, currency, phoneOne, fax, email.

create_a_procurify_location

Create a location; only users with superuser permission can create locations. Returns: id, name, url, logo, currency, phoneOne, fax, email. Required: name, currency, phoneOne, primary_billing_address, primary_shipping_address, shipping_addresses.

get_single_procurify_location_by_id

Get a location by id. Returns: id, name, url, logo, currency, phoneOne, fax, email. Required: id.

update_a_procurify_location_by_id

Replace a location by id (PUT): omitted fields and alternate shipping addresses are overwritten or deactivated, so send the full record. Returns: id, name, url, logo, currency, phoneOne, fax, email. Required: id, name, currency, phoneOne, primary_billing_address, primary_shipping_address, shipping_addresses.

list_all_procurify_departments

List departments. Returns: id, name, branch, external_id, active, punchout_email, is_active_for_account_code, legal_entity.

create_a_procurify_department

Create a department. Returns: id, name, branch, external_id, active, punchout_email, is_active_for_account_code. Required: branch, name.

update_a_procurify_department_by_id

Update a department by id (full update, PUT). Returns: id, name, branch, external_id, active, punchout_email, is_active_for_account_code. Required: id, branch, name.

list_all_procurify_account_codes

List account codes (types: 0 assets, 1 liability, 2 expense, 3 income, 4 equity, 5 other). Returns: id, applied_accounts_count, code, code_length, description, account_type, active, parent.

create_a_procurify_account_code

Create an account code (types: 0 assets, 1 liability, 2 expense, 3 income, 4 equity, 5 other). Returns: id, applied_accounts_count, code, code_length, description, account_type, active, parent. Required: code, description.

update_a_procurify_account_code_by_id

Update an account code by id (full update, PUT). Returns: id, applied_accounts_count, code, code_length, description, account_type, active, parent. Required: id, code, description.

list_all_procurify_accounts

List chart-of-accounts accounts. Returns: id, account_code, department, start_datetime, end_datetime, budget, budget_used_approved, budget_used_purchased.

list_all_procurify_vendors

List vendors, filterable by vendor group, type, and legal entity availability. Returns: id, name, active, addressLineOne, addressLineTwo, postalCode, city, state_province.

create_a_procurify_vendor

Create a vendor (types: 1 other, 2 hidden, 3 preferred, 4 regular, 5 employee, 6 credit card provider). Returns: id, name, active, addressLineOne, addressLineTwo, postalCode, city, state_province. Required: name, email, type, overall_score.

get_single_procurify_vendor_by_id

Get a vendor by id. Returns: id, name, active, addressLineOne, addressLineTwo, postalCode, city, state_province. Required: id.

update_a_procurify_vendor_by_id

Update a vendor by id (full update, PUT). Returns: id, name, active, addressLineOne, addressLineTwo, postalCode, city, state_province. Required: id, name, type.

procurify_vendors_partial_update

Partially update a vendor by id (PATCH): only the fields you send change. Returns: id, name, active, addressLineOne, addressLineTwo, postalCode, city, state_province. Required: id.

list_all_procurify_currencies

List active and inactive currencies. Returns: id, name, description, rate, base, active.

list_all_procurify_catalog_bundles

List catalog bundles. Returns: id, name, description, image, active, items, items_count.

list_all_procurify_catalog_items

List catalog items. Returns: id, name, image, unitType, pref_vendor, account_code, internalSKU, description.

create_a_procurify_catalog_item

Create a catalog item. Returns: id, name, image, unitType, pref_vendor, account_code, internalSKU, description. Required: name, currency, custom_fields.

update_a_procurify_catalog_item_by_id

Update a catalog item by id (full update, PUT). Returns: id, name, image, unitType, pref_vendor, account_code, internalSKU, description. Required: id, name, currency, custom_fields.

create_a_procurify_requisition

Create a requisition (a purchase request with its line items). Returns: uuid. Required: required_date, location_name, department_name, line_items.

list_all_procurify_global_orders

List orders across the organization (statuses: 0 pending, 1 approved, 2 rejected, 3 purchased, 4 cancelled, 5 received, 6 draft). Returns: uuid, status, num, order_number, branch, user, department, currency.

list_all_procurify_global_order_items

List order items across the organization, with order, purchase order, and receiving filters. Returns: id, name, status, PO, PO_line_num, account, accountCode, active.

list_all_procurify_order_items

List order items, with order, purchase order, and receiving filters. Returns: id, name, status, PO, PO_line_num, account, accountCode, active.

list_all_procurify_purchase_orders

List purchase orders for a role (purchased or receivable) and a status. Returns: uuid, number, purchaser, procurify_PO, PO_Num, date, buyer_name, buyer_contact. Required: role, status.

get_single_procurify_purchase_order_by_id

Get a purchase order by id, with its items (states: 0 purchased, 1 cancelled, 3 closed, 4 paid, 5 reopened). Returns: uuid, number, purchaser, procurify_PO, PO_Num, date, buyer_name, buyer_contact. Required: id.

update_a_procurify_purchase_order_by_id

Update a purchase order by its Procurify PO number (full update, PUT). Required: id, order_items, buyer_name, buyer_contact, buyer_addressLineOne, buyer_postalCode, buyer_city, buyer_country, buyer_address, receiver_name, receiver_contact, receiver_addressLineOne, receiver_postalCode, receiver_city, receiver_country, receiver_address, promise_date, discount, tax, version.

procurify_purchase_orders_close

Close a purchase order by its Procurify PO number. Returns: id, uuid, number, PO_Num, date, discount, freight, fulfilment_status. Required: id.

create_a_procurify_purchase_order_reopening

Reopen a closed purchase order by its Procurify PO number. Returns no response body on success. Required: purchase_order_id.

list_all_procurify_purchase_order_billing_history

View the billing history of purchase orders. Returns: id, number, has_unbilled_unreceived_items, items.

list_all_procurify_receipt_items

List receipt items (individual receiving actions) for an order item. Returns: id, pass_quantity, fail_quantity, order_item, created_at, is_edited, created_by, total_quantity.

create_a_procurify_receipt_item

Receive order items within a single purchase order (creates receipt items). Returns: id, pass_quantity, fail_quantity, order_item, created_at, is_edited, created_by, total_quantity. Required: order_item, pass_quantity, fail_quantity.

list_all_procurify_custom_fields

List order item custom fields; the ids here are the canonical custom field ids, including on bill line items. Returns: id, name, content_type, default_value, is_required, field_choices, field_type, field_label.

update_a_procurify_custom_field_by_id

Update the dropdown choices of an order item custom field by id. Returns: id, name, content_type, default_value, is_required, field_choices, field_type, field_label. Required: id, name, field_type.

list_all_procurify_bills

List accounts payable bills, filterable by status, dates, vendor, and export state. Returns: id, uuid, status, version, locked, currency, items, vendor.

get_single_procurify_bill_by_id

Get an accounts payable bill by its UUID. Returns: id, uuid, status, user, vendor, approval_chain, approver, items. Required: id.

create_a_procurify_bill_paid_marking

Mark approved bills that have no payment as paid, with a payment date. Returns: bill_uuids, bill_group_ids, payment_date. Required: bill_uuids, payment_date.

list_all_procurify_ap_items

List accounts payable items, billed or unbilled. Returns: id, orderitem, expense, bill, vendor, sku, description, po.

list_all_procurify_company_payment_methods

List company payment methods (types: 0 other, 1 check, 2 ACH, 3 EFT, 4 wire). Returns: id, name, type, data, currency, gl_code.

create_a_procurify_company_payment_method

Create a company payment method; the data field depends on the type. Returns: id, name, type, data, currency, gl_code. Required: data.

list_all_procurify_vendor_payment_methods

List vendor payment methods (types: 0 other, 1 check, 2 ACH, 3 EFT, 4 wire). Returns: id, name, vendor, type, data, currency, payment_rail, bank_account_country_code.

create_a_procurify_vendor_payment_method

Create a vendor payment method; the data field depends on the type. Returns: id, name, vendor, type, data, currency, payment_rail, bank_account_country_code. Required: vendor, data.

list_all_procurify_payment_approver_choices

List the users who can approve a payment. Returns: id, user, amount_limit, item_variance_amount_limit, item_variance_percentage_limit, approval_level, bill_amount_limit. Required: payment_id.

list_all_procurify_payments

List payments, filterable by date, currency, status, vendor, and invoice number. Returns: id, uuid, status, payment_source_name, payment_source_type, external_payment_source_id, creator, created_at.

list_all_procurify_pay_transactions

List closed card transactions (fully captured, not only authorizations) across all issued cards. Returns: id, status, note, vendor, currency, amount, vendor_currency, vendor_amount.

Why Truto

Why use Truto’s MCP server for Procurify

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 850+ 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.

How It Works

From zero to integrated

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

01

Link your customer’s Procurify account

Use Truto’s frontend SDK to connect your customer’s Procurify 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 Procurify

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

04

Unified response format

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

FAQs

Common questions about Procurify on Truto

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

How does authentication to Procurify work through Truto?

Truto handles the Procurify auth handshake and token storage for you. Your end users connect their Procurify account through Truto's connect flow, and your application calls Procurify tools using a Truto-managed connection — no credentials ever touch your backend.

Which Procurify objects can I read and write?

You can read and write users, departments, locations, account codes, vendors, catalog items, requisitions, purchase orders, receipt items, bills, AP items, payment methods, and payments. Writes include creating requisitions, vendors, catalog items, receipt items, and marking bills as paid, among others.

Can I create a purchase requisition programmatically?

Yes. The create_a_procurify_requisition tool lets you submit a full requisition — including line items, department, and location — which then enters Procurify's native approval routing.

How do I handle Procurify custom fields?

Procurify custom fields are exposed via list_all_procurify_custom_fields and update_a_procurify_custom_field_by_id, so you can discover a customer's field schema at runtime and map your product's data into their configuration.

Does Truto handle pagination and rate limits for Procurify?

Yes. Truto normalizes pagination across list endpoints and transparently manages Procurify's rate limits with retries and backoff, so you can iterate large datasets like bills, POs, or users without writing that plumbing yourself.

Can I mark bills as paid after processing payment externally?

Yes. Use create_a_procurify_bill_paid_marking to write a paid status back to a Procurify bill after your platform settles the payment, closing the AP loop without manual intervention.

Procurify

Get Procurify integrated into your app

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