# Choose your integration

Pick the path that matches what you are building. Each one lists the key you need, the steps in order, and where to go next. Every path starts on **Sandbox** (`https://uat.auxcore.net`) — see [Environments](./environments.md).

---

## Which path fits?

| You want to… | Path | Code you write | Key |
|--------------|------|----------------|-----|
| Take card payments on your own website | [Website checkout](#accept-payments-on-your-website) | A few lines of HTML | SDK embed key `lpk_live_…` |
| Add card payments to a WooCommerce store | [WooCommerce](#sell-with-woocommerce) | None | Secret key `api-…` |
| Charge from your server, ERP or back office | [Server and ERP](#charge-from-your-server-or-erp) | REST calls | Secret key `api-…`, or ERP key `lv_erp_…` |
| Bill customers who pay later | [Invoices and payment links](#send-invoices-and-payment-links) | None, or REST calls | Dashboard, or secret key |
| Charge the same customer on a schedule | [Subscriptions](#bill-on-a-schedule) | REST calls | Secret key `api-…` |
| Take payments face to face | [In-person payments](#take-payments-in-person) | None for merchants | Device pairing code |

Keys are created in the dashboard under **Settings → Developer & Integrations → API Keys** ([Authentication](./authentication.md)). Secret keys stay on your server; only the SDK embed key may appear in a web page.

---

## Accept payments on your website

**Best for:** a checkout page you control, without card data ever touching your servers.

Card fields load in iframes from `vault.auxcore.net`, so your page never sees a card number.

1. **Create an SDK embed key** (`lpk_live_…`) and list your site's domains under **Allowed origins**.
2. **Add the fields and the script tag** to your checkout page — [SDK quick start](./sdks.md#quick-start-card-and-ach-checkout-no-code).
3. **Try it in the dashboard's SDK tester** (**Settings → Developer & Integrations → SDK & API Docs**) with a [test card](./testing.md#test-cards).
4. **Confirm payments from your server.** Register a webhook with your secret key ([Register with an API key](./webhooks.md#register-with-an-api-key-public-api)) and fulfil the order on `transaction.approved`, not on the browser callback.

Need your server to approve the amount first? Use [tokenize only](./sdks.md#tokenize-only-charge-from-your-server): the SDK returns a `pciToken` and your server charges it. Prefer not to host card fields at all? Send the shopper to a [hosted checkout](../core/hosted-checkout.md) page created by your server.

---

## Sell with WooCommerce

**Best for:** WooCommerce stores. No code: the plugin handles checkout, webhooks and refunds.

1. **Enable the WooCommerce integration** for the merchant in the dashboard — [Step 1: Merchant setup](./woocommerce-plugin.md#step-1-merchant-setup-auxcore-dashboard).
2. **Install the plugin** in WordPress and enter a **secret** API key (not the SDK embed key).
3. **Save the settings.** The plugin registers its own webhook, so orders update even if the shopper closes the browser.
4. **Place a Sandbox order** with a [test card](./testing.md#test-cards), then refund it from the WooCommerce order screen.

Full guide: [WooCommerce Plugin](./woocommerce-plugin.md).

---

## Charge from your server or ERP

**Best for:** ERPs, billing systems and back-office tools that decide when and how much to charge.

1. **Run the [Quick Start](./quickstart.md)** — test connection, tokenize, charge, look up and refund in five steps.
2. **Collect cards without handling them.** In a browser, use the SDK in [tokenize only](./sdks.md#tokenize-only-charge-from-your-server) mode and post the `pciToken` to your server. The API never accepts raw card numbers on Sandbox or Production.
3. **Charge, void and refund** with the Public API — [Transactions](../core/transactions.md), [Voids](../core/voids.md), [Refunds](../core/refunds.md).
4. **Listen for webhooks** so asynchronous results (ACH returns, refund failures, Transaction Rules reviews) reach your system — [Webhooks](./webhooks.md).
5. **Handle errors and retries safely** — [Integration Guide](../guides/integration-guide.md).

One integration for many merchants? Use a tenant-wide **ERP key** (`lv_erp_…`) and send `X-Merchant-ID` on each call ([Authentication](./authentication.md)).

---

## Send invoices and payment links

**Best for:** customers who pay after receiving a bill — services, B2B, deposits.

Every invoice gets its own hosted pay page, so your customer pays without you building a checkout.

1. **Create an invoice** with line items, tax and discounts — in the dashboard, or with the [Invoices API](../invoicing/invoices.md#create-an-invoice) using your secret key.
2. **Send it** by email or SMS — [Send an Invoice](../invoicing/invoices.md#send-an-invoice) and [Sending](../invoicing/sending.md).
3. **Track the payment** — [Invoice statuses](../invoicing/invoices.md#invoice-statuses); partial payments are optional per invoice.

For a one-off amount without an invoice, create a **payment link** — in the dashboard, or with [`POST /public/payment-links`](../invoicing/payment-links.md) and your secret key — and text or email it to the customer.

---

## Bill on a schedule

**Best for:** memberships, retainers and anything charged weekly, monthly or yearly.

1. **Get a token for the customer's card** — with the SDK in [tokenize only](./sdks.md#tokenize-only-charge-from-your-server) mode.
2. **Create the schedule** with `POST /api/v1/public/recurring` and your secret key — [Create via Public API](../recurring/subscriptions.md#create-via-public-api). Due payments are charged automatically, and declined ones are retried.
3. **Manage it** — pause, resume, skip or cancel ([Subscriptions](../recurring/subscriptions.md)), and follow failed payments with [Dunning](../recurring/dunning.md).

Splitting a fixed total into installments is a different product: see [Payment Plans](../recurring/payment-plans.md).

---

## Take payments in person

**Best for:** counters, deliveries and events using AuxCORE payment terminals.

1. **Have an administrator add the device** in the dashboard under **Locations & Devices** — this issues a TPN and a pairing code tied to one merchant.
2. **Pair the terminal** by entering the TPN and pairing code in the device app.
3. **Take a payment**; it appears in the dashboard alongside online payments.

Building the device app itself? See the [Mobile Device Integration](../mobile/device-integration.md) guide.

---

## Every path: before you go live

- [ ] Your flows pass on Sandbox, including a decline and a refund — [Testing](./testing.md)
- [ ] Webhooks are verified and processed once per event — [Webhooks](./webhooks.md)
- [ ] You created **new production keys** on `app.auxcore.net`; Sandbox keys do not work there
- [ ] Everything else on the [Go-Live Checklist](../guides/go-live-checklist.md)

---

**Not sure which path fits?** Contact support@auxcore.net
