{"title":"Latitude","slug":"latitude-payment-provider","url":"https://support.storeconnect.com/articles/latitude-payment-provider","url_markdown":"https://support.storeconnect.com/articles/latitude-payment-provider.md","subtitle":null,"summary":"Configure Latitude Interest Free as a buy-now-pay-later payment provider in StoreConnect for web and POS, including payment plans, preauthorization, refunds and product eligibility rules.","type":"Help_Documentation","video_url":"","keywords":"latitude, latitude pay, interest free, apply and buy, bnpl, buy now pay later","last_modified":"2026-08-21T07:12:35+0000","body_markdown":"This topic explains how to configure [Latitude](https://www.latitudefinancial.com.au/interest-free/) as a third-party buy-now-pay-later (BNPL) payment provider in StoreConnect.\n\nLatitude is an Australian and New Zealand retail finance product. At checkout the customer chooses a Latitude payment plan (for example \"10 months interest free\"), then completes the application and payment on Latitude's hosted page. StoreConnect supports Latitude on both web storefronts and POS.\n\n:::note\nLatitude in StoreConnect uses Latitude's **Apply \u0026 Buy / Interest Free** retail finance API (`applybuy-checkout-service`). This is different from Latitude's consumer \"Click to Pay\" wallet for existing cardholders, which is not what this integration provides.\n:::\n\nYou can use Latitude for:\n\n- Standard checkout (web and POS)\n- Additional and Salesforce payments\n- Pre-authorization\n- Refunds\n- Payment plans\n\nTo process transactions using Latitude:\n\n- Customers must have an Australian or New Zealand mobile number (for the POS SMS payment link)\n- A minimum purchase of **$250 AUD** applies per Latitude transaction\n\n## What you need\n\n- A Latitude merchant account enabled for Apply \u0026 Buy / Interest Free\n- **Merchant ID** and **Merchant Secret** issued by Latitude\n- For POS: per-outlet Latitude credentials and Latitude **terminal IDs** for each outlet or register that will take Latitude payments\n\n## Get credentials from Latitude\n\n- A **Merchant ID** (entered as the StoreConnect **API Key**)\n- A **Merchant Secret** (entered as the StoreConnect **API Secret**)\n- One or more **terminal IDs** for POS use, one per outlet or register\n- Optionally, separate Merchant ID / Secret pairs per outlet for POS\n\nSandbox credentials are issued separately from production credentials. Request both from your Latitude contact.\n\n## Configure Latitude in StoreConnect\n\n### Basic configuration\n\n1. Open StoreConnect and go to **Settings \u003e Payments \u003e Payment providers**.\n2. Select **New**. Complete the fields as follows, then **Save**:\n\n| StoreConnect field | Select or enter                                  |\n|--------------------|--------------------------------------------------|\n| Name               | Latitude                                         |\n| Provider           | Select **Latitude** from the list                |\n| API Mode           | `sandbox` for testing or `production` for live   |\n| API Key            | Merchant ID supplied by Latitude                 |\n| API Secret         | Merchant Secret supplied by Latitude             |\n| Channels           | `pos;web`, `pos`, or `web` depending on use      |\n| Active             | Tick to enable the provider                      |\n\n### API modes\n\n- `sandbox` — routes to Latitude's test environment (`api.test.latitudefinancial.com`). Use with sandbox credentials.\n- `production` — routes to Latitude's live environment (`api.latitudefinancial.com`).\n\n### API options\n\nAdditional configuration is set via the **API Options** field as YAML key/value pairs.\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `pos_enabled` | Boolean | Set to `true` to make Latitude available in the POS checkout |\n| `pos_store_mid` | String | Provider-level fallback Store MID for POS transactions. Used when an outlet does not have its own `store_mid` set. See [Store MID resolution](#store-mid-resolution). |\n| `pos_outlet_api_keys` | Hash | Per-outlet POS credentials, keyed by outlet SFID. Each value is `{api_key, api_secret, store_mid}`. `api_key` and `api_secret` are required; `store_mid` is optional and overrides `pos_store_mid` for that outlet. See [Store MID resolution](#store-mid-resolution). |\n| `terminal_ids` | Hash | Maps outlet or register SFIDs to Latitude terminal IDs. Register-level entries take precedence over outlet-level entries |\n| `use_preauth` | Boolean | When `true`, Latitude payments are preauthorized and captured (or released) separately. Defaults to `false` (immediate full capture) |\n| `customer_required` | Boolean | When `true`, the POS requires a named customer on the cart before Latitude can be used. Defaults to `false` |\n| `ineligible_product_types` | Array | Item types that cannot be paid for with Latitude (see below) |\n| `ineligible_product_ids` | Array | Specific product SFIDs that cannot be paid for with Latitude |\n\n#### Example API options\n\n```yaml\n\npos_enabled: true\nuse_preauth: false\ncustomer_required: false\nineligible_product_types:\n  - virtual\n  - voucher\nineligible_product_ids:\n  - a0FXx000000AbCdEFG\nterminal_ids:\n  OUTLET_SFID: TERM001\n  REGISTER_SFID: TERM002\npos_outlet_api_keys:\n  OUTLET_SFID:\n    api_key: merchant-id-for-this-outlet\n    api_secret: merchant-secret-for-this-outlet\n    # store_mid: outlet-specific-store-mid  # optional — only set if Latitude issued a distinct store identifier\n```\n\n### Store MID resolution\n\nLatitude uses the `storeMid` value to route settlement remittance to the correct store. StoreConnect resolves the `storeMid` for each outlet's POS transactions using this priority order:\n\n1. `pos_outlet_api_keys[outlet_sfid][store_mid]` — per-outlet explicit override\n2. `pos_store_mid` (in **API Options**) — provider-level fallback\n3. `pos_outlet_api_keys[outlet_sfid][api_key]` — the outlet's merchant ID, so `storeMid` matches `merchantId` by default\n\nIn most multi-outlet setups, omitting `store_mid` and `pos_store_mid` is correct: each outlet's `storeMid` defaults to its own `api_key`. Set `store_mid` per outlet only when Latitude has issued a distinct store identifier that differs from the merchant ID.\n\n:::warning\nIf you are upgrading from an earlier version of StoreConnect and your multi-outlet Latitude configuration does **not** have `pos_store_mid` set in **API Options**, the `storeMid` sent to Latitude will change from the provider-level `api_key` to each outlet's own `api_key`. This affects settlement remittance routing. Before upgrading, audit each outlet and confirm that the new default (outlet `api_key` = `storeMid`) is correct, or explicitly set `store_mid` per outlet to preserve the previous value.\n\nSingle-outlet stores where the provider-level and outlet `api_key` are the same value are unaffected.\n:::\n\n### Product eligibility\n\nSome item types are not appropriate for retail finance and should be excluded from Latitude. Set `ineligible_product_types` to any combination of:\n\n| Value | Excludes |\n|-------|----------|\n| `virtual` | Non-physical products (digital goods, services) |\n| `voucher` | Voucher and gift card products |\n| `shipping` | Shipping line items |\n| `promo` | Promotional discount line items |\n| `tipping` | Tip line items |\n| `surcharge` | Payment surcharge line items |\n| `cash_rounding` | Cash rounding adjustments |\n\nWhen a cart contains both eligible and ineligible items, the Latitude payment is capped at the eligible portion and the remainder must be split-paid using another method. When the entire cart is ineligible, Latitude shows a banner explaining nothing is eligible and the payment button is disabled.\n\n## Web checkout flow\n\n1. The customer selects **Latitude** at checkout.\n2. StoreConnect creates a Latitude purchase session and redirects the customer to Latitude's hosted page.\n3. The customer applies for finance or signs in to their existing Latitude account, chooses a payment plan and completes the purchase.\n4. Latitude redirects the customer back to StoreConnect and the order is finalized.\n\nAdditional payments against an existing order (for example, settling a balance) are supported and reuse the same flow.\n\n## POS checkout flow\n\n1. The POS operator selects **Latitude** from the payment methods.\n2. Available payment plans (interest-free promotions) load automatically from Latitude.\n3. The operator selects a plan and enters the customer's mobile number.\n4. Tapping **Send payment link** triggers Latitude to SMS the customer a payment link.\n5. The POS displays a QR code, a **Desktop Payment** button, and a status message. The POS polls every 3 seconds.\n6. The customer completes the payment on their device. The POS auto-completes the order on success.\n7. The customer has 20 minutes to complete the payment before it expires. A **Cancel transaction** button is available at any time.\n\n:::note\nLatitude in POS is automatically disabled when the register is offline and re-enabled when connectivity is restored.\n:::\n\n### POS prerequisites\n\n- The POS must be online.\n- The cart total must be at or above the selected plan's minimum (and not above its maximum).\n- The customer must have a valid Australian or New Zealand mobile number.\n- A `terminal_ids` entry must exist for either the register or its outlet.\n- If `customer_required: true`, a named customer must be on the cart before Latitude can be used.\n\n## Refunds\n\nLatitude supports both full and partial refunds from StoreConnect.\n\n- **Captured payments** call Latitude's refund API against the original transaction.\n- **Preauthorized (uncaptured) payments** call Latitude's void API to release or reduce the hold. A full refund releases the preauthorization entirely; a partial refund reduces the held amount.\n\nRefunds are protected against duplicate submission — repeating a refund with the same reference and amount returns a `409 Conflict` from StoreConnect.\n\n## Preauthorization\n\nWhen `use_preauth: true`, Latitude payments are authorised but not captured. Funds are held on the customer's Latitude account until you capture or release the payment from the order in StoreConnect. Partial captures and partial releases are supported.\n\nWhen `use_preauth: false` (the default), payments are captured in full at the time of purchase.\n\n## Payment plans\n\nLatitude offers a range of interest-free payment plans (for example, \"6 months interest free\", \"10 months interest free\"). Plans have minimum and maximum purchase amounts:\n\n- If the order total is below a plan's minimum, the operator (or customer) sees a warning.\n- If the order total is above a plan's maximum, the operator (or customer) sees a warning.\n- On POS, the first available plan is pre-selected by default.\n\nThe set of available plans is configured by Latitude on the merchant account, not in StoreConnect.\n\n## Testing in sandbox\n\nAfter setting **API Mode** to `sandbox` and entering sandbox credentials, you can test web and POS flows using Latitude's sandbox test card:\n\n| Field       | Value              |\n|-------------|--------------------|\n| Card Number | `4377320005654057` |\n| Expiry      | `07/29`            |\n| CVV         | `631`              |\n\n## Troubleshooting\n\n- **\"Environment not valid for Payment Provider\"** — the **API Mode** does not match the credentials. Switch to `sandbox` if using sandbox credentials, or `production` if using live credentials.\n- **POS shows Latitude as disabled** — the register is offline, or `pos_enabled` is not set to `true` in **API Options**, or there is no `terminal_ids` mapping for the register or its outlet.\n- **\"A customer is required for Latitude payments\"** — `customer_required: true` is set; add a named customer to the cart before selecting Latitude.\n- **\"Amount below minimum\" / \"Amount exceeds maximum\"** — the cart total is outside the selected plan's range. Choose a different plan or adjust the cart.\n- **Invalid phone number** — the POS requires a valid Australian or New Zealand mobile number.\n- **Payment timeout** — the customer has 20 minutes to complete the SMS payment link."}