LatticeStripe

Hex.pmCIDocsLicense: MIT

Current release:1.7.x on Hex — see CHANGELOG for what shipped since 1.1.0. Evaluating fit? Start with User Flows & JTBD.

A production-grade, idiomatic Elixir SDK for the Stripe API.

Full documentation available on HexDocs.

If you are evaluating how this fits into a real SaaS billing architecture, start with Guide: User Flows & JTBD.

v1.x scope

As of 1.7.0, LatticeStripe is feature-complete for its intended v1.x scope: mainstream SaaS integrations — payments, billing, Connect, tax on custom flows, webhooks (including thin events), and production operator guides.

Not in v1.x scope (maintenance mode; additions only on adopter pull):

See Scope for boundaries, escape hatches, and how to request coverage. See API Stability for the semver contract.

Docs Ladder

Use the docs in this order:

Choose Your Route

Installation

Add lattice_stripe to your dependencies in mix.exs:

def deps do
[
{:lattice_stripe, "~> 1.7"}
]
end

Quick Start

LatticeStripe uses Finch for HTTP requests. Add it to your supervision tree in application.ex:

children = [
{Finch, name: MyApp.Finch}
]

Then create a client and make your first API call:

client = LatticeStripe.Client.new!(
api_key: "sk_test_...",
finch: MyApp.Finch
)
{:ok, payment_intent} = LatticeStripe.PaymentIntent.create(client, %{
"amount" => 2000,
"currency" => "usd",
"payment_method" => "pm_card_visa",
"confirm" => true,
"automatic_payment_methods" => %{"enabled" => true, "allow_redirects" => "never"}
})
IO.puts("PaymentIntent created: #{payment_intent.id}")

Features

Payments

Billing

Operations and diagnostics

Connect

Platform

Compatibility

RequirementVersion
Elixir>= 1.15
Erlang/OTP>= 26
Stripe API2026-03-25.dahlia

Documentation

Full documentation with guides, examples, and API reference is available on HexDocs.

Start here on HexDocs:

Canonical guide clusters:

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

MIT — see LICENSE for details.