Skip to main content

Actions

The ballerinax/stripe package exposes the following clients:

ClientPurpose
ClientProvides access to all Stripe REST API V1 resources including customers, payments, invoices, subscriptions, products, and more.

Client

Provides access to all Stripe REST API V1 resources including customers, payments, invoices, subscriptions, products, and more.

Configuration

FieldTypeDefaultDescription
authhttp:BearerTokenConfigRequiredBearer token configuration. Provide your Stripe secret key as the token field.
serviceUrlstringhttps://api.stripe.comThe base URL of the Stripe API.
httpVersionHttpVersionHTTP_2_0HTTP protocol version.
timeoutdecimal60Request timeout in seconds.
retryConfigRetryConfig()Retry configuration for failed requests.
secureSocketClientSecureSocket()SSL/TLS configuration.
proxyProxyConfig()Proxy server configuration.

Initializing the client

import ballerinax/stripe;

configurable string secretKey = ?;

stripe:Client stripe = check new ({
auth: {
token: secretKey
}
});

Operations

Customer management

List all customers

Returns a list of customers. The customers are returned sorted by creation date, with the most recent customers appearing first.

Parameters:

NameTypeRequiredDescription
emailstring?NoFilter by customer email address.
limitint?NoMaximum number of customers to return (1–100). Default is 10.
starting_afterstring?NoCursor for pagination. Provide a customer ID to list customers created after this customer.

Returns: stripe:CustomerResourceCustomerList|error

Sample code:

stripe:CustomerResourceCustomerList customers = check stripe->/customers;

Sample response:

{
"object": "list",
"data": [
{
"id": "cus_PxN1234abcdef",
"object": "customer",
"name": "John Doe",
"email": "[email protected]",
"created": 1700000000
}
],
"has_more": false,
"url": "/v1/customers"
}
Create a customer

Creates a new customer object with the provided details.

Parameters:

NameTypeRequiredDescription
payloadstripe:customers_bodyYesCustomer creation payload containing name, email, address, and other details.

Returns: stripe:Customer|error

Sample code:

stripe:Customer customer = check stripe->/customers.post({
name: "John Doe",
email: "[email protected]",
address: {
city: "Colombo",
country: "LK"
}
});

Sample response:

{
"id": "cus_PxN1234abcdef",
"object": "customer",
"name": "John Doe",
"email": "[email protected]",
"address": {
"city": "Colombo",
"country": "LK"
},
"created": 1700000000,
"livemode": false
}
Retrieve a customer

Retrieves the details of an existing customer by their ID.

Parameters:

NameTypeRequiredDescription
customerstringYesThe ID of the customer to retrieve.

Returns: stripe:Customer|error

Sample code:

stripe:Customer customer = check stripe->/customers/["cus_PxN1234abcdef"];

Sample response:

{
"id": "cus_PxN1234abcdef",
"object": "customer",
"name": "John Doe",
"email": "[email protected]",
"created": 1700000000
}
Update a customer

Updates the specified customer by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

Parameters:

NameTypeRequiredDescription
customerstringYesThe ID of the customer to update.
payloadstripe:customers_customer_bodyYesCustomer update payload.

Returns: stripe:Customer|error

Sample code:

stripe:Customer updated = check stripe->/customers/["cus_PxN1234abcdef"].post({
name: "Jane Doe",
email: "[email protected]"
});

Sample response:

{
"id": "cus_PxN1234abcdef",
"object": "customer",
"name": "Jane Doe",
"email": "[email protected]",
"created": 1700000000
}
Delete a customer

Permanently deletes a customer. It cannot be undone. Any active subscriptions on the customer will also be cancelled.

Parameters:

NameTypeRequiredDescription
customerstringYesThe ID of the customer to delete.

Returns: stripe:Deleted_customer|error

Sample code:

stripe:Deleted_customer deleted = check stripe->/customers/["cus_PxN1234abcdef"].delete();

Sample response:

{
"id": "cus_PxN1234abcdef",
"object": "customer",
"deleted": true
}

Payment intents

Create a payment intent

Creates a PaymentIntent object. After creation, attach a payment method and confirm to continue the payment.

