Billing Integration logo

Billing Integration

Organization
credyt
billing-integration

Wire Credyt billing into your application code. Adds customer creation to registration, usage event tracking, balance checks, cost tracking, and billing portal links. Run after /credyt:billing-setup and /credyt:billing-verification. Use when the user wants to add Credyt to their app, integrate billing, send events from code, show balances, or add a billing page.

Overview

Publishercredyt
Repositoryai-tools
Skill namebilling-integration
Stars
52
Forks
0
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by credyt on GitHub. Read the source before you install it.

Installation

Install the Billing Integration AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/credyt/ai-tools/tree/main/skills/billing-integration
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/credyt/ai-tools.git /tmp/ai-tools
mkdir -p .claude/skills
cp -r /tmp/ai-tools/skills/billing-integration .claude/skills/billing-integration
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Billing Integration in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Billing Integration on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Billing Integration is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Credyt Integrate

Prefer the official SDKs (@credyt/api-client for TypeScript, credyt-api for Python) over hand-rolling HTTP calls — they handle auth, retries, and field mapping for you. If neither SDK suits your stack (e.g. a language other than TypeScript or Python), HTTP direct calls are also covered below. If you arrived here without running billing-setup first, stop and ask the user to run that skill before proceeding.

Help the user wire Credyt into their application code. This skill works with the user's actual codebase — reading their existing code and adding Credyt integration in the right places.

The full integration guide is at docs.credyt.ai/ai-integration.md. Each section below links to its dedicated docs page, which includes HTTP, TypeScript, and Python examples — consult these if you need more detail on any integration area.

Field naming: The Credyt API uses snake_case for all fields. The TypeScript SDK maps these to camelCase automatically. The Python SDK keeps snake_case. Code samples in the linked docs show all three.

Understand the codebase first

Before writing any code, understand what the user has:

"Let me look at your project to understand your stack and where billing should plug in."

Check for:

  • Language and framework (Node/Express, Next.js, Python/FastAPI, etc.)
  • Authentication setup (how users sign up and log in)
  • Where the billable activities happen in their code
  • Existing environment variable patterns

Choose the integration approach

Determine the right approach from context — only ask the user if you genuinely cannot tell.

Auto-detect (in order):

  1. Known AI platform — Lovable, Bolt, Replit, and V0 all default to TypeScript. If running in one of these, use the TypeScript SDK.
  2. Existing tech stack — check the codebase scanned above. package.json → TypeScript/Node.js SDK. requirements.txt or pyproject.toml → Python SDK.
  3. Unclear → ask: "Are you working in TypeScript/Node.js, Python, or another language?" and lead with SDK options for the first two.

Once determined, state the recommendation and give the user the option to override before writing any code:

"Based on your stack, I'll use the TypeScript SDK (@credyt/api-client). Let me know if you'd prefer Python or direct HTTP calls."

SDK packages:

  • TypeScript/Node.js → @credyt/api-client (npm install @credyt/api-client)
  • Python → credyt-api (pip install credyt-api)
  • Other language or preference for raw HTTP → direct API calls with the X-CREDYT-API-KEY header

The full SDK reference with examples for all three approaches is at docs.credyt.ai/sdk.

Integration areas

Walk through each area. Not all will apply to every user — ask which ones they need.

1. API key setup

The Credyt API key must be stored securely on the server side — never in code that runs in the browser.

Add CREDYT_API_KEY to their environment variables alongside their other secrets, then initialise the client once and reuse it across requests.

TypeScript:

typescript
import { CredytApiClient } from "@credyt/api-client";
const client = new CredytApiClient({ key: process.env.CREDYT_API_KEY! });

Python:

python
from corehttp.credentials import ServiceKeyCredential
from credytapi import CredytApiClient

client = CredytApiClient(
    credential=ServiceKeyCredential(key=os.getenv("CREDYT_API_KEY")),
)

Direct HTTP: Attach X-CREDYT-API-KEY: <key> to every request. Create a helper function or configured HTTP client instance that sets this header automatically.

2. Customer creation — docs

When a new user signs up in their app, create a matching Credyt customer. Find their registration/signup handler and add customer creation after successful account creation.

Key points:

  • Use external_id to link the Credyt customer to their app's user ID
  • Subscribe the customer to the relevant products during creation
  • Store the Credyt customer ID in their database alongside the user record
  • Handle the case where the customer already exists (409/422 — look up by external_id instead)

SDK method: client.customers.create(...)

Recurring fixed fees — pending subscriptions

If the product uses a recurring fixed fee (e.g. $20/month), the customer must pay upfront before their subscription activates. In this case the API returns a pending status rather than activating immediately.

