{"id":18716331,"url":"https://github.com/killbill/killbill-stripe-plugin","last_synced_at":"2026-04-01T17:01:23.710Z","repository":{"id":3704306,"uuid":"4775627","full_name":"killbill/killbill-stripe-plugin","owner":"killbill","description":"Kill Bill plugin for Stripe","archived":false,"fork":false,"pushed_at":"2026-02-23T04:22:22.000Z","size":550,"stargazers_count":23,"open_issues_count":12,"forks_count":46,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-03-27T23:42:16.726Z","etag":null,"topics":["billing","killbill","payments","subscriptions"],"latest_commit_sha":null,"homepage":"https://killbill.io","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/killbill.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["killbill"]}},"created_at":"2012-06-24T21:46:38.000Z","updated_at":"2026-02-23T04:12:43.000Z","dependencies_parsed_at":"2024-09-10T07:13:28.945Z","dependency_job_id":"f04dd06e-4c52-4604-b569-f5315139f252","html_url":"https://github.com/killbill/killbill-stripe-plugin","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/killbill/killbill-stripe-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/killbill%2Fkillbill-stripe-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/killbill%2Fkillbill-stripe-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/killbill%2Fkillbill-stripe-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/killbill%2Fkillbill-stripe-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/killbill","download_url":"https://codeload.github.com/killbill/killbill-stripe-plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/killbill%2Fkillbill-stripe-plugin/sbom","scorecard":{"id":560019,"data":{"date":"2025-08-11","repo":{"name":"github.com/killbill/killbill-stripe-plugin","commit":"c85142eb0df13acfefa00da489e23401af2fecf5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.7,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":1,"reason":"Found 3/17 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":3,"reason":"4 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/killbill/killbill-stripe-plugin/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/killbill/killbill-stripe-plugin/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/killbill/killbill-stripe-plugin/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/killbill/killbill-stripe-plugin/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/killbill/killbill-stripe-plugin/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/killbill/killbill-stripe-plugin/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/killbill/killbill-stripe-plugin/release.yml/master?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":6,"reason":"SAST tool is not run on all commits -- score normalized to 6","details":["Warn: 13 commits out of 20 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":5,"reason":"5 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-h46c-h94j-95f3","Warn: Project is vulnerable to: GHSA-3f7h-mf4q-vrm4","Warn: Project is vulnerable to: GHSA-5mg8-w23w-74h3","Warn: Project is vulnerable to: GHSA-7g45-4rm6-3mm3","Warn: Project is vulnerable to: GHSA-px9h-x66r-8mpc"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T13:23:49.629Z","repository_id":3704306,"created_at":"2025-08-20T13:23:49.629Z","updated_at":"2025-08-20T13:23:49.629Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["billing","killbill","payments","subscriptions"],"created_at":"2024-11-07T13:12:19.334Z","updated_at":"2026-04-01T17:01:23.624Z","avatar_url":"https://github.com/killbill.png","language":"Java","readme":"# killbill-stripe-plugin\n![Maven Central](https://img.shields.io/maven-central/v/org.kill-bill.billing.plugin.java/stripe-plugin?color=blue\u0026label=Maven%20Central)\n\nPlugin to use [Stripe](https://stripe.com/) as a gateway.\n\nA full end-to-end integration demo is available [here](https://github.com/killbill/killbill-stripe-demo).\n\n## Kill Bill compatibility\n\n| Plugin version | Kill Bill version | Stripe version                                            |\n|---------------:|------------------:| --------------------------------------------------------: |\n|          1.x.y |            0.14.z | [2015-02-18](https://stripe.com/docs/upgrades#2015-02-18) |\n|          3.x.y |            0.16.z | [2015-02-18](https://stripe.com/docs/upgrades#2015-02-18) |\n|          4.x.y |            0.18.z | [2015-02-18](https://stripe.com/docs/upgrades#2015-02-18) |\n|          5.x.y |            0.19.z | [2015-02-18](https://stripe.com/docs/upgrades#2015-02-18) |\n|          6.x.y |            0.20.z | [2015-02-18](https://stripe.com/docs/upgrades#2015-02-18) |\n|          7.0.y |            0.22.z | [2019-12-03](https://stripe.com/docs/upgrades#2019-12-03) |\n|          7.1.y |            0.22.z | [2019-12-03](https://stripe.com/docs/upgrades#2019-12-03) |\n|          7.2.y |            0.22.z | [2020-08-27](https://stripe.com/docs/upgrades#2020-08-27) |\n|          7.3.y |            0.22.z | [2020-08-27](https://stripe.com/docs/upgrades#2020-08-27) |\n|          8.0.y |            0.24.z | [2020-08-27](https://stripe.com/docs/upgrades#2020-08-27) |\n\n### Release notes\n\n* Starting with 7.3.0, the Setup Intents API is used to validate and store payment instruments, instead of the Payment Intents API.\n* We've upgraded numerous dependencies in 7.1.x (required for Java 11 support).\n\n## Requirements\n\nThe plugin needs a database. The latest version of the schema can be found [here](https://github.com/killbill/killbill-stripe-plugin/blob/master/src/main/resources/ddl.sql).\n\n## Installation\n\nLocally:\n\n```\nkpm install_java_plugin stripe --from-source-file target/stripe-plugin-*-SNAPSHOT.jar --destination /var/tmp/bundles\n```\n\n## Configuration\n\nGo to https://dashboard.stripe.com/test/apikeys and copy your `Secret key`.\n\nThen, go to the Kaui plugin configuration page (`/admin_tenants/1?active_tab=PluginConfig`), and configure the `stripe` plugin with your key:\n\n```java\norg.killbill.billing.plugin.stripe.apiKey=sk_test_XXX\n```\n\nAlternatively, you can upload the configuration directly:\n\n```bash\ncurl -v \\\n     -X POST \\\n     -u admin:password \\\n     -H 'X-Killbill-ApiKey: bob' \\\n     -H 'X-Killbill-ApiSecret: lazar' \\\n     -H 'X-Killbill-CreatedBy: admin' \\\n     -H 'Content-Type: text/plain' \\\n     -d 'org.killbill.billing.plugin.stripe.apiKey=sk_test_XXX\norg.killbill.billing.plugin.stripe.chargeDescription=YYY\norg.killbill.billing.plugin.stripe.chargeStatementDescriptor=ZZZ' \\\n     http://127.0.0.1:8080/1.0/kb/tenants/uploadPluginConfig/killbill-stripe\n```\n\n## Securing API Keys\n\nBy default, API keys are stored in plaintext in Kill Bill's tenant configuration. You can keep secrets out of the database by using environment variable references.\n\n### Environment variable references\n\nStore your Stripe keys in environment variables and reference them in the plugin config:\n\n```\norg.killbill.billing.plugin.stripe.apiKey=${env:STRIPE_API_KEY}\norg.killbill.billing.plugin.stripe.publicKey=${env:STRIPE_PUBLIC_KEY}\n```\n\nThis way, secrets never enter the database and can be managed by your orchestration layer (K8s Secrets, HashiCorp Vault, AWS SSM, etc.).\n\nFor multi-tenant setups, each tenant can reference a different environment variable:\n\n```\n# Tenant A config\norg.killbill.billing.plugin.stripe.apiKey=${env:STRIPE_KEY_TENANT_A}\n\n# Tenant B config\norg.killbill.billing.plugin.stripe.apiKey=${env:STRIPE_KEY_TENANT_B}\n```\n\n### Migration note\n\nExisting plaintext configurations continue to work with zero changes. Environment variable references are fully opt-in.\n\n## Payment Method flow\n\nTo charge a payment instrument (card, bank account, etc.), you first need to collect the payment instrument details in Stripe and create an associated payment method in Kill Bill.\n\n### Using Stripe Checkout\n\n_Use this method if you don't want to generate your own form to tokenize cards._\n\nTo save credit cards using [Stripe Checkout](https://stripe.com/docs/payments/checkout):\n\n1. Create a Kill Bill account\n2. Call `/plugins/killbill-stripe/checkout` to generate a Session:\n```bash\ncurl -v \\\n     -X POST \\\n     -u admin:password \\\n     -H \"X-Killbill-ApiKey: bob\" \\\n     -H \"X-Killbill-ApiSecret: lazar\" \\\n     -H \"Content-Type: application/json\" \\\n     -H \"Accept: application/json\" \\\n     -H \"X-Killbill-CreatedBy: demo\" \\\n     -H \"X-Killbill-Reason: demo\" \\\n     -H \"X-Killbill-Comment: demo\" \\\n     \"http://127.0.0.1:8080/plugins/killbill-stripe/checkout?kbAccountId=\u003cKB_ACCOUNT_ID\u003e\"\n```\n\nThe default is to only allow credit cards. If you want to enable sepa direct debit payments, you need to include the `paymentMethodTypes` option, i.e. change the URL of your POST request\nto `http://127.0.0.1:8080/plugins/killbill-stripe/checkout?kbAccountId=\u003cKB_ACCOUNT_ID\u003e\u0026paymentMethodTypes=card\u0026paymentMethodTypes=sepa_debit`.\n\n3. Redirect the user to the Stripe checkout page. The `sessionId` is returned as part of the `formFields` (`id` key):\n```javascript\nstripe.redirectToCheckout({ sessionId: 'cs_test_XXX' });\n```\n**_NOTE:_** Adding payment information, such as credit card details, is unsafe, not recommended, and disabled by default in Stripe API. Therefore, adding a credit card directly via Kaui or the Stripe API is not possible. Instead, use the secure checkout process by creating a session with `mode=setup` see [Link](https://docs.stripe.com/api/checkout/sessions/create) for more details.\n\n4. After entering the credit card or bank account details, the payment method will be available in Stripe. Call `addPaymentMethod` to store the payment method in Kill Bill:\n```bash\ncurl -v \\\n     -X POST \\\n     -u admin:password \\\n     -H \"X-Killbill-ApiKey: bob\" \\\n     -H \"X-Killbill-ApiSecret: lazar\" \\\n     -H \"Content-Type: application/json\" \\\n     -H \"Accept: application/json\" \\\n     -H \"X-Killbill-CreatedBy: demo\" \\\n     -H \"X-Killbill-Reason: demo\" \\\n     -H \"X-Killbill-Comment: demo\" \\\n     -d \"{ \\\"pluginName\\\": \\\"killbill-stripe\\\"}\" \\\n     \"http://127.0.0.1:8080/1.0/kb/accounts/\u003cKB_ACCOUNT_ID\u003e/paymentMethods?pluginProperty=sessionId=cs_test_XXX\"\n```\n\n**_NOTE:_** If you encounter issues with step 4, try to refresh the PaymentMethods in Kaui or API (/1.0/kb/accounts/{accountId}/paymentMethods/refresh). This will load the added PaymentMethods from Stripe.\n\n### Using tokens and sources\n\nIf you have a [token](https://stripe.com/docs/api/tokens) or [sources](https://stripe.com/docs/api/sources), you can pass it directly to `addPaymentMethod` in the plugin properties:\n\n##### Token\n\n```bash\ncurl -v \\\n     -X POST \\\n     -u admin:password \\\n     -H \"X-Killbill-ApiKey: bob\" \\\n     -H \"X-Killbill-ApiSecret: lazar\" \\\n     -H \"Content-Type: application/json\" \\\n     -H \"Accept: application/json\" \\\n     -H \"X-Killbill-CreatedBy: demo\" \\\n     -H \"X-Killbill-Reason: demo\" \\\n     -H \"X-Killbill-Comment: demo\" \\\n     -d \"{ \\\"pluginName\\\": \\\"killbill-stripe\\\"}\" \\\n     \"http://127.0.0.1:8080/1.0/kb/accounts/\u003cKB_ACCOUNT_ID\u003e/paymentMethods?pluginProperty=token=tok_XXX\"\n```\n\n##### Source\n\n```bash\ncurl -v \\\n     -X POST \\\n     -u admin:password \\\n     -H \"X-Killbill-ApiKey: bob\" \\\n     -H \"X-Killbill-ApiSecret: lazar\" \\\n     -H \"Content-Type: application/json\" \\\n     -H \"Accept: application/json\" \\\n     -H \"X-Killbill-CreatedBy: demo\" \\\n     -H \"X-Killbill-Reason: demo\" \\\n     -H \"X-Killbill-Comment: demo\" \\\n     -d \"{ \\\"pluginName\\\": \\\"killbill-stripe\\\"}\" \\\n     \"http://127.0.0.1:8080/1.0/kb/accounts/\u003cKB_ACCOUNT_ID\u003e/paymentMethods?pluginProperty=source=src_XXX\"\n```\n\nTake a look at [kbcmd](https://github.com/killbill/kbcli/blob/master/docs/kbcmd/kbcmd-walkthrough.md) for a step-by-step walkthrough.\n\n**_NOTE:_** If the token/source is already attached to a customer in Stripe, make sure to first set the `STRIPE_CUSTOMER_ID` custom field to the account in Kill Bill (see below) before calling `addPaymentMethod` (in this case, the token will be stored as-is and assumed to be re-usable if you intent to do subsequent payments). Otherwise, the plugin assumes it is a one-time token and will automatically create an associated customer in Stripe attached to this token/source to be able to re-use it (if needed, you can bypass this logic by specifying the `createStripeCustomer=false` plugin property in the `addPaymentMethod` call).\n\n### Other methods\n\nIf you are using [Stripe Elements](https://stripe.com/docs/stripe-js/elements/quickstart) or storing payment methods in Stripe via any other way (or if you want to migrate from another billing system and already have customers in Stripe), the flow to setup Kill Bill accounts is as follows:\n\n1. Create a Kill Bill account\n2. Attach the custom field `STRIPE_CUSTOMER_ID` to the Kill Bill account. The custom field value should be the Stripe customer id\n```bash\ncurl -v \\\n     -X POST \\\n     -u admin:password \\\n     -H \"X-Killbill-ApiKey: bob\" \\\n     -H \"X-Killbill-ApiSecret: lazar\" \\\n     -H \"Content-Type: application/json\" \\\n     -H \"Accept: application/json\" \\\n     -H \"X-Killbill-CreatedBy: demo\" \\\n     -H \"X-Killbill-Reason: demo\" \\\n     -H \"X-Killbill-Comment: demo\" \\\n     -d \"[ { \\\"objectType\\\": \\\"ACCOUNT\\\", \\\"name\\\": \\\"STRIPE_CUSTOMER_ID\\\", \\\"value\\\": \\\"cus_XXXXX\\\" }]\" \\\n     \"http://127.0.0.1:8080/1.0/kb/accounts/\u003cACCOUNT_ID\u003e/customFields\"\n```\n3. Sync the payment methods from Stripe to Kill Bill:\n```bash\ncurl -v \\\n     -X PUT \\\n     -u admin:password \\\n     -H \"X-Killbill-ApiKey: bob\" \\\n     -H \"X-Killbill-ApiSecret: lazar\" \\\n     -H \"Content-Type: application/json\" \\\n     -H \"Accept: application/json\" \\\n     -H \"X-Killbill-CreatedBy: demo\" \\\n     -H \"X-Killbill-Reason: demo\" \\\n     -H \"X-Killbill-Comment: demo\" \\\n     \"http://127.0.0.1:8080/1.0/kb/accounts/\u003cACCOUNT_ID\u003e/paymentMethods/refresh\"\n```\n## Development\n\nFor testing you need to add your Stripe public and private key to `src/test/resources/stripe.properties`:\n\n```\norg.killbill.billing.plugin.stripe.apiKey=sk_test_XXX\norg.killbill.billing.plugin.stripe.publicKey=pk_test_XXX\n```\n\n## About\n\nKill Bill is the leading Open-Source Subscription Billing \u0026 Payments Platform. For more information about the project, go to https://killbill.io/.\n","funding_links":["https://github.com/sponsors/killbill"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkillbill%2Fkillbill-stripe-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkillbill%2Fkillbill-stripe-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkillbill%2Fkillbill-stripe-plugin/lists"}