Parameters:

NameTypeRequiredDescription
payloadstripe:payment_intents_bodyYesPayment intent creation payload including amount, currency, and optional parameters.

Returns: stripe:Payment_intent|error

Sample code:

stripe:Payment_intent paymentIntent = check stripe->/payment_intents.post({
amount: 2000,
currency: "usd",
payment_method_types: ["card"]
});

Sample response:

{
"id": "pi_3MtwBwLkdIwHu7ix28a3tqPa",
"object": "payment_intent",
"amount": 2000,
"currency": "usd",
"status": "requires_payment_method",
"client_secret": "pi_3MtwBwLkdIwHu7ix28a3tqPa_secret_YrKJUKribcBjcG8HVhfZluoGH"
}
Retrieve a payment intent

Retrieves the details of a PaymentIntent that was previously created.

Parameters:

NameTypeRequiredDescription
intentstringYesThe ID of the PaymentIntent to retrieve.

Returns: stripe:Payment_intent|error

Sample code:

stripe:Payment_intent intent = check stripe->/payment_intents/["pi_3MtwBwLkdIwHu7ix28a3tqPa"];

Sample response:

{
"id": "pi_3MtwBwLkdIwHu7ix28a3tqPa",
"object": "payment_intent",
"amount": 2000,
"currency": "usd",
"status": "requires_payment_method"
}
List all payment intents

Returns a list of PaymentIntents.

Parameters:

NameTypeRequiredDescription
customerstring?NoFilter by customer ID.
limitint?NoMaximum number of results to return (1–100).

Returns: stripe:PaymentFlowsPaymentIntentResourcePaymentIntentList|error

Sample code:

stripe:PaymentFlowsPaymentIntentResourcePaymentIntentList intents = check stripe->/payment_intents;

Sample response:

{
"object": "list",
"data": [
{
"id": "pi_3MtwBwLkdIwHu7ix28a3tqPa",
"object": "payment_intent",
"amount": 2000,
"currency": "usd",
"status": "succeeded"
}
],
"has_more": false
}
Confirm a payment intent

Confirms a PaymentIntent, transitioning it to a state where it can process a payment.

Parameters:

NameTypeRequiredDescription
intentstringYesThe ID of the PaymentIntent to confirm.
payloadstripe:intent_confirm_bodyNoConfirmation payload with optional payment method and return URL.

Returns: stripe:Payment_intent|error

Sample code:

stripe:Payment_intent confirmed = check stripe->/payment_intents/["pi_3MtwBwLkdIwHu7ix28a3tqPa"]/confirm.post({
payment_method: "pm_card_visa"
});

Sample response:

{
"id": "pi_3MtwBwLkdIwHu7ix28a3tqPa",
"object": "payment_intent",
"amount": 2000,
"currency": "usd",
"status": "succeeded"
}
Cancel a payment intent

Cancels a PaymentIntent. After cancellation, no additional charges are made.

Parameters:

NameTypeRequiredDescription
intentstringYesThe ID of the PaymentIntent to cancel.

Returns: stripe:Payment_intent|error

Sample code:

stripe:Payment_intent cancelled = check stripe->/payment_intents/["pi_3MtwBwLkdIwHu7ix28a3tqPa"]/cancel.post();

Sample response:

{
"id": "pi_3MtwBwLkdIwHu7ix28a3tqPa",
"object": "payment_intent",
"amount": 2000,
"currency": "usd",
"status": "canceled"
}

Charges

Create a charge

Creates a new charge. Use the Payment Intents API for new integrations; this endpoint is for legacy compatibility.

Parameters:

NameTypeRequiredDescription
payloadstripe:charges_bodyYesCharge creation payload including amount, currency, and source or customer.

Returns: stripe:Charge|error

Sample code:

stripe:Charge charge = check stripe->/charges.post({
amount: 1500,
currency: "usd",
source: "tok_visa"
});

Sample response:

{
"id": "ch_3MmlLrLkdIwHu7ix0snN0B15",
"object": "charge",
"amount": 1500,
"currency": "usd",
"status": "succeeded",
"paid": true
}
Retrieve a charge

