| 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_SUBDOMAIN
VITE_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 status
unpaid (boolean) - Filter by unpaid status
ticket_id (integer) - Filter by associated ticket
since_updated_at (string) - Invoices updated since date
page (integer) - Page number (25 results per page)
Create Invoice (POST /invoices)
Required:
customer_id (integer) - Customer ID
number (string) - Invoice number
date (string) - Invoice date (ISO 8601)
Optional:
due_date (string) - Payment due date
subtotal, total, tax (strings/numbers) - Amounts
verified_paid, tech_marked_paid, is_paid (boolean) - Payment status
ticket_id (integer) - Associated ticket
location_id (integer) - Location
contact_id (integer) - Contact person
po_number (string) - Customer PO number
note (string) - Customer notes
hardwarecost (number) - Hardware cost
line_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 email
POST /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:
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!"
})
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, date are required for creation
- Invoice numbers should be unique
- Use
repairshopr-invoiceline-item endpoints 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 invoice
repairshopr-invoiceline-item - Manage line items on invoices
repairshopr-payment - Record payments against invoices
repairshopr-ticket - Link invoices to tickets