Stripe Mock

stripe-mock is a mock HTTP server that responds like the real Stripe API. It can be used instead of Stripe's testmode to make test suites integrating with Stripe faster and less brittle.
Alternatives To Stripe Mock
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Stripe Ruby1,8547,140863 days ago350November 30, 202313mitRuby
Ruby library for the Stripe API.
Stripe Mock1,252
3 days ago244November 16, 20233mitGo
stripe-mock is a mock HTTP server that responds like the real Stripe API. It can be used instead of Stripe's testmode to make test suites integrating with Stripe faster and less brittle.
Laravel Stripe Webhooks453432 months ago41October 18, 2023mitPHP
Handle Stripe webhooks in a Laravel application
Request Migrations163
2 years ago11May 09, 20194mitPHP
HTTP Request Migrations for API Versioning like Stripe
12 years agoPython
Collection of web service libraries for Tornado web framework
Payment Server Template15
9 hours agomitTypeScript
Payment Server Template is a generic open-source payment server that has a simple yet powerful design to connect your business with third-party payment solution provider companies (like Stripe or Coinbase).
Wtc1415 years ago6August 30, 2018mitJavaScript
Webtask Compilers for use with
Http Einhorn9
18 years agoMay 25, 2021Go
Go library to run http servers on top of stripe's einhorn.
7 years ago1December 05, 2012mitC#
A simple no config http module that listens for webhooks and provides a simple subscription model.
Micro Stripe Payment4
4 years ago16JavaScript
An asynchronous HTTP micro-service for accepting Stripe payments on static sites.
Alternatives To Stripe Mock
Select To Compare

Alternative Project Comparisons

stripe-mock Build Status

stripe-mock is a mock HTTP server based on the real Stripe API. It accepts the same requests and parameters that the Stripe API accepts, and rejects requests whose parameters are not recognized or have incorrect types. Its responses resemble the responses of the real Stripe API in terms of data type; however, stripe-mock does not attempt to reproduce the behavior of the real Stripe API at all. It cannot reject all invalid requests, and its responses are completely hardcoded. They will have a correct type, but they will not necessarily be realistic Stripe responses.

stripe-mock is meant for basic sanity checks. We use it in the test suites of our server-side SDKs, like stripe-ruby, stripe-go, etc, to help validate that the SDK hits the right URL and sends the right parameters. If you have more sophisticated testing needs, you shouldn't use stripe-mock. Always test changes to your Stripe integration against testmode. For regression test suites, you should define your own mocks, or use a playback testing tool such as the VCR gem.

While stripe-mock is naïve, it is powered by the Stripe OpenAPI specification and is therefore kept up-to-date with the latest methods, resources, and fields.

Features and limitations

stripe-mock supports the following features:

  • It has a catalog of every API URL and their signatures. It responds to URLs that exist with a resource that it returns and 404s on URLs that don't exist.
  • JSON Schema is used to check the validity of the parameters of incoming requests. Validation is comprehensive, but far from exhaustive, so don't expect the full barrage of checks of the live API.
  • Responses are generated based off resource fixtures. They're also generated from within Stripe's API, and similar to the sample data available in Stripe's API reference. They are hardcoded, and will not necessarily represent realistic responses based on the parameters you input into the request.
  • It reflects the values of valid input parameters into responses where the naming and type are the same. So if a charge is created with amount=123, a charge will be returned with "amount": 123.
  • It will respond over HTTP or over HTTPS. HTTP/2 over HTTPS is available if the client supports it.


  • stripe-mock is stateless. Data you send on a POST request will be validated, but it will be completely ignored beyond that. It will not be reflected on the response or on any future request -- unlike the real Stripe API, which stores the information you send it.
  • For polymorphic endpoints (say one that returns either a card or a bank account), only a single resource type is ever returned. There's no way to specify which one that is.
  • It's locked to the latest version of Stripe's API and doesn't support old versions.
  • Testing for specific responses and errors is currently not supported. It will return a success response instead of the desired error response.

Future plans

The scope we envision for stripe-mock has significantly narrowed since 2017 when we first released it. Back in 2017, our vision was for stripe-mock was to return responses that were realistic as well as just having the expected types. This has changed. We are currently not planning to add statefulness or more sophisticated testing features to stripe-mock. stripe-mock will remain a tool for basic sanity checks. If you have more sophisticated needs, you should define your own mocks, use a playback testing tool like the VCR gem, or find a community library you trust. Be careful, though. Always test changes to your Stripe integration against testmode. Mock implementations of Stripe can never behave exactly at the Stripe API does, and might differ in nuanced (and potentially dangerous) ways.


If you have Go installed, you can install the basic binary with:

go install

With no arguments, stripe-mock will listen with HTTP on its default port of 12111 and HTTPS on 12112:


Ports can be specified explicitly with:

stripe-mock -http-port 12111 -https-port 12112

(Leave either -http-port or -https-port out to activate stripe-mock on only one protocol.)

Have stripe-mock select a port automatically by passing 0:

stripe-mock -http-port 0

It can also listen via Unix socket:

stripe-mock -http-unix /tmp/stripe-mock.sock -https-unix /tmp/stripe-mock-secure.sock


Get it from Homebrew or download it from the releases page:

brew install stripe/stripe-mock/stripe-mock

# start a stripe-mock service at login
brew services start stripe-mock

# upgrade if you already have it
brew upgrade stripe-mock

# restart the service after upgrading
brew services restart stripe-mock

The Homebrew service listens on port 12111 for HTTP and 12112 for HTTPS and HTTP/2.


docker run --rm -it -p 12111-12112:12111-12112 stripe/stripe-mock:latest

The default Docker ENTRYPOINT listens on port 12111 for HTTP and 12112 for HTTPS and HTTP/2.

Sample request

After you've started stripe-mock, you can try a sample request against it:

curl -i http://localhost:12111/v1/charges -H "Authorization: Bearer sk_test_123"



Run the test suite:

go test ./...

Updating OpenAPI

Update the OpenAPI spec by running make update-openapi-spec in the root of the repo.

make update-openapi-spec


Dependencies are managed using go modules and require Go 1.11+ with GO111MODULE=on.


Releases are automatically published by Travis CI using goreleaser when a new tag is pushed:

git pull origin --tags
git tag v0.1.1
git push origin --tags
Popular Stripe Projects
Popular Http Projects
Popular Economics Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Stripe Api