Retrieves the details of a charge that has previously been created.

Parameters:

NameTypeRequiredDescription
chargestringYesThe ID of the charge to retrieve.

Returns: stripe:Charge|error

Sample code:

stripe:Charge charge = check stripe->/charges/["ch_3MmlLrLkdIwHu7ix0snN0B15"];

Sample response:

{
"id": "ch_3MmlLrLkdIwHu7ix0snN0B15",
"object": "charge",
"amount": 1500,
"currency": "usd",
"status": "succeeded"
}
List all charges

Returns a list of charges you have previously created.

Parameters:

NameTypeRequiredDescription
customerstring?NoFilter by customer ID.
limitint?NoMaximum number of results to return.

Returns: stripe:ChargeList|error

Sample code:

stripe:ChargeList charges = check stripe->/charges;

Sample response:

{
"object": "list",
"data": [
{
"id": "ch_3MmlLrLkdIwHu7ix0snN0B15",
"amount": 1500,
"currency": "usd",
"status": "succeeded"
}
],
"has_more": false
}

Products & prices

Create a product

Creates a new product object.

Parameters:

NameTypeRequiredDescription
payloadstripe:products_bodyYesProduct creation payload with name and optional details.

Returns: stripe:Product|error

Sample code:

stripe:Product product = check stripe->/products.post({
name: "Premium Plan",
description: "Access to all premium features"
});

Sample response:

{
"id": "prod_OkIaGzRTh1gQqH",
"object": "product",
"name": "Premium Plan",
"description": "Access to all premium features",
"active": true,
"created": 1700000000
}
List all products

Returns a list of your products.

Parameters:

NameTypeRequiredDescription
activeboolean?NoFilter by active status.
limitint?NoMaximum number of results to return.

Returns: stripe:ProductList|error

Sample code:

stripe:ProductList products = check stripe->/products;

Sample response:

{
"object": "list",
"data": [
{
"id": "prod_OkIaGzRTh1gQqH",
"object": "product",
"name": "Premium Plan",
"active": true
}
],
"has_more": false
}
Create a price

Creates a new price for an existing product.

Parameters:

NameTypeRequiredDescription
payloadstripe:prices_bodyYesPrice creation payload with currency, unit_amount, and product reference.

Returns: stripe:Price|error

Sample code:

stripe:Price price = check stripe->/prices.post({
unit_amount: 1999,
currency: "usd",
recurring: {
interval: "month"
},
product: "prod_OkIaGzRTh1gQqH"
});

Sample response:

{
"id": "price_1MoBy5LkdIwHu7ixZhnattbh",
"object": "price",
"unit_amount": 1999,
"currency": "usd",
"recurring": {
"interval": "month"
},
"product": "prod_OkIaGzRTh1gQqH",
"active": true
}
List all prices

Returns a list of your prices.

Parameters:

NameTypeRequiredDescription
productstring?NoFilter by product ID.
activeboolean?NoFilter by active status.

Returns: stripe:PriceList|error

Sample code:

stripe:PriceList prices = check stripe->/prices(product = "prod_OkIaGzRTh1gQqH");

Sample response:

{
"object": "list",
"data": [
{
"id": "price_1MoBy5LkdIwHu7ixZhnattbh",
"unit_amount": 1999,
"currency": "usd",
"product": "prod_OkIaGzRTh1gQqH"
}
],
"has_more": false
}

Invoices

Create an invoice

Creates a draft invoice for a given customer. The draft invoice pulls in all pending invoice items on that customer.

Parameters:

NameTypeRequiredDescription
payloadstripe:invoices_bodyYesInvoice creation payload with customer and optional details.

Returns: stripe:Invoice|error

Sample code:

stripe:Invoice invoice = check stripe->/invoices.post({
customer: "cus_PxN1234abcdef",
collection_method: "send_invoice",
days_until_due: 30
});

Sample response:

{
"id": "in_1MtHbELkdIwHu7ixl4OzzPMv",
"object": "invoice",
"customer": "cus_PxN1234abcdef",
"status": "draft",
"collection_method": "send_invoice",
"days_until_due": 30,
"amount_due": 0
}
Retrieve an invoice

