Skip to main content

Installation

Requires Go 1.24 or newer.

Quick start

Response structs come from the generated openapi subpackage and use the API’s own field casing: submission.Id, submission.ExternalId — not ID / ExternalID. Request param structs are hand-written and do use Go casing (CreateSubmissionParams.ExternalID). The two differ on purpose.

Configuration

NewClient takes the API key plus functional options.

Pagination

List methods that accept a *Params struct return *PaginatedResponse[T] with Data, HasMore, Cursor, and TotalCount.
Cursor paging does not currently advance. PaginatedResponse.Cursor is deserialized from cursor, but the API returns the next cursor as next_cursor, so the field stays empty and a cursor loop stops after one page. Until that is fixed, read HasMore and raise Limit.
The simpler list methods (Categories.List, Funders.List, Rules.List, Webhooks.List, Entities.List, Integrations.List) take no params and return a plain slice.

Resources

Submissions

Note that Get is the Go name for what Node and Python call retrieve, and there is no waitForProcessing helper — poll GetProcessingStatus or use webhooks.

Documents

Transactions

Analytics

Policies and rules

The Go SDK exposes a narrower policy surface than Node and Python — EvaluateAll lives on Rules.

Webhooks

Merchants, categories, funders

Integrations, entities, ISO applications

Error handling

API failures return *moneyline.Error, carrying Message, Type, Code, Param, StatusCode, and RequestID.

Webhook signature verification

Generated types

Response bodies live in a separate openapi subpackage, generated from the spec with go generate ./...:
The subpackage exists to avoid struct name collisions with the hand-written types in moneyline.