SDKs
Go SDK
Official Go client for the Moneyline API.
Installation
go get github.com/paragonhq/moneylined/sdks/goRequires Go 1.22+.
Quick Start
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/paragonhq/moneylined/sdks/go/moneyline"
)
func main() {
client, err := moneyline.NewClient(os.Getenv("MONEYLINE_API_KEY"))
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Create a submission
sub, err := client.Submissions.Create(ctx, &moneyline.CreateSubmissionParams{
ExternalID: "acme-001",
Name: "Acme Corp",
})
if err != nil {
log.Fatal(err)
}
// Upload a document
f, _ := os.Open("bank-statement.pdf")
defer f.Close()
doc, err := client.Documents.Upload(ctx, sub.ID, "bank-statement.pdf", f)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Uploaded: %s (%s)\n", doc.ID, doc.Class)
// Get scorecard
scorecard, err := client.Analytics.GetScorecard(ctx, sub.ID)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Risk score: %d\n", scorecard.RiskScore)
}Configuration
client, err := moneyline.NewClient(
"ml_live_xxxxx",
moneyline.WithBaseURL("https://api.moneyline.dev"),
moneyline.WithHTTPClient(&http.Client{Timeout: 30 * time.Second}),
moneyline.WithMaxRetries(3),
)| Option | Default | Description |
|---|---|---|
WithBaseURL | https://api.moneyline.dev | API base URL |
WithHTTPClient | http.DefaultClient (60s timeout) | Custom HTTP client |
WithMaxRetries | 3 | Max retries on transient errors |
Resources
Available Services
| Service | Description |
|---|---|
client.Submissions | Create, retrieve, list, update, delete submissions |
client.Documents | Upload, retrieve, list, delete, parse, reclassify, split |
client.Transactions | Create, list, enrich, delete |
client.Analytics | Scorecards, cashflow, risk, balances, anomalies, forecasts, benchmarks |
client.Policies | Create, list, evaluate policies |
client.Rules | Create, list, update, delete rules |
client.Webhooks | Create, list, update, delete, test webhooks |
client.Merchants | Search, retrieve merchant data |
client.Categories | List transaction categories |
client.Funders | Retrieve, list, submit to funders |
client.Integrations | Create, manage integration links (Plaid, etc.) |
client.Entities | List definitions, get entities, bulk save |
client.IsoApplications | Upload ISO applications |
Analytics Methods
scorecard, _ := client.Analytics.GetScorecard(ctx, subID)
cashflow, _ := client.Analytics.GetCashflow(ctx, subID)
risk, _ := client.Analytics.GetRiskScore(ctx, subID)
balance, _ := client.Analytics.GetBalance(ctx, subID)
anomalies, _ := client.Analytics.GetAnomalies(ctx, subID)
stats, _ := client.Analytics.GetStatistics(ctx, subID)
forecasts, _ := client.Analytics.GetForecasts(ctx, subID)
summary, _ := client.Analytics.GetBankStatementSummary(ctx, subID)
recurring, _ := client.Analytics.GetRecurringTransactions(ctx, subID)
debt, _ := client.Analytics.GetDebtCandidates(ctx, subID)
merchants, _ := client.Analytics.GetMerchantSummary(ctx, subID)
coverage, _ := client.Analytics.GetDataCoverage(ctx, subID)
financials, _:= client.Analytics.GetFinancials(ctx, subID)Documents
// Upload
doc, _ := client.Documents.Upload(ctx, subID, "file.pdf", reader)
// Retrieve
doc, _ := client.Documents.Get(ctx, "doc_xxxxx")
// List
page, _ := client.Documents.List(ctx, &moneyline.ListDocumentsParams{
SubmissionID: subID,
Limit: 50,
})
// Parsed data
parsed, _ := client.Documents.GetParsedResults(ctx, "doc_xxxxx")
// Reclassify / Reparse / Split
doc, _ = client.Documents.Reclassify(ctx, "doc_xxxxx", "bank_statement")
_ = client.Documents.Reparse(ctx, "doc_xxxxx")
docs, _ := client.Documents.Split(ctx, "doc_xxxxx")
// Export
xlsx, _ := client.Documents.ExportXLSX(ctx, subID)Error Handling
sub, err := client.Submissions.Retrieve(ctx, "sub_xxxxx")
if err != nil {
var apiErr *moneyline.APIError
if errors.As(err, &apiErr) {
fmt.Printf("API error %d: %s (code: %s)\n",
apiErr.StatusCode, apiErr.Message, apiErr.Code)
}
}All methods accept a context.Context for cancellation and deadline support.