> ## 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.

# Quick Start

> Install the Go SDK and create your first transaction.

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>;
};

This guide walks you through installing the Blnk Go SDK, initializing the client, and creating your first transaction.

By the end, you'll have a working connection to Blnk and be ready to build financial products from your Go application.

<Steps>
  <Step title="Install the SDK">
    Create a Go project and install the SDK. v1.2.0 and later require [Go 1.22 or later](https://go.dev/doc/install).

    ```bash wrap theme={"system"}
    go mod init blnk-quickstart
    go get github.com/blnkfinance/blnk-go
    ```
  </Step>

  <Step title="Client initialization">
    Parse your Blnk base URL and create a client. Pass a pointer to your API key when your instance requires authentication. The SDK sends it as the `X-Blnk-Key` header.

    Use `nil` when running locally without auth.

    ```go client.go theme={"system"}
    baseURL, _ := url.Parse("http://localhost:5001/")
    apiKey := "your_api_key"
    client := blnkgo.NewClient(
    	baseURL,
    	&apiKey,
    	blnkgo.WithTimeout(10*time.Second),
    	blnkgo.WithRetry(2),
    )
    ```
  </Step>

  <Step title="Create a sample script">
    Create a `main.go` file as shown below to create your first transaction with the SDK.

    <Note>
      Make sure you have a running Blnk Core instance. Set the URL and API key as environment variables when your instance requires authentication.
    </Note>

    ```go main.go expandable theme={"system"}
    package main

    import (
    	"fmt"
    	"net/url"
    	"time"

    	blnkgo "github.com/blnkfinance/blnk-go"
    )

    func main() {
    	baseURL, _ := url.Parse("http://localhost:5001/")
    	client := blnkgo.NewClient(baseURL, nil, blnkgo.WithTimeout(10*time.Second), blnkgo.WithRetry(2))

    	transaction, resp, err := client.Transaction.Create(blnkgo.CreateTransactionRequest{
    		ParentTransaction: blnkgo.ParentTransaction{
    			PreciseAmount: 100000, Reference: "first_txn_001", Currency: "USD", Precision: 100,
    			Source: "@FundingPool", Destination: "@MyBalance", Description: "My first Blnk transaction",
    		},
    		AllowOverdraft: true,
    	})
    	if err != nil {
    		fmt.Printf("Error creating transaction: %v\n", err)
    		return
    	}

    	fmt.Printf("Transaction ID: %s\n", transaction.TransactionID)
    	fmt.Printf("Status: %s\n", transaction.Status)
    	fmt.Printf("HTTP status: %d\n", resp.StatusCode)
    }
    ```
  </Step>

  <Step title="Execute the script">
    Run the file.

    ```bash wrap theme={"system"}
    go run main.go
    ```

    You should get a response similar to this:

    ```json 201 Created wrap expandable theme={"system"}
    {
      "amount": 1000,
      "precision": 100,
      "precise_amount": 100000,
      "transaction_id": "txn_8d2ce2f0-0d75-4a91-9d43-2ad2c2e6b9ad",
      "parent_transaction": "",
      "source": "bln_f344b673-e855-4bda-b769-3e94a02c1941",
      "destination": "bln_d5cbde84-d20a-485b-8ce8-6677d782c3a1",
      "reference": "first_txn_001",
      "currency": "USD",
      "description": "My first Blnk transaction",
      "status": "QUEUED",
      "allow_overdraft": true,
      "inflight": false,
      "created_at": "2024-11-26T09:33:35.265582042Z"
    }
    ```
  </Step>

  <Step title="View the transaction">
    Confirm the transaction landed in your ledger.

    <Tabs>
      <Tab title="Blnk Cloud">
        1. Open **Transactions** in the sidebar.
        2. Find your transaction by reference (`first_txn_001`) or by the `transaction_id` from the script output.
        3. Click the row to open the details and verify the amount, status, source, and destination.

        <Frame caption="The Transactions table shows every transaction synced from your Core instance.">
          <img src="https://mintcdn.com/blnk/V1zKD8N18ifO090g/cloud/img/transactions/transactions-table.png?fit=max&auto=format&n=V1zKD8N18ifO090g&q=85&s=64fe833e81988b573fb46f14fecdf315" alt="Blnk Cloud Transactions table with reference, amount, status, source, and destination columns" className="rounded-lg" width="1366" height="768" data-path="cloud/img/transactions/transactions-table.png" />
        </Frame>

        <Info>
          If the transaction is missing, click **Refresh** on the table to pull the latest data from Core.
        </Info>
      </Tab>

      <Tab title="CLI">
        Fetch the transaction by ID:

        ```bash wrap theme={"system"}
        blnk transactions list --id txn_8d2ce2f0-0d75-4a91-9d43-2ad2c2e6b9ad
        ```

        Replace the transaction ID with the value printed by your script.
      </Tab>
    </Tabs>
  </Step>
</Steps>

***

## Related docs

<CardGroup cols={2}>
  <Card title="Using the SDK" icon="code" href="/sdks/go/start/using-the-sdk">
    Authentication, timeouts, retries, and logging.
  </Card>

  <Card title="Error handling" icon="triangle-alert" href="/sdks/go/start/error-handling">
    Three-value returns and Core error bodies.
  </Card>

  <Card title="Changelog" icon="scroll-text" href="/changelog/blnk-go">
    Go SDK releases and version history.
  </Card>
</CardGroup>

***

## Need help?

We are very happy to help you make the most of Blnk, regardless of whether it is your first time or you are switching from another tool.

To ask questions or discuss issues, please [contact us](mailto:support@blnkfinance.com) or [join our Discord community](https://discord.gg/7WNv94zPpx).

<CtaCallout title="Connect your ledger to Blnk Cloud" href="https://cloud.blnkfinance.com/auth/sign-up?utm_source=blnk_docs&utm_medium=documentation&utm_campaign=need-help" buttonLabel="Open Blnk Cloud" trackingEvent="clicked_cloud_signup">
  Sign up and manage your ledger with our back-office dashboard. You can invite teammates to collaborate and manage your ledger operations directly from the dashboard.
</CtaCallout>
