> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blnkfinance.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom Apps

> What Custom Apps are, how they work in Blnk Cloud, and how to plan, build, or install them.

export const CtaCallout = props => {
  const {title, buttonLabel, href, trackingEvent, buttonTarget, rel = "noopener noreferrer", children} = props;
  const handleCtaClick = () => {
    if (typeof window === "undefined" || !trackingEvent) {
      return;
    }
    try {
      window.dispatchEvent(new CustomEvent("blnk:docs-cta", {
        detail: {
          name: trackingEvent,
          href
        }
      }));
    } catch {}
    try {
      window.posthog?.capture?.(trackingEvent, {
        href
      });
    } catch {}
    const gaPayload = {
      cta_href: href
    };
    try {
      window.gtag?.("event", trackingEvent, gaPayload);
    } catch {}
    try {
      window.dataLayer = window.dataLayer || [];
      window.dataLayer.push({
        event: trackingEvent,
        ...gaPayload
      });
    } catch {}
  };
  const isExternal = typeof href === "string" && (/^https?:\/\//i).test(href);
  const target = buttonTarget ?? (isExternal ? "_blank" : undefined);
  const linkRel = isExternal ? rel : undefined;
  return <section className="cta-callout not-prose relative my-8 w-full min-w-0 overflow-hidden rounded-xl border border-zinc-200 p-5 dark:border-white/10">
      <div className="cta-callout-noise" aria-hidden="true" />
      <div className="cta-callout-layout">
        {title ? <div className="cta-callout-title-row">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="14" height="14" className="cta-callout-icon shrink-0 text-zinc-800 dark:text-zinc-200" aria-hidden="true">
              <g fill="none" fillRule="nonzero">
                <path d="M28 0v28H0V0h28ZM14.691833333333335 27.134333333333334l-0.012833333333333334 0.0023333333333333335 -0.08283333333333333 0.04083333333333334 -0.023333333333333334 0.004666666666666667 -0.016333333333333335 -0.004666666666666667 -0.08283333333333333 -0.04083333333333334c-0.011666666666666667 -0.004666666666666667 -0.022166666666666668 -0.0011666666666666668 -0.028000000000000004 0.005833333333333334l-0.004666666666666667 0.011666666666666667 -0.019833333333333335 0.49933333333333335 0.005833333333333334 0.023333333333333334 0.011666666666666667 0.015166666666666667 0.12133333333333333 0.08633333333333333 0.0175 0.004666666666666667 0.014000000000000002 -0.004666666666666667 0.12133333333333333 -0.08633333333333333 0.014000000000000002 -0.018666666666666668 0.004666666666666667 -0.019833333333333335 -0.019833333333333335 -0.4981666666666667c-0.0023333333333333335 -0.011666666666666667 -0.0105 -0.019833333333333335 -0.019833333333333335 -0.021Zm0.3091666666666667 -0.13183333333333336 -0.015166666666666667 0.0023333333333333335 -0.21583333333333335 0.1085 -0.011666666666666667 0.011666666666666667 -0.0035000000000000005 0.012833333333333334 0.021 0.5016666666666667 0.005833333333333334 0.014000000000000002 0.009333333333333334 0.008166666666666668 0.23450000000000004 0.1085c0.014000000000000002 0.004666666666666667 0.026833333333333334 0 0.03383333333333334 -0.009333333333333334l0.004666666666666667 -0.016333333333333335 -0.03966666666666667 -0.7163333333333334c-0.0035000000000000005 -0.014000000000000002 -0.011666666666666667 -0.023333333333333334 -0.023333333333333334 -0.025666666666666667Zm-0.8341666666666667 0.0023333333333333335a0.026833333333333334 0.026833333333334334 0 0 0 -0.0315 0.007000000000000001l-0.007000000000000001 0.016333333333333335 -0.03966666666666667 0.7163333333333334c0 0.014000000000000002 0.008166666666666668 0.023333333333333334 0.019833333333333335 0.028000000000000004l0.0175 -0.0023333333333333335 0.23450000000000004 -0.1085 0.011666666666666667 -0.009333333333333334 0.004666666666666667 -0.012833333333333334 0.019833333333333335 -0.5016666666666667 -0.0035000000000000005 -0.014000000000000002 -0.011666666666666667 -0.011666666666666667 -0.21466666666666667 -0.10733333333333334Z" strokeWidth="1.1667" />
                <path fill="currentColor" d="M14 2.916666666666667A1.75 1.75 0 0 1 15.750000000000002 4.666666666666667v6.302333333333334L21.207666666666668 7.816666666666667a1.75 1.75 0 0 1 1.75 3.031L17.5 14l5.457666666666667 3.151166666666667a1.75 1.75 0 0 1 -1.75 3.031l-5.457666666666667 -3.1500000000000004V23.333333333333336a1.75 1.75 0 0 1 -3.5 0v-6.302333333333334L6.792333333333334 20.183333333333337a1.75 1.75 0 1 1 -1.75 -3.031L10.5 14 5.042333333333334 10.848833333333333a1.75 1.75 0 0 1 1.75 -3.031l5.457666666666667 3.1500000000000004V4.666666666666667A1.75 1.75 0 0 1 14 2.916666666666667Z" strokeWidth="1.1667" />
              </g>
            </svg>
            <p className="cta-callout-title min-w-0 font-semibold text-zinc-800 dark:text-zinc-200">
              {title}
            </p>
          </div> : null}
        <div className={`cta-callout-body text-sm leading-normal text-zinc-800 dark:text-zinc-200${title ? " cta-callout-body--indented" : ""}`}>
          {children}
        </div>
        <a href={href} target={target} rel={linkRel} onClick={handleCtaClick} data-docs-cta={trackingEvent || undefined} className="cta-callout-button inline-flex items-center justify-center gap-1 rounded-full bg-white px-3 py-1.5 text-sm font-semibold transition hover:bg-zinc-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white/50 dark:bg-white dark:hover:bg-zinc-200">
          {buttonLabel}
          <span className="cta-callout-button-arrow" aria-hidden="true">
            →
          </span>
        </a>
      </div>
    </section>;
};

<Note>
  This feature is in private beta. If you want access, please [contact Support](mailto:support@blnkfinance.com?subject=Interested%20in%20Custom%20Apps).
</Note>

<img src="https://mintcdn.com/blnk/JB9Zhph4DjE0VsHT/cloud/img/apps/apps-cover.png?fit=max&auto=format&n=JB9Zhph4DjE0VsHT&q=85&s=6bb6eab01bd9fad8922fbfcf433a525f" alt="Custom Apps cover image" className="rounded-lg" width="3840" height="2160" data-path="cloud/img/apps/apps-cover.png" />

The ledger is the source of truth for your financial records, but the work around it often happens elsewhere.

A finance or operations team may need to check a payment provider, review an order system, calculate interest, approve a payout, or investigate an exception before they can close out a workflow.

And this work often happens across different tools, spreadsheets, scripts, and manual steps.

Custom Apps let teams build private, ledger-aware workflows inside Blnk Cloud. Use them to connect external systems, review financial operations, automate checks, and give your team purpose-built tools around the ledger.

<CtaCallout title="Need help building your app?" href="https://blnkfinance.com/contact/us?utm_source=blnk_docs&utm_medium=documentation&utm_campaign=apps-help" buttonLabel="Get Pro Support" trackingEvent="clicked_pro_support">
  We help you build custom apps for your use case or get help building your own from scratch.
</CtaCallout>

***

## Quick start

Here's how you can start using Custom Apps in your workspace:

<Steps>
  <Step title="Pick and install an app">
    Browse the app library, choose the app you want, and install it into your Cloud workspace.

    <Card title="Install an app" icon="download" href="/cloud/apps/install-app">
      Install a Custom App in your workspace.
    </Card>
  </Step>

  <Step title="Register your own app">
    If you have a more personalised workflow, you can build your own app and register it in Cloud so Blnk can install and launch it for your workspace.

    <Card title="Build a Custom App" icon="hammer" href="/cloud/apps/define-workflow">
      Define a workflow, then register and launch.
    </Card>
  </Step>

  <Step title="Operate from your back office">
    Each app you install is automatically scoped to the instance you're currently on.

    Once installed, you can launch the app at any time and start to use it from within Blnk Cloud.

    <Note>
      **For example:** A crypto exchange startup might move between Bridge by Stripe, an order book, and the Blnk ledger to verify a trade or swap. Each system is useful on its own, but the workflow spans all of them.

      With Custom Apps, the team can:

      1. Register an app that talks to Bridge and their order system.
      2. Surface the checks they need to verify a trade.
      3. Review and manage the trade workflow from Blnk Cloud, instead of splitting attention across browser tabs and tools.
    </Note>
  </Step>
</Steps>

***

## Real-life applications

Here's a few common real life use cases for Custom Apps:

| App                        | What it does                                                                                                                    | Systems and data                                                                                            | Why Custom Apps?                                                                                                               |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| Loan management            | Manage loan approvals, disbursements, repayments, covenants, and loan status without relying on scattered reports.              | Blnk Core balances, identities, transaction history, loan servicing tools, and CRM records.                 | Ops and finance can see loan state and ledger activity together when approving, tracking, or investigating a loan.             |
| Interest calculator        | Calculate accruals or interest using trusted balance and schedule data from the ledger.                                         | Position or balance data from Blnk Core, plus app-defined rules for rates, day counts, and rounding.        | Teams keep interest assumptions and calculations close to the balances they affect, instead of emailing spreadsheets around.   |
| Treasury or float manager  | Monitor float across accounts, rails, and providers, and track how money moves over time.                                       | Ledger balances, transactions, bank data, PSP dashboards, and connected provider data.                      | Treasury teams can compare available float and ledger impact in one place, instead of checking several portals manually.       |
| End-of-day close           | Run close checklists, apply cutoffs, review sign-offs, and compare internal totals against ledger activity for a selected date. | Blnk Core transaction and balance queries, with optional exports to accounting or warehouse tools.          | Close tasks sit beside the ledger data the team is closing against, reducing context switching during EOD or month-end review. |
| Trade or swap verification | Confirm that execution details, fees, settlement status, and ledger postings match what the team expects for a trade or swap.   | Order books, trading systems, payment or crypto rails, provider data, and Blnk Core balances and transfers. | Verification becomes a clear dashboard flow instead of a manual check across multiple systems.                                 |
| Reconciliation review      | Match internal records against bank, PSP, or partner files, then document and resolve exceptions.                               | Ledger exports or API reads, uploaded statements, provider files, and exception queues.                     | Reviewers work where the ledger truth lives, which makes it easier to investigate and resolve mismatches.                      |
| Payout approval            | Stage payout batches, route approvals, review beneficiary details, and leave audit-friendly notes before money moves.           | Pending payout records, proposed ledger movements, beneficiary details, CRM data, and payout tools.         | Approvers can review payout context and ledger impact together before execution.                                               |

***

## When to use a custom app

Consider a Custom App when:

* A workflow repeatedly pulls your team out of Blnk Cloud into other tools for steps that could be guided or automated in the dashboard
* You need a small, purpose-built UI on top of ledger data that the default Cloud workspace does not provide
* You want to connect an external system you rely on (payments, trading, spreadsheets) in a way that is specific to how your team works

If a workflow is already covered by first-party Cloud features or a shared app in the library, prefer that before maintaining your own app.