Retrieves the invoice with the given ID.

Parameters:

NameTypeRequiredDescription
invoicestringYesThe ID of the invoice to retrieve.

Returns: stripe:Invoice|error

Sample code:

stripe:Invoice invoice = check stripe->/invoices/["in_1MtHbELkdIwHu7ixl4OzzPMv"];

Sample response:

{
"id": "in_1MtHbELkdIwHu7ixl4OzzPMv",
"object": "invoice",
"customer": "cus_PxN1234abcdef",
"status": "draft",
"amount_due": 0
}
Finalize an invoice

Finalizes a draft invoice, transitioning its status from draft to open. A finalized invoice can no longer be deleted or have its monetary values changed.

Parameters:

NameTypeRequiredDescription
invoicestringYesThe ID of the invoice to finalize.

Returns: stripe:Invoice|error

Sample code:

stripe:Invoice finalized = check stripe->/invoices/["in_1MtHbELkdIwHu7ixl4OzzPMv"]/finalize.post();

Sample response:

{
"id": "in_1MtHbELkdIwHu7ixl4OzzPMv",
"object": "invoice",
"status": "open",
"amount_due": 2000,
"hosted_invoice_url": "https://invoice.stripe.com/i/acct_1M2JTk/test_xxxxx"
}
List all invoices

Returns a list of invoices. The invoices are returned sorted by creation date, with the most recent ones appearing first.

Parameters:

NameTypeRequiredDescription
customerstring?NoFilter by customer ID.
statusstring?NoFilter by invoice status: draft, open, paid, uncollectible, or void.

Returns: stripe:InvoicesList|error

Sample code:

stripe:InvoicesList invoices = check stripe->/invoices(customer = "cus_PxN1234abcdef");

Sample response:

{
"object": "list",
"data": [
{
"id": "in_1MtHbELkdIwHu7ixl4OzzPMv",
"status": "open",
"amount_due": 2000,
"customer": "cus_PxN1234abcdef"
}
],
"has_more": false
}

Subscriptions

Create a subscription

Creates a new subscription on an existing customer.

Parameters:

NameTypeRequiredDescription
payloadstripe:subscriptions_bodyYesSubscription creation payload with customer, items, and optional parameters.

Returns: stripe:Subscription|error

Sample code:

stripe:Subscription subscription = check stripe->/subscriptions.post({
customer: "cus_PxN1234abcdef",
items: [
{ price: "price_1MoBy5LkdIwHu7ixZhnattbh" }
]
});

Sample response:

{
"id": "sub_1MowQVLkdIwHu7ixeRlqHVzs",
"object": "subscription",
"customer": "cus_PxN1234abcdef",
"status": "active",
"items": {
"data": [
{
"price": {
"id": "price_1MoBy5LkdIwHu7ixZhnattbh",
"unit_amount": 1999
}
}
]
}
}
Retrieve a subscription

Retrieves the subscription with the given ID.

Parameters:

NameTypeRequiredDescription
subscription_exposed_idstringYesThe ID of the subscription to retrieve.

Returns: stripe:Subscription|error

Sample code:

stripe:Subscription sub = check stripe->/subscriptions/["sub_1MowQVLkdIwHu7ixeRlqHVzs"];

Sample response:

{
"id": "sub_1MowQVLkdIwHu7ixeRlqHVzs",
"object": "subscription",
"customer": "cus_PxN1234abcdef",
"status": "active",
"current_period_end": 1700604800
}
Cancel a subscription

Cancels a customer's subscription immediately. The customer will not be charged again for the subscription.

Parameters:

NameTypeRequiredDescription
subscription_exposed_idstringYesThe ID of the subscription to cancel.

Returns: stripe:Subscription|error

Sample code:

stripe:Subscription cancelled = check stripe->/subscriptions/["sub_1MowQVLkdIwHu7ixeRlqHVzs"].delete();

Sample response:

{
"id": "sub_1MowQVLkdIwHu7ixeRlqHVzs",
"object": "subscription",
"status": "canceled",
"canceled_at": 1700100000
}
List all subscriptions

