Moneyline
SDKs

Go SDK

Official Go client for the Moneyline API.

Installation

go get github.com/paragonhq/moneylined/sdks/go

Requires 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),
)
OptionDefaultDescription
WithBaseURLhttps://api.moneyline.devAPI base URL
WithHTTPClienthttp.DefaultClient (60s timeout)Custom HTTP client
WithMaxRetries3Max retries on transient errors

Resources

Available Services

ServiceDescription
client.SubmissionsCreate, retrieve, list, update, delete submissions
client.DocumentsUpload, retrieve, list, delete, parse, reclassify, split
client.TransactionsCreate, list, enrich, delete
client.AnalyticsScorecards, cashflow, risk, balances, anomalies, forecasts, benchmarks
client.PoliciesCreate, list, evaluate policies
client.RulesCreate, list, update, delete rules
client.WebhooksCreate, list, update, delete, test webhooks
client.MerchantsSearch, retrieve merchant data
client.CategoriesList transaction categories
client.FundersRetrieve, list, submit to funders
client.IntegrationsCreate, manage integration links (Plaid, etc.)
client.EntitiesList definitions, get entities, bulk save
client.IsoApplicationsUpload 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.

On this page