Set return_url, failure_url, and redirect_to on the subscription so Credyt knows where to send the customer after payment:

  • return_url — where to send the customer after successful payment (e.g. https://yourapp.com/account)
  • failure_url — where to send them if payment fails (e.g. https://yourapp.com/callbacks/payment-failed)
  • redirect_to — set to "return_url" so the customer lands back on your site instead of staying in the Credyt billing portal (this is the default, but set it explicitly)

When the response status is pending:

  • Check the required_actions array for an action with type: "payment" and extract its redirect_url
  • Redirect the customer to that URL — Credyt will handle the payment form and route them to your return_url or failure_url automatically
  • Do not activate the user's account yet — store it as pending in your database until payment is confirmed
  • If the redirect link expires before the customer completes payment, fetch the customer by their Credyt ID to get a refreshed link

Once the customer pays, Credyt fires a subscription.activated webhook. Listen for this event on your backend and use it to activate the user's account.

Promotional or bundled signup credits

If the user's plan includes promotional credits (e.g. "start with $10 free") or bundled credits (e.g. 1,000 free API calls on signup), there are two ways to apply them:

  1. One-off adjustment after customer creation — credit the customer's wallet directly post-signup. Use this for simple, one-time promotional amounts. See docs.credyt.ai/advanced-topics/adjustments-charges-gifts.
  2. Entitlements — configure promotional credit as part of the product definition so it applies automatically on every new subscription. Use this for credits that are part of the standard plan offering. See docs.credyt.ai/features/product-catalog/entitlements.

Ask the user whether they want to include signup credits, and if so which approach fits their use case.

3. Usage event tracking — docs

Find where the billable activities happen in their code and add event submission after each one. Each event needs:

  • A unique ID (UUID) so the same event can't be billed twice
  • The correct event_type matching the product configuration
  • A timestamp of when it happened (occurred_at)
  • Any data fields needed for pricing (volume fields, dimensions)

SDK method: client.events.sendUsage(...) (TS) or client.events.send_usage(...) (Python).

For volume-based products, the event data must include the volume field (e.g., total_tokens: 1500). For dimensional products, include the dimension values (e.g., model: "gpt-4").

4. Cost tracking — docs

If the user set up vendors in /credyt:billing-setup, add cost data to usage events. Each event can include a costs array with the vendor ID, the amount it cost, and the currency.

This is typically added right after the billable action completes, when the cost is known (e.g., after receiving the response from an AI API that includes token counts).

"Even if you're not charging users yet, attaching costs to every event lets Credyt calculate your unit economics so you can make pricing decisions based on real data."

5. Balance checks — docs

Before expensive operations, check the customer's wallet balance. If insufficient, block the action and prompt the user to top up.

SDK method: client.wallets.customerWalletOps.getCustomerWallet(customerId) to fetch the full wallet, or client.wallets.customerWalletOps.getAccount(customerId, "accountName:ASSET") to check a specific account balance.

Find where billable actions are initiated (API routes, button handlers, etc.) and add a balance check before the action runs. Return a clear message if the balance is too low.

Estimate the cost of the upcoming action and compare it against the available balance.

6. Billing portal / top-up UI — docs

Help users add funds through Credyt's billing portal. This is the simplest way to handle payments — Credyt hosts the page, handles Stripe, and redirects back to their app.

Add a "Billing" or "Add funds" link/button in their app's settings or account page. When clicked, the backend creates a billing portal session and redirects the user to the URL.

SDK method: client.billingPortal.createPortalSession(...)

Key points:

  • Portal sessions expire after 10 minutes
  • Set return_url for where to send users after they're done
  • Set failure_url for payment failures

7. Balance display — docs

Show the user's current balance in the app UI. Fetch from the wallet endpoint and display the available amount.

SDK method: client.wallets.customerWalletOps.getCustomerWallet(customerId).

Decide where this fits in their app — sidebar, header, account page — and add it there.

Implementation approach

Don't dump all the code at once. Work through each area one at a time:

  1. Start with API key setup and customer creation — these are foundational
  2. Then add usage event tracking — this is the core billing integration
  3. Add balance checks to gate expensive operations
  4. Add billing portal and balance display for the user-facing pieces
  5. Add cost tracking last if applicable

After each piece, suggest they test it:

"Try creating a new account in your app and check the Credyt dashboard — you should see a new customer appear. Then we'll move on to usage tracking."

Reference

For detailed code examples, error handling patterns, and advanced topics (hybrid billing, refunds, auto top-up), point the user to:

Frequently asked questions

What does the Billing Integration AI skill do?

Wire Credyt billing into your application code. Adds customer creation to registration, usage event tracking, balance checks, cost tracking, and billing portal links. Run after /credyt:billing-setup and /credyt:billing-verification. Use when the user wants to add Credyt to their app, integrate billing, send events from code, show balances, or add a billing page.

Why use Billing Integration on TypingMind?

Because you install it once and use it with any model. Billing Integration is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Billing Integration in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/credyt/ai-tools/tree/main/skills/billing-integration. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Billing Integration?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Billing Integration?

As many as you like. As long as a model supports skills, you can use Billing Integration with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Billing Integration AI skill free?

It is published on GitHub by credyt. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