LatticeStripe
What's new in v1.0 — LatticeStripe 1.0 ships with full Billing (Invoices, Subscriptions, Schedules) and Connect (Accounts, Transfers, Payouts, Balance) coverage. See the v1.0 highlights in CHANGELOG.
A production-grade, idiomatic Elixir SDK for the Stripe API.
Full documentation available on HexDocs.
Installation
Add lattice_stripe to your dependencies in mix.exs:
def deps do
[
{:lattice_stripe, "~> 0.2"}
]
endQuick 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
- Customers, PaymentIntents, SetupIntents, PaymentMethods, Refunds, Checkout Sessions (payment / subscription / setup modes)
-
Structured, pattern-matchable errors:
:card_error,:auth_error,:rate_limit_error,:server_error, and more - Auto-pagination — stream through large result sets lazily with Elixir Streams
- Guide: Payments
Billing
- Invoices — create, finalize, pay, void, send, list, search
- Subscriptions with lifecycle verbs (cancel, resume, pause_collection, trial settings)
- Subscription Schedules for phased billing with proration guards
- Guide: Subscriptions
Connect
- Connect accounts (Standard, Express, Custom) with onboarding AccountLinks
- Transfers, TransferReversals, Payouts, External Accounts
- Balance + BalanceTransactions for platform-fee reconciliation
-
Per-client and per-request
stripe_accountfor platform integrations - Guide: Connect
Platform
-
Pluggable
Transport,Json, andRetryStrategybehaviours — bring your own HTTP client -
Automatic retry with exponential backoff, respecting Stripe's
Stripe-Should-Retryheader - Automatic idempotency-key generation and safe replay
- Telemetry events for every request, compatible with any monitoring stack
-
Phoenix-ready
Webhook.Plugwith raw-body capture and signature verification - Guide: Extending LatticeStripe
Compatibility
| Requirement | Version |
|---|---|
| Elixir | >= 1.15 |
| Erlang/OTP | >= 26 |
| Stripe API | 2026-03-25.dahlia |
Documentation
Full documentation with guides, examples, and API reference is available on HexDocs.
Guides available:
- Getting Started
- Client Configuration
- Payments
- Checkout
- Webhooks
- Error Handling
- Testing
- Telemetry
- Extending LatticeStripe
Contributing
See CONTRIBUTING.md for development setup and guidelines.
License
MIT — see LICENSE for details.