What VendoRFP connects to.
Your calendar, your accounting software, and Zapier or Make for the rest.
Works with the tools you already use.
Google Calendar
Outlook
Apple Calendar
Zapier
Make
It shows up in Apple Calendar, Google Calendar and Outlook for your schedule and in QuickBooks Online, QuickBooks Desktop and Xero for your books.
Your schedule in Google, Outlook or Apple Calendar
Paste one address into your calendar. Every scheduled visit appears and stays current.
Visits nobody has agreed to yet arrive marked tentative, so a proposal never lands in your week looking like a commitment.
BEGIN:VCALENDAR VERSION:2.0 PRODID:-//VendoRFP//Service schedule feed//EN CALSCALE:GREGORIAN X-WR-CALNAME:Willow Creek — service schedule REFRESH-INTERVAL;VALUE=DURATION:PT12H X-PUBLISHED-TTL:PT12H BEGIN:VEVENT UID:schedule-8f2c-2026-09-07@vendorfp.com DTSTAMP:20260907T060000Z DTSTART;VALUE=DATE:20260907 DTEND;VALUE=DATE:20260908 SUMMARY:Pool Cleaning DESCRIPTION:Vendor: Blue Water Pools\nWindow: 7:00 – 11:00 AM STATUS:CONFIRMED TRANSP:TRANSPARENT END:VEVENT END:VCALENDAR
A service under contract with no day set stays off the calendar, on purpose.
See this schedule in your own calendar
Add this address to Apple Calendar, Google Calendar or Outlook and every visit on the plan appears beside your own days. It updates itself.
Masked example. Sign in for yours.
Sign in to get yoursThe API
If you have somebody who writes software (in-house, or the firm that keeps your systems talking to each other), they can read your own records straight out of the platform. A key is issued to you, you choose which of the areas below it opens, and it opens no others.
community:read | The record of the place itself — its name, address, and the boundary mapped for it. |
|---|---|
work_orders:read | Service visits: what was done, when, and what it cost you. |
invoices:read | Invoices and their line items, with sales tax as its own line. |
rfps:read | Work you have published, and how many proposals each has drawn. |
vendors:read | The companies working for you, and whether their insurance and licenses are current. |
What a key cannot do
{
"data": {
"id": "a1b2c3d4-0000-0000-0000-000000000000",
"name": "Willow Creek",
"address": "4200 Willow Creek Dr, Charlotte, NC",
"lat": 35.1596,
"lng": -80.8392,
"msa_signed": true,
"boundary": {
"type": "Polygon",
"coordinates": [
[
[
-80.8409,
35.1583
],
[
-80.8375,
35.1583
],
[
-80.8375,
35.1609
],
[
-80.8409,
35.1609
],
[
-80.8409,
35.1583
]
]
]
},
"created_at": "2026-01-14T00:00:00.000Z"
}
}API access is switched on per account rather than being on by default, because a key that reads your records is not a thing to hand out by accident. The ask lives in your dashboard under Settings, on the same page the keys will appear on once it is open — tell us what you want to read and somebody reads the request.
Zapier and Make
VendoRFP sends an event the moment something happens: an RFP goes out, a proposal arrives, an invoice is paid. Each one is a JSON POST to an address you choose, signed so the receiving end can prove it came from us. Zapier and Make both give you that address, so there is nothing to install.
rfp.published | An RFP is published to vendors. |
|---|---|
proposal.received | A vendor submits a proposal on one of your RFPs. |
proposal.awarded | A proposal is awarded. |
work_order.approved | Completed work is approved for billing. |
invoice.paid | An invoice is paid in full. |
work_order.completed | A vendor marks a visit complete. |
vote.closed | A board vote closes, with its result. |
coi.expiring | A vendor insurance certificate is about to expire. |
Set it up in Zapier
- In Zapier, create a Zap and choose Webhooks by Zapier as the trigger, event Catch Hook.
- Copy the webhook URL Zapier shows you.
- In VendoRFP, open Settings, then Integrations. Paste the URL, tick the events you want and press Add webhook.
- Copy the signing secret VendoRFP shows you once, and keep it with the Zap’s notes.
- Press Send test event, then Test trigger in Zapier. The test event appears and its fields are ready to map.
Set it up in Make
- In Make, create a scenario and add the Webhooks module Custom webhook. Press Add and name it.
- Copy the address Make gives you. Make now waits for the first request so it can learn the data structure.
- In VendoRFP, open Settings, then Integrations. Paste the address, tick the events and press Add webhook.
- Press Send test event. Make shows “Successfully determined” and the fields are ready for the next module.
{
"id": "evt_3f2a9c10-58d4-4e0b-9b7a-1c2d3e4f5a6b",
"type": "invoice.paid",
"created_at": "2026-09-07T15:04:05.000Z",
"organization": {
"kind": "community",
"id": "a1b2c3d4-0000-0000-0000-000000000000"
},
"data": {
"invoice_id": "5e6f7a8b-0000-0000-0000-000000000000",
"number": "INV-1001",
"total": 486,
"amount_paid": 486,
"currency": "usd",
"paid_at": "2026-09-07T15:04:00.000Z",
"vendor_id": "9c8d7e6f-0000-0000-0000-000000000000",
"community_id": "a1b2c3d4-0000-0000-0000-000000000000"
}
}VendoRFP-Event: invoice.paid VendoRFP-Event-Id: evt_3f2a9c10-58d4-4e0b-9b7a-1c2d3e4f5a6b VendoRFP-Timestamp: 1788793445 VendoRFP-Signature: v1=<HMAC-SHA256 of "<timestamp>.<body>" with your secret>
If your endpoint is down, the event waits.
Your bank, through Plaid
Bank connections switch on once VendoRFP’s Plaid account is approved. Chase, Wells Fargo and other banks connect through Plaid.
Plaid connects apps to bank accounts. You choose your bank and sign in on Plaid’s own screen. VendoRFP receives your accounts’ names, their last four digits and their transactions, never your password or a full account number. Each bank payment that matches an invoice by amount and date is shown beside that invoice for you to check. A match never marks an invoice paid by itself.
Disconnecting deletes what was copied.
Files for your books
Pick a period, pick a format, download it. Every one of these opens in the package it names without a third-party account, a connector to authorize or a subscription in between — the file is yours and the import is the one your accounting package already has.
| Detailed CSV | Every invoice and payment for the period, one row each, with tax broken out. Opens in any spreadsheet. |
|---|---|
| General journal CSV (double-entry) | A double-entry journal — debits and credits, totalling equal. The one to hand an accountant who wants "the journal". |
| QuickBooks Online CSV | QuickBooks Online's own import columns. |
| QuickBooks Desktop IIF | The file format QuickBooks Desktop imports directly. |
| Xero CSV | Xero's own import columns. |
Record type,Date,Due date,Document number,Billed by,PO number,Status,Service,Sales tax,"Amount (charged on an Invoice row, paid on a Payment row)",Stored document total,Variance,Sales tax detail,Currency
Sales tax is its own line, in every one of them.
Every one of these lives in your dashboard under Settings.
Connect it to what you already run.
The file exports and the webhooks are in your dashboard the day you sign up, and the calendar feed is on this page the day you have a schedule.
