name: repairshopr-invoice description: Create and manage invoices in RepairShopr license: MIT compatibility: opencode metadata: audience: technicians, accountants, administrators api: GET /invoices, POST /invoices, GET /invoices/{id}, PUT /invoices/{id}, DELETE /invoices/{id}, POST /invoices/{id}/email, POST /invoices/{id}/print
What I do
I manage invoices in RepairShopr, which are bills for services rendered or products sold. I can list, create, retrieve, update, and delete invoices. I also support sending invoices via email and print queueing.
When to use me
Use this when:
- Billing customers for completed work
- Creating invoices from scratch or converting from estimates
- Updating invoice details (add payments, modify line items via sub-endpoints)
- Sending invoices to customers via email
- Printing invoices for paper records
How to use
Required API base URL:
VITE_REPAIRSHOPR_SUBDOMAINVITE_REPAIRSHOPR_API_KEY
Permissions:
- "Invoices - List/Search" for listing
- "Invoices - Create" for creating
- "Invoices - View Details" for viewing single, email, print
- "Invoices - Edit" for updating
- Invoices cannot truly be deleted; DELETE returns 200 even if it fails
List Invoices (GET /invoices) Optional:
paid(boolean) - Filter by paid statusunpaid(boolean) - Filter by unpaid statusticket_id(integer) - Filter by associated ticketsince_updated_at(string) - Invoices updated since datepage(integer) - Page number (25 results per page)
Create Invoice (POST /invoices) Required:
customer_id(integer) - Customer IDnumber(string) - Invoice numberdate(string) - Invoice date (ISO 8601)
Optional:
due_date(string) - Payment due datesubtotal,total,tax(strings/numbers) - Amountsverified_paid,tech_marked_paid,is_paid(boolean) - Payment statusticket_id(integer) - Associated ticketlocation_id(integer) - Locationcontact_id(integer) - Contact personpo_number(string) - Customer PO numbernote(string) - Customer noteshardwarecost(number) - Hardware costline_items(array) - Array of line item objects
Get Invoice (GET /invoices/{id})
id(integer) - Invoice ID or number
Update Invoice (PUT /invoices/{id})
id(integer) - Invoice ID Optional body with invoice fields (customer_id, number, date, due_date, etc.)
Delete Invoice (DELETE /invoices/{id})
id(integer) - Invoice ID Returns 200 even if delete fails (soft delete/manual removal needed)
Email & Print:
POST /invoices/{id}/email- Send invoice to customer emailPOST /invoices/{id}/print- Queue print job
Get Associated Ticket (GET /invoices/{id}/ticket)
id(integer) - Invoice ID Returns the ticket linked to this invoice
Example call:
// Create invoice with line items
const invoice = await skill({ name: "repairshopr-invoice" }, {
customer_id: 123,
number: "2024-001",
date: "2024-01-15",
due_date: "2024-02-15",
line_items: [
{ item: "Repair Service", name: "Diagnostic and Repair", price: 150, quantity: 1, taxable: true },
{ item: "Part", name: "Replacement Component", price: 75, quantity: 2, taxable: true }
],
note: "Thank you for your business!"
})
// Send invoice email
await skill({ name: "repairshopr-invoice" }, {}, { id: invoice.invoice.id, method: 'POST', pathParams: {}, endpoint: '/email' })
Response includes:
- Invoice object with
id,number,date,due_date,subtotal,total,tax,is_paid,line_items,customer, etc.
Important
customer_id,number,dateare required for creation- Invoice numbers should be unique
- Use
repairshopr-invoiceline-itemendpoints for line item-specific updates (PUT/DELETE) - Email requires proper customer email on file
- Deleting an invoice may not remove it from the database; use with caution
Related skills
repairshopr-estimate- Convert to invoicerepairshopr-invoiceline-item- Manage line items on invoicesrepairshopr-payment- Record payments against invoicesrepairshopr-ticket- Link invoices to tickets