Sevdesk
A little library for the sevDesk RestAPI. To create invoices and positions.
Install / Use
/learn @gowizzard/SevdeskREADME
sevDesk GO Lang
With this small library we want to simplify the handling of the sevDesk Api. Currently you can only create invoices and add invoices via ID single positions.
Install
go get github.com/gowizzard/sevdesk
How to use?
You can currently only create invoices and items in the invoices. For this purpose, sevDesk provides some parameters that are currently not well documented.
Get invoices
It is now possible to read out the invoices. This is done in a very simple way. You use the following function with your user token and get back an object with slices.
invoices, err := sevdesk.Invoices("token")
if err != nil {
fmt.Println("Error: ", err)
}
fmt.Println(invoices)
Create invoice
Here you will find an example how to create a new invoice in sevDesk.
invoice, err := sevdesk.NewInvoice(sevdesk.Invoice{"contactID", "address", "invoiceDate", "status", "invoiceType", "contactPerson", "subject", "headText", "footText", "token"})
if err != nil {
fmt.Println("Error: ", err)
}
// Return the invoice id
fmt.Println(invoice.Objects.ID)
Create new position in an invoice
Here is an example how to create a new position in an existing invoice.You need the ID of the invoice and of course the contact ID. You also need the parameter that distinguishes between pcs, hours or %.
For this I have worked it all out as follows. The funny thing is that the ID does not start with 0 but with 1:
1 = Stk, 2 = m², 3 = m, 4 = kg, 5 = t, 6 = lfm, 7 = pauschal, 8 = m³, 9 = Std, 10 = km, 11 = %, 12 = Tag(e), 13 = l
In sevDesk the price is transferred in gross, therefore we have added a calculation of the gross value to the function. So you set the net value + the VAT in the function.
position, err := sevdesk.NewPosition(sevdesk.Position{"45", "1", "16", "Backups", "Backups of all Websites", "9", "invoiceID", "token"})
if err != nil {
fmt.Println("Error: ", err)
}
// Return the invoice id
fmt.Println(position.Objects.ID)
Send invoice via email
So that you can send your invoices directly there is now a new function. You can adjust several parameters like email, CC, BCC, subject and a text.
When using this function, an email is sent directly to the specified email address and the invoice is attached as a PDF.
// Send email
email, err := sevdesk.SendInvoiceEmail(sevdesk.InvoiceEmail{invoice.Objects.ID, "email", "subject", "text", "cc", "bcc", "token"})
if err != nil {
fmt.Println(err)
}
Send invoice for download
In order to download an invoice, the status must first be changed to sent. You can do this with the following function.
sendInvoice, err := sevdesk.SendInvoicePDF(sevdesk.SendInvoice{invoice.Objects.ID, "VPDF", "false", "token"})
if err != nil {
fmt.Println(err)
}
Downlaod invoice
When the invoice has been marked as sent, it can be downloaded. The data will be returned as bytes.
download, err := sevdesk.DownloadInvoicePDF(sevdesk.DownloadInvoice{invoice.Objects.ID, "true", "true", "token"})
if err != nil {
fmt.Println(err)
}
Get contacts
If you want to read out all customers, then it goes as follows:
contacts, err := sevdesk.Contacts("token")
if err != nil {
fmt.Println("Error: ", err)
}
Set new contact
If you want to set a new Contact, then this goes as follows. Some attributes are needed for this. The category[id] must be set. The best is a 3. Otherwise the other fields are free. The token must be specified of course.
contact, err := sevdesk.NewContact(sevdesk.Contact{"Name", "Name2", "Surname", "Familyname", "Vat number", "Tax number", "Bank account", "Bank number", "CategoryID", "token"})
if err != nil {
fmt.Println("Error: ", err)
}
Add information
For each newly created contact, additional information about the contact can be added. Like an email, a phone number or a website. The CategorieID is very important. You can find it here.
The key represents what type it is (1: Private, 2: Work, 3. Fax, 4. Mobil, 5. empty, 6. Autobox, 7. Newsletter, 8. Invoice address)
Add address
If you want to add an address, this is how to do it:
address, err := sevdesk.NewAddress(sevdesk.Address{"Street", "Zip", "City", "ContactID", "Token"})
if err != nil {
fmt.Println("Error: ", err)
}
Add email
If you want to add an email, then this goes as follows:
email, err := sevdesk.NewEmail(sevdesk.Communication{"Key", "Value", "ContactID", "Token"})
if err != nil {
fmt.Println("Error: ", err)
}
Add phone
If you want to add a phone number, this is how to do it:
phone, err := sevdesk.NewPhone(sevdesk.Communication{"Key", "Value", "ContactID", "Token"})
if err != nil {
fmt.Println("Error: ", err)
}
Add mobile
If you want to add a mobile number, this is how to do it:
mobile, err := sevdesk.NewMobile(sevdesk.Communication{"Key", "Value", "ContactID", "Token"})
if err != nil {
fmt.Println("Error: ", err)
}
Add website
If you want to add a website, this is how to do it:
website, err := sevdesk.NewWebsite(sevdesk.Communication{"Key", "Value", "ContactID", "Token"})
if err != nil {
fmt.Println("Error: ", err)
}
Help
If you have any questions or comments, please contact us by e-mail at jonas.kwiedor@jj-ideenschmiede.de
Related Skills
xurl
352.0kA CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
wanwu
4.3kChina Unicom's Yuanjing Wanwu Agent Platform is an enterprise-grade, multi-tenant AI agent development platform. It helps users build applications such as intelligent agents, workflows, and rag, and also supports model management. The platform features a developer-friendly license, and we welcome all developers to build upon the platform.
career-ops
22.4kAI-powered job search system built on Claude Code. 14 skill modes, Go dashboard, PDF generation, batch processing.
gin-vue-admin
24.5k🚀Vite+Vue3+Gin拥有AI辅助的基础开发平台,企业级业务AI+开发解决方案,内置mcp辅助服务,内置skills管理,支持TS和JS混用。它集成了JWT鉴权、权限管理、动态路由、显隐可控组件、分页封装、多点登录拦截、资源权限、上传下载、代码生成器、表单生成器和可配置的导入导出等开发必备功能。
