Go SDK for the eleata Peppol API. Validate EU invoices (Peppol BIS 3, XRechnung, Factur-X, UBL).
go get github.com/hernaninverso/peppol-gopackage main
import (
"context"
"log"
"os"
"github.com/hernaninverso/peppol-go"
)
func main() {
client := peppol.NewClient(os.Getenv("ELEATA_KEY"))
xml, err := os.ReadFile("invoice.xml")
if err != nil {
log.Fatal(err)
}
result, err := client.Validate(context.Background(), peppol.ValidateRequest{
Format: peppol.FormatXRechnung,
XML: xml,
})
if err != nil {
log.Fatal(err)
}
if !result.Valid {
log.Fatalf("Invalid: %v", result.Errors)
}
log.Printf("✓ Valid in %dms — %s", result.DurationMS, result.ReportURL)
}- Timeout: 15 seconds (override via
peppol.WithTimeout(d)) - Retries: 3 with exponential backoff (override via
peppol.WithRetries(n)) - Max payload: 5 MB (client-side reject)
- Base URL:
https://api.eleata.io(override viapeppol.WithBaseURL(s))
client := peppol.NewClient(
os.Getenv("ELEATA_KEY"),
peppol.WithTimeout(30 * time.Second),
peppol.WithRetries(5),
)Client is safe for concurrent use. Reuse one client across goroutines.
MIT