Accept Crypto Subscription Payment

In this example, we will learn to start a subscription payment for 10 USDC/mo.

To create a subscription, you first need to create a plan in Bitstream Dashboard.

Let's create a plan to accept 10 USDC/mo.

Congratulations 🎉, you have successfully created your first plan on Copperx.

Now, let's move ahead and create a Checkout Session to create a subscription.

To create a Checkout Session, you will need priceId of the newly created plan. You will be able to find priceId of the plan from plan details page.

Now let's go ahead and create subscription of our plan.

Make sure you update YOUR_API_KEY and PRICE_ID in the code.

curl --request POST \
--url 'https://api.bitstream.io/api/v1/checkout/sessions' \
--header 'Authorization: Bearer {YOUR_API_KEY}' \
--header 'Content-Type: application/json'
--data-raw '{
    "successUrl": "https://bitstream.io?cid={CHECKOUT_SESSION_ID}",
    "mode": "subscription",
    "lineItems": [{
        "priceId": "{PRICE_ID}" 
    }]
}'
{
    "id": "6c88e598-335d-468b-aea5-fa7a3aa074bf",
    "createdAt": "2023-04-03T17:57:16.943Z",
    "updatedAt": "2023-04-03T17:57:16.982Z",
    "mode": "subscription",
    "paymentMethodTypes": [
        "superfluid"
    ],
    "paymentSetting": {
        "allowedChains": [
            {
                "chainId": 137
            }
        ],
        "paymentMethodTypes": null,
        "preferredChainId": 137,
        "allowSwap": false
    },
    "expiresAt": "2023-04-03T18:57:16.940Z",
    "customerCreation": "if_required",
    "customerUpdate": null,
    "submitType": "pay",
    "afterCompletion": null,
    "organizationId": "758cbac4-58b8-4e0a-b1a2-27b60d4b148d",
    "amountTotal": "10000000",
    "currency": "usdc",
    "paymentLinkId": null,
    "subscriptionId": null,
    "customerId": "820b4fa9-8f4d-4866-9333-527752e32775",
    "clientReferenceId": null,
    "successUrl": "https://bitstream.io?cid=6c88e598-335d-468b-aea5-fa7a3aa074bf",
    "cancelUrl": null,
    "status": "open",
    "paymentStatus": "unpaid",
    "metadata": null,
    "emailCollection": false,
    "phoneNumberCollection": false,
    "shippingAddressCollection": false,
    "billingAddressCollection": false,
    "afterCompletionConfirmMsg": null,
    "shippingDetails": {},
    "billingDetails": {},
    "url": "https://buy.bitstream.io/payment/checkout-session/6c88e598-335d-468b-aea5-fa7a3aa074bf",
    "customer": {
        "name": null,
        "email": null,
        "phone": null,
        "id": "820b4fa9-8f4d-4866-9333-527752e32775",
        "createdAt": "2023-04-03T17:57:16.921Z",
        "updatedAt": "2023-04-03T17:57:16.921Z",
        "customerReferenceId": null,
        "visibility": 10,
        "metadata": {}
    },
    "customerDetails": {
        "name": null,
        "email": null,
        "phone": null,
        "address": {}
    },
    "lineItems": {
        "object": "list",
        "data": [
            {
                "amountTotal": "10000000",
                "currency": "usdc",
                "description": null,
                "quantity": 1,
                "price": {
                    "id": "ae575f1d-57b0-47cd-b40b-f1c2a057c067",
                    "createdAt": "2023-04-03T17:57:16.909Z",
                    "updatedAt": "2023-04-03T17:57:16.909Z",
                    "billingScheme": "per_unit",
                    "currency": "usdc",
                    "productId": "a90004dc-48be-4d21-9f45-05cc3acacc52",
                    "interval": "month",
                    "usageType": null,
                    "type": "recurring",
                    "unitAmount": "10000000",
                    "unitAmountDecimal": null,
                    "customUnitMax": null,
                    "customUnitMin": null,
                    "customPreset": null,
                    "customUnitAmountSuggestions": null,
                    "product": {
                        "id": "a90004dc-48be-4d21-9f45-05cc3acacc52",
                        "createdAt": "2023-04-03T17:57:16.903Z",
                        "updatedAt": "2023-04-03T17:57:16.918Z",
                        "name": "Basic",
                        "description": "For early stage projects who are getting started",
                        "isActive": true,
                        "images": [],
                        "unitLabel": null,
                        "url": null,
                        "metadata": null,
                        "defaultPriceId": "ae575f1d-57b0-47cd-b40b-f1c2a057c067",
                        "visibility": 20
                    },
                    "metadata": null,
                    "isActive": true,
                    "visibility": 20
                }
            }
        ]
    },
    "addresses": [
        {
            "id": "c0e4bd0d-e7a4-4202-ac4d-f7bc60e6c474",
            "createdAt": "2023-04-03T17:57:16.982Z",
            "updatedAt": "2023-04-03T17:57:16.982Z",
            "checkoutSessionId": "6c88e598-335d-468b-aea5-fa7a3aa074bf",
            "asset": {
                "id": "13056880-798b-4bd4-a555-c1c71de017fa",
                "name": "USDC",
                "address": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174",
                "chainId": 137,
                "currency": "usdc",
                "symbol": "USDC",
                "decimals": 6,
                "coingeckoId": "usd-coin",
                "isPublic": true,
                "superToken": {
                    "address": "0xcaa7349cea390f89641fe306d93591f87595dc1f",
                    "symbol": "USDCx",
                    "decimals": 18
                },
                "chain": {
                    "id": 137,
                    "name": "Polygon",
                    "icon": "icon",
                    "currency": "matic",
                    "blockExplorerName": "Polygonscan",
                    "blockExplorerTransactionUrl": "https://polygonscan.com/tx/{hash}"
                }
            },
            "paymentAddress": "0xd55069e3b3a088dfe3690decac89740b897bd1e7"
        }
    ],
    "paymentIntent": {
        "id": "a6da4225-1d26-4ede-b4fa-259ed5a0a3ab",
        "createdAt": "2023-04-03T17:57:16.937Z",
        "updatedAt": "2023-04-03T17:57:16.937Z",
        "organizationId": "758cbac4-58b8-4e0a-b1a2-27b60d4b148d",
        "amount": "10000000",
        "amountReceived": null,
        "currency": "usdc",
        "status": "requires_payment_method",
        "paymentMethodId": null,
        "paymentMethodTypes": [
            "superfluid"
        ],
        "description": null,
        "transferAccountAddress": null,
        "transactions": []
    }
}

url = Hosted Checkout page for the Session. You need to redirect user to this URL.

Once you create a Checkout Session, you need to redirect user to the give URL in url parameter of the response.

Once user makes the payment, user will be redirected to the URL provided in successUrl.

If user cancels the payment, then user will be redirected to the URL provided in cancelUrl.

Last updated