PeoplePerHour automation · runs weekly
Raise PeoplePerHour invoices for finished work
Escrow money on PeoplePerHour reaches you only after you raise an invoice, and a buyer's "looks great, thanks" can sit unbilled in a WorkStream for a week. Invoicing too early is its own problem, because PeoplePerHour forbids billing before the work is delivered.
Cotlet does it in your own PeoplePerHour account with list_workstreams, get_workstream and create_invoice, called by your AI agent, an n8n workflow or a script.
Hosted · nothing to install or maintain
Official options
Can PeoplePerHour do this on its own?
PeoplePerHour has no API for invoices (checked 12 Oct 2026). Its native option for recurring work is AutoPay: the buyer sets a weekly or monthly amount and is charged each cycle, while the freelancer can only ask for it under MORE > REQUEST AUTOPAY and wait for approval. AutoPay suits fixed retainers. Project and Offer work is still billed by hand, one Raise Invoice form per WorkStream.
By hand
How you do it in PeoplePerHour today
- Check under Settings > Payments on PeoplePerHour that your bank details and address are filled in before the first invoice.
- Open the WorkStream inbox and pick a stream where the buyer accepted your proposal; PeoplePerHour allows invoices only there.
- At the bottom of the WorkStream click Raise Invoice, fill in the form and click Send. For an Offer the amount must equal the Offer price.
- PeoplePerHour posts the invoice in the WorkStream and emails the buyer, who then pays it or rejects it from a drop-down menu on the invoice.
- Repeat stream by stream, matching what each buyer approved against what you already invoiced, which is where finished jobs slip through unbilled.
With an agent
How to raise PeoplePerHour invoices for finished work
Prompt
Every Friday, go through my active WorkStreams, find jobs the buyer has signed off but I have not invoiced, and draft each invoice for the agreed price. - 01
Keep only billable streams
The agent goes through list_workstreams and keeps streams with an accepted proposal. A stream with only a pending proposal is skipped, because PeoplePerHour will not take an invoice there.
- 02
Look for sign-off, not just delivery
In get_workstream it reads the messages after the last delivery. A clear approval from the buyer counts. A delivery with no reply, or a buyer asking for changes, is reported as waiting and not billed.
- 03
Bill only the balance
Invoices already raised in the stream are subtracted from the agreed price, so a job with an earlier part invoice is billed for what remains. A stream that is fully invoiced is skipped.
- 04
Raise after your OK
create_invoice gets the remaining amount and a description that names the delivered work. Offer purchases are billed at the Offer price only, whatever the prompt says.
- 05
Report what is still open
The run ends with invoices raised, jobs waiting for sign-off and older invoices still unpaid after the payment term, so you know which buyer to chase.
What you get back
Example data
Invoices raised after your OK: 2, total £770.
Maria S., Landing page for a SaaS launch: £450, approved in the WorkStream on Wednesday.
Tom R., Shopify product pages: £320, approved on Thursday after the second revision.
Waiting for sign-off: Priya N., Pitch deck refresh, delivered Tuesday, no reply yet.
Skipped: Daniel K., proposal still pending, no invoice allowed.
Unpaid past 7 days: Anna B., £180, raised on 2 Oct. Other ways to ask
- Raise the invoice for the Maria S. landing page now; she approved the final files this morning.
- Every Monday, list invoices unpaid for more than 7 days without raising anything new.
- At month end, invoice every signed-off job and give me the total per currency.
Before you automate it
What PeoplePerHour allows, and what to know first
- PeoplePerHour lets a freelancer raise an invoice only in a WorkStream where the buyer accepted a proposal, and an Offer can be invoiced only for its purchase price.
- Buyers on PeoplePerHour have 7 days to pay or reject an invoice for an Offer and 15 days for a Project. When an invoice stays unpaid past 7 days, PeoplePerHour chases it and can release Escrow funds automatically.
- PeoplePerHour forbids asking for money out of Escrow before the work is delivered, and expects at least two further revisions if the buyer is not satisfied at first.
- A paid PeoplePerHour invoice shows as Pending during security checks, usually minutes or hours and up to 3 working days, and funds become withdrawable after a clearing period of about 14 working days.
create_invoice asks for your OK by default. To run it weekly without you, switch confirmation off for that tool in your dashboard.
Sources: PeoplePerHour Help: Raising invoices · PeoplePerHour Help: Paying invoices · PeoplePerHour Help: My Buyer hasn't paid and I wasn't covered by Escrow · PeoplePerHour Help: How do I get paid?
REST
Call create_invoice from a script
curl
curl https://cotlet.dev/api/v1/peopleperhour/create_invoice \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"workstream_id":"ws_7731","amount":450,"description":"Landing page design in Figma, final files delivered and approved"}' Example response
{
"invoice_id": "inv_3318",
"workstream_id": "ws_7731",
"amount": 300,
"description": "Landing page design, week 2",
"status": "sent",
"raised_at": "2026-10-16T16:00:00Z"
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is peopleperhour_create_invoice. Example data.
Schedule it in n8n, Make, Zapier or cronTools
PeoplePerHour tools this automation uses
| Tool | Parameters |
|---|---|
| list_workstreams | awaiting_reply, limit, cursor |
| get_workstream | workstream_id |
| create_invoice | workstream_id, amount, description |
Give your agent access to PeoplePerHour.
Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with PeoplePerHour.