Returns a list of your active subscriptions.

Parameters:

NameTypeRequiredDescription
customerstring?NoFilter by customer ID.
statusstring?NoFilter by status: active, past_due, canceled, etc.

Returns: stripe:SubscriptionList|error

Sample code:

stripe:SubscriptionList subs = check stripe->/subscriptions(customer = "cus_PxN1234abcdef");

Sample response:

{
"object": "list",
"data": [
{
"id": "sub_1MowQVLkdIwHu7ixeRlqHVzs",
"status": "active",
"customer": "cus_PxN1234abcdef"
}
],
"has_more": false
}

Refunds

Create a refund

Creates a refund for a charge or a payment intent.

Parameters:

NameTypeRequiredDescription
payloadstripe:refunds_bodyYesRefund creation payload with charge or payment_intent and optional amount.

Returns: stripe:Refund|error

Sample code:

stripe:Refund refund = check stripe->/refunds.post({
payment_intent: "pi_3MtwBwLkdIwHu7ix28a3tqPa",
amount: 500
});

Sample response:

{
"id": "re_3MtwBwLkdIwHu7ix0snN0B15",
"object": "refund",
"amount": 500,
"currency": "usd",
"status": "succeeded",
"payment_intent": "pi_3MtwBwLkdIwHu7ix28a3tqPa"
}
Retrieve a refund

Retrieves the details of an existing refund.

Parameters:

NameTypeRequiredDescription
refundstringYesThe ID of the refund to retrieve.

Returns: stripe:Refund|error

Sample code:

stripe:Refund refund = check stripe->/refunds/["re_3MtwBwLkdIwHu7ix0snN0B15"];

Sample response:

{
"id": "re_3MtwBwLkdIwHu7ix0snN0B15",
"object": "refund",
"amount": 500,
"currency": "usd",
"status": "succeeded"
}

Balance

Retrieve balance

Retrieves the current account balance, based on the authentication that was used to make the request.

Returns: stripe:Balance|error

Sample code:

stripe:Balance balance = check stripe->/balance;

Sample response:

{
"object": "balance",
"available": [
{
"amount": 125000,
"currency": "usd",
"source_types": {
"card": 125000
}
}
],
"pending": [
{
"amount": 5000,
"currency": "usd"
}
],
"livemode": false
}
List balance transactions

Returns a list of transactions that have contributed to the Stripe account balance.

Parameters:

NameTypeRequiredDescription
limitint?NoMaximum number of results to return.
typestring?NoFilter by transaction type (e.g., charge, refund, payout).

Returns: stripe:BalanceTransactionsList|error

Sample code:

stripe:BalanceTransactionsList txns = check stripe->/balance_transactions(limit = 5);

Sample response:

{
"object": "list",
"data": [
{
"id": "txn_1MiN3gLkdIwHu7ixT6lFMOHd",
"object": "balance_transaction",
"amount": 1500,
"currency": "usd",
"type": "charge",
"net": 1420,
"fee": 80
}
],
"has_more": true
}

Payouts

Create a payout

Sends funds to your own bank account. The Stripe account balance must cover the payout amount.

Parameters:

NameTypeRequiredDescription
payloadstripe:payouts_bodyYesPayout creation payload with amount and currency.

Returns: stripe:Payout|error

Sample code:

stripe:Payout payout = check stripe->/payouts.post({
amount: 10000,
currency: "usd"
});

Sample response:

{
"id": "po_1MtRbE2eZvKYlo2CRzQp6dYG",
"object": "payout",
"amount": 10000,
"currency": "usd",
"status": "in_transit",
"arrival_date": 1700604800
}
List all payouts

Returns a list of existing payouts.

Parameters:

NameTypeRequiredDescription
statusstring?NoFilter by payout status.
limitint?NoMaximum number of results to return.

Returns: stripe:PayoutList|error

Sample code:

stripe:PayoutList payouts = check stripe->/payouts;

Sample response:

{
"object": "list",
"data": [
{
"id": "po_1MtRbE2eZvKYlo2CRzQp6dYG",
"amount": 10000,
"currency": "usd",
"status": "paid"
}
],
"has_more": false
}