From syncro-msp
Manages Syncro MSP invoices: creates, edits, tracks payments and statuses, handles line items and billing workflows via API patterns.
npx claudepluginhub wyre-technology/msp-claude-plugins --plugin syncroThis skill uses the workspace's default tool permissions.
Syncro invoices are the core of your billing workflow. Invoices can be created manually, generated from tickets, or produced automatically from recurring contracts. This skill covers invoice creation, line item management, payment processing, and billing workflows.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Analyzes BMad project state from catalog CSV, configs, artifacts, and query to recommend next skills or answer questions. Useful for help requests, 'what next', or starting BMad.
Syncro invoices are the core of your billing workflow. Invoices can be created manually, generated from tickets, or produced automatically from recurring contracts. This skill covers invoice creation, line item management, payment processing, and billing workflows.
A billing document sent to customers.
| Field | Type | Required | Description |
|---|---|---|---|
id | integer | System | Unique identifier |
number | string | System | Invoice number |
customer_id | integer | Yes | Billing customer |
date | date | Yes | Invoice date |
due_date | date | No | Payment due date |
status | string | Yes | Invoice status |
subtotal | decimal | System | Sum of line items |
tax | decimal | System | Calculated tax |
total | decimal | System | Final amount due |
balance | decimal | System | Remaining balance |
notes | text | No | Invoice notes |
terms | text | No | Payment terms |
| Status | Description |
|---|---|
| Draft | Not yet sent to customer |
| Sent | Emailed to customer |
| Viewed | Customer has viewed |
| Partial | Partially paid |
| Paid | Fully paid |
| Void | Cancelled/voided |
Individual billable items on an invoice.
| Field | Type | Required | Description |
|---|---|---|---|
id | integer | System | Unique identifier |
invoice_id | integer | Yes | Parent invoice |
product_id | integer | No | Product/service reference |
name | string | Yes | Item description |
quantity | decimal | Yes | Quantity |
price | decimal | Yes | Unit price |
taxable | boolean | No | Subject to tax |
total | decimal | System | Line total |
Payment received against an invoice.
| Field | Type | Required | Description |
|---|---|---|---|
id | integer | System | Unique identifier |
invoice_id | integer | Yes | Associated invoice |
amount | decimal | Yes | Payment amount |
payment_method | string | No | How payment was made |
reference | string | No | Check/transaction number |
date | date | Yes | Payment date |
notes | text | No | Payment notes |
POST /api/v1/invoices
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
{
"customer_id": 12345,
"date": "2024-02-15",
"due_date": "2024-03-15",
"notes": "Thank you for your business!",
"line_items": [
{
"name": "Managed Services - February 2024",
"quantity": 1,
"price": 500.00,
"taxable": true
},
{
"name": "On-site support - 2 hours",
"quantity": 2,
"price": 125.00,
"taxable": true
}
]
}
Invoices for a customer:
GET /api/v1/invoices?customer_id=12345
Unpaid invoices:
GET /api/v1/invoices?status=sent
Date range:
GET /api/v1/invoices?date_from=2024-01-01&date_to=2024-01-31
Paginated listing:
GET /api/v1/invoices?page=1
GET /api/v1/invoices/{id}
Response includes:
PUT /api/v1/invoices/{id}
Content-Type: application/json
{
"notes": "Updated payment terms",
"due_date": "2024-03-30"
}
POST /api/v1/invoices/{id}/line_items
Content-Type: application/json
{
"name": "Additional support hours",
"quantity": 1.5,
"price": 125.00,
"taxable": true
}
POST /api/v1/invoices/{id}/email
Content-Type: application/json
{
"to": "billing@acme.example.com",
"cc": "manager@acme.example.com",
"subject": "Invoice #1042 from MSP Company",
"message": "Please find attached your invoice for services rendered."
}
POST /api/v1/invoices/{id}/payments
Content-Type: application/json
{
"amount": 750.00,
"payment_method": "Credit Card",
"reference": "TXN-12345",
"date": "2024-02-20",
"notes": "Paid via online portal"
}
PUT /api/v1/invoices/{id}
Content-Type: application/json
{
"status": "void"
}
Review ticket time entries
Create invoice
Add line items
Review and send
Set up contract
Auto-generate invoices
Send and track
Monitor aging
Send reminders
Record payments
Reconcile
Review open tickets
Generate invoices
Review drafts
Send batch
{
"invoice": {
"id": 5678,
"number": "INV-2024-0042",
"customer_id": 12345,
"date": "2024-02-15",
"due_date": "2024-03-15",
"status": "sent",
"subtotal": 750.00,
"tax": 56.25,
"total": 806.25,
"balance": 806.25,
"notes": "Thank you for your business!",
"created_at": "2024-02-15T10:00:00Z",
"line_items": [
{
"id": 1001,
"name": "Managed Services - February 2024",
"quantity": 1,
"price": 500.00,
"taxable": true,
"total": 500.00
},
{
"id": 1002,
"name": "On-site support - 2 hours",
"quantity": 2,
"price": 125.00,
"taxable": true,
"total": 250.00
}
]
}
}
{
"payment": {
"id": 789,
"invoice_id": 5678,
"amount": 806.25,
"payment_method": "Credit Card",
"reference": "TXN-12345",
"date": "2024-02-20",
"notes": "Paid via online portal",
"created_at": "2024-02-20T14:30:00Z"
}
}
| Code | Message | Resolution |
|---|---|---|
| 400 | Invalid parameters | Check field values |
| 401 | Unauthorized | Verify API key |
| 404 | Invoice not found | Confirm invoice ID |
| 422 | Validation failed | Check required fields |
| 429 | Rate limited | Wait and retry |
"customer_id is required" - Invoice must have a customer
"date is required" - Invoice must have a date
"Cannot modify paid invoice" - Void instead of editing
"Payment exceeds balance" - Check payment amount
Syncro integrates with popular accounting software: