codat

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 16, 2026 License: MIT Imports: 41 Imported by: 0

README

codat-go

Production-grade Go client for the Codat financial data platform.

Features

  • Supports all major Codat products:
    • Platform
    • Accounting
    • Bank Feeds
    • Lending
    • Expenses
    • Bill Pay
  • Fluent API design
  • Automatic retries with exponential backoff
  • HMAC-SHA256 webhook verification
  • Configurable HTTP client
  • Channel-based pagination support
  • Strongly typed resources

Installation

go get github.com/iamkanishka/codat-go

Quick Start

package main

import (
    "context"
    "log"

    "github.com/iamkanishka/codat-go"
)

func main() {
    client, err := codat.New("your-api-key")
    if err != nil {
        log.Fatal(err)
    }

    companies, err := client.Platform.Companies.List(
        context.Background(),
        domain.PageOpts{},
    )
    if err != nil {
        log.Fatal(err)
    }

    log.Printf("Found %d companies", len(companies.Results))
}

Creating a Client

Using API Key
client, err := codat.New("your-api-key")
Using Custom Configuration
cfg := &config.Config{
    APIKey: "your-api-key",
}

client, err := codat.NewWithConfig(cfg)
Panic on Failure
client := codat.MustNew("your-api-key")

Product Areas

Platform
client.Platform.Companies
client.Platform.Connections
client.Platform.PushOperations
client.Platform.DataStatus
client.Platform.Files
client.Platform.SyncSettings
client.Platform.SupplementalData
client.Platform.APIKeys
client.Platform.Webhooks
Accounting
client.Accounting.Accounts
client.Accounting.BankAccounts
client.Accounting.Bills
client.Accounting.CompanyInfo
client.Accounting.CreditNotes
client.Accounting.Customers
client.Accounting.FinancialStatements
client.Accounting.Invoices
client.Accounting.Items
client.Accounting.JournalEntries
client.Accounting.Payments
client.Accounting.PurchaseOrders
client.Accounting.Suppliers
client.Accounting.TaxRates
client.Accounting.TrackingCategories
Bank Feeds
client.BankFeeds.SourceAccounts
client.BankFeeds.Transactions
Lending
client.Lending.AccountsReceivable
client.Lending.AccountsPayable
client.Lending.Banking
client.Lending.Financials
client.Lending.DataIntegrity
client.Lending.ExcelReports
Expenses
client.Expenses.Sync
client.Expenses.Transactions
client.Expenses.Mappings
Bill Pay
client.BillPay.Bills
client.BillPay.Suppliers
client.BillPay.Payments

Configuration

The SDK supports:

  • Custom API endpoints
  • Custom HTTP clients
  • Retry configuration
  • Default headers
  • Request/response hooks
  • User-Agent customization

Example:

cfg := &config.Config{
    APIKey:     "your-api-key",
    BaseURL:    "https://api.codat.io",
    MaxRetries: 5,
}

client, err := codat.NewWithConfig(cfg)

Creating a Derived Client

newClient, err := client.WithConfig(&config.Config{
    MaxRetries: 10,
})

Error Handling

client, err := codat.New(apiKey)
if err != nil {
    return err
}

All configuration validation errors are returned during client creation.

Retry Support

The SDK includes automatic retry handling with:

  • Exponential backoff
  • Configurable retry limits
  • Rate-limit retry delays
  • Network failure recovery

Webhook Verification

The SDK includes HMAC-SHA256 webhook signature verification helpers for validating incoming Codat webhooks.

License

MIT

Documentation

Overview

Package codat provides a production-grade Go client for the Codat financial data platform. It covers all six product namespaces (Platform, Accounting, BankFeeds, Lending, Expenses, BillPay), a fluent query builder, automatic retry with exponential back-off, HMAC-SHA256 webhook verification, and a channel-based page iterator for streaming large datasets.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Accounting

type Accounting struct {
	Accounts            *accounts.Resource
	BankAccounts        *bankaccounts.Resource
	Bills               *bills.Resource
	CompanyInfo         *companyinfo.Resource
	CreditNotes         *creditnotes.Resource
	Customers           *customers.Resource
	FinancialStatements *financialstatements.Resource
	Invoices            *invoices.Resource
	Items               *items.Resource
	JournalEntries      *journalentries.Resource
	Payments            *payments.Resource
	PurchaseOrders      *purchaseorders.Resource
	Suppliers           *suppliers.Resource
	TaxRates            *taxrates.Resource
	TrackingCategories  *trackingcategories.Resource
}

Accounting groups all accounting data resources.

type BankFeeds

type BankFeeds struct {
	SourceAccounts *bankfeedssourceaccounts.Resource
	Transactions   *bankfeedstransactions.Resource
}

BankFeeds groups bank feed resources.

type BillPay

type BillPay struct {
	Bills     *billpaybills.Resource
	Suppliers *billpaysuppliers.Resource
	Payments  *billpaypayments.Resource
}

BillPay groups bill payment resources.

type Client

type Client struct {
	Platform   *Platform
	Accounting *Accounting
	BankFeeds  *BankFeeds
	Lending    *Lending
	Expenses   *Expenses
	BillPay    *BillPay
	// contains filtered or unexported fields
}

Client is the entry point for all Codat API operations.

client, err := codat.New("your-api-key")
if err != nil {
    log.Fatal(err)
}
companies, err := client.Platform.Companies.List(ctx, domain.PageOpts{})

func MustNew

func MustNew(apiKey string) *Client

MustNew constructs a Client and panics on error.

func New

func New(apiKey string) (*Client, error)

New constructs a Client using the provided API key and default settings.

func NewWithConfig

func NewWithConfig(cfg *config.Config) (*Client, error)

NewWithConfig constructs a Client from a Config.

func (*Client) WithConfig

func (c *Client) WithConfig(override *config.Config) (*Client, error)

WithConfig returns a new Client with the given config overrides applied.

type Expenses

type Expenses struct {
	Sync         *expensesync.Resource
	Transactions *expensetransactions.Resource
	Mappings     *expensemappings.Resource
}

Expenses groups expense management resources.

type Lending

type Lending struct {
	AccountsReceivable *lendingar.Resource
	AccountsPayable    *lendingap.Resource
	Banking            *lendingbanking.Resource
	Financials         *lendingfin.Resource
	DataIntegrity      *lendingdi.Resource
	ExcelReports       *lendingexcel.Resource
}

Lending groups Codat Lending product resources.

type Platform

type Platform struct {
	Companies        *companies.Resource
	Connections      *connections.Resource
	PushOperations   *pushoperations.Resource
	DataStatus       *datastatus.Resource
	Files            *files.Resource
	SyncSettings     *syncsettings.Resource
	SupplementalData *supplementaldata.Resource
	APIKeys          *apikeys.Resource
	Webhooks         *platformwebhooks.Resource
}

Platform groups all platform-management resources.

Directories

Path Synopsis
accounting
accounts
Package accounts accesses the chart of accounts.
Package accounts accesses the chart of accounts.
bankaccounts
Package bankaccounts accesses bank accounts and their transactions.
Package bankaccounts accesses bank accounts and their transactions.
bills
Package bills accesses accounts-payable bills.
Package bills accesses accounts-payable bills.
companyinfo
Package companyinfo accesses general company information from the accounting platform.
Package companyinfo accesses general company information from the accounting platform.
creditnotes
Package creditnotes accesses accounts-receivable credit notes.
Package creditnotes accesses accounts-receivable credit notes.
customers
Package customers accesses accounts-receivable customers.
Package customers accesses accounts-receivable customers.
financialstatements
Package financialstatements accesses financial statement data.
Package financialstatements accesses financial statement data.
invoices
Package invoices provides CRUD and attachment operations for invoices.
Package invoices provides CRUD and attachment operations for invoices.
items
Package items accesses product/service item records.
Package items accesses product/service item records.
journalentries
Package journalentries accesses manual journal entries.
Package journalentries accesses manual journal entries.
payments
Package payments accesses payment records.
Package payments accesses payment records.
purchaseorders
Package purchaseorders accesses purchase order documents.
Package purchaseorders accesses purchase order documents.
suppliers
Package suppliers accesses accounts-payable suppliers.
Package suppliers accesses accounts-payable suppliers.
taxrates
Package taxrates accesses tax rate records.
Package taxrates accesses tax rate records.
trackingcategories
Package trackingcategories accesses cost-center tracking categories.
Package trackingcategories accesses cost-center tracking categories.
bankfeeds
sourceaccounts
Package sourceaccounts manages bank feed source accounts.
Package sourceaccounts manages bank feed source accounts.
transactions
Package transactions pushes bank feed transactions.
Package transactions pushes bank feed transactions.
billpay
bills
Package bills accesses bills through the BillPay product.
Package bills accesses bills through the BillPay product.
payments
Package payments manages bill payments via the BillPay product.
Package payments manages bill payments via the BillPay product.
suppliers
Package suppliers accesses suppliers through the BillPay product.
Package suppliers accesses suppliers through the BillPay product.
Package config holds the configuration types and resolution logic for the Codat client.
Package config holds the configuration types and resolution logic for the Codat client.
Package domain contains all pure domain types for the Codat API client.
Package domain contains all pure domain types for the Codat API client.
expenses
mappings
Package mappings returns mapping options for expense categorisation.
Package mappings returns mapping options for expense categorisation.
sync
Package sync manages expense sync operations.
Package sync manages expense sync operations.
transactions
Package transactions manages expense transaction submission.
Package transactions manages expense transaction submission.
internal
errors
Package errors defines the CodatError type returned by all SDK operations.
Package errors defines the CodatError type returned by all SDK operations.
httpclient
Package httpclient provides the low-level HTTP execution layer for the Codat SDK: request building, retry logic, response decoding, and error mapping.
Package httpclient provides the low-level HTTP execution layer for the Codat SDK: request building, retry logic, response decoding, and error mapping.
paginator
Package paginator provides page-building helpers and the Iterator/Collect streaming primitives used by every list resource.
Package paginator provides page-building helpers and the Iterator/Collect streaming primitives used by every list resource.
resource
Package resource provides the base Resource type shared by all SDK resource packages.
Package resource provides the base Resource type shared by all SDK resource packages.
lending
accountspayable
Package accountspayable accesses Lending AP data.
Package accountspayable accesses Lending AP data.
accountsreceivable
Package accountsreceivable accesses Lending AR data.
Package accountsreceivable accesses Lending AR data.
banking
Package banking accesses banking data via the Lending API.
Package banking accesses banking data via the Lending API.
dataintegrity
Package dataintegrity checks data integrity across sources.
Package dataintegrity checks data integrity across sources.
excelreports
Package excelreports generates and downloads Excel lending reports.
Package excelreports generates and downloads Excel lending reports.
financials
Package financials accesses financial statements via the Lending API.
Package financials accesses financial statements via the Lending API.
platform
apikeys
Package apikeys manages Codat API keys.
Package apikeys manages Codat API keys.
companies
Package companies provides CRUD and utility operations on Codat companies.
Package companies provides CRUD and utility operations on Codat companies.
connections
Package connections manages data connections for Codat companies.
Package connections manages data connections for Codat companies.
datastatus
Package datastatus queries data sync status for a company.
Package datastatus queries data sync status for a company.
files
Package files manages file uploads and downloads for Codat companies.
Package files manages file uploads and downloads for Codat companies.
pushoperations
Package pushoperations queries and polls asynchronous write operations.
Package pushoperations queries and polls asynchronous write operations.
supplementaldata
Package supplementaldata manages supplemental data configuration.
Package supplementaldata manages supplemental data configuration.
syncsettings
Package syncsettings manages sync configuration for Codat companies.
Package syncsettings manages sync configuration for Codat companies.
webhooks
Package webhooks manages registered webhook consumers.
Package webhooks manages registered webhook consumers.
Package query provides a fluent builder for Codat filter query strings.
Package query provides a fluent builder for Codat filter query strings.
Package webhooks provides HMAC-SHA256 verification and typed event routing for Codat inbound webhook events.
Package webhooks provides HMAC-SHA256 verification and typed event routing for Codat inbound webhook events.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL