SyncPay SPTC
×
Xero Accounting API

Invoice. Xero-synced. Auto-paid. Done.

When you create an invoice in SyncPay, a unique SPTC code is generated simultaneously and pushed to Xero. Your client pays via bank transfer using the SPTC as reference. SyncPay detects the payment and calls the Xero Payments API to mark the invoice paid — before reconciliation is even needed.

POST /Invoices
SPTC Generated
Reference Embedded
Client Pays via Bank
PUT /Payments
Invoice PAID in Xero
Zero Reconciliation
POST /Invoices
SPTC Generated
Reference Embedded
Client Pays via Bank
PUT /Payments
Invoice PAID in Xero
Zero Reconciliation
01 — How It Works

Five steps.
Zero manual work.

The SPTC is the thread that links the invoice in SyncPay, the entry in Xero, and the bank transfer — without needing Xero's bank feed API (which is partner-only and closed).

🧾
01
Create Invoice
Raise invoice in SyncPay with line items, GST, due date.
SyncPay
🔑
02
SPTC + Xero Sync
SPTC auto-generated. Invoice pushed to Xero via POST /Invoices with SPTC in Reference field.
SyncPay + Xero
📤
03
Invoice Sent
Client receives invoice with SPTC as the payment reference to use in their bank transfer.
SyncPay
📱
04
Client Pays
Client bank-transfers the amount using SPTC-AU-XXXXXXXX as the reference description.
Bank Transfer
05
Xero Marks Paid
SyncPay calls PUT /Payments — Xero invoice status becomes PAID. Done.
Xero
02 — Live Demo

Watch the
SPTC close the loop.

Step through a real cycle — from invoice creation to Xero showing PAID, driven by a single SPTC reference.

STEP 1 / 5
SyncPay → Invoice
syncpay.au / invoices / INV-0041
SyncPay
syncpay.au · ABN 12 345 678 901
INV-0041
DRAFT
From
SyncPay Pty Ltd
accounts@syncpay.au
Bill To
Meridian Group
finance@meridiangroup.com.au
DescriptionQtyTotal
Xero Integration Module1$3,200.00
Setup & Onboarding1$800.00
GST (10%)$400.00
Total Due AUD
$4,400.00
🔑
Payment Reference (SPTC)
SPTC-AU-9F3C2A81
Enter this as your
bank transfer reference
Xero → Invoices (api.xero.com)
Xero
Dashboard Invoices Payments
Awaiting Payment View all ›
INV-0039
Apex Solutions
REF: SPTC-AU-2B8D4F93
$2,200.00
Paid
INV-0041
Meridian Group
REF:
$4,400.00
Draft
Payment recorded — INV-0041
✓ PAID
Amount$4,400.00 AUD
Date22 Mar 2026
AccountANZ Business Cheque
Recorded viaSyncPay · PUT /Payments
SPTC SPTC-AU-9F3C2A81
03 — API Reference

Real endpoints.
Real Xero API.

Xero API — What's actually available
Xero's Bank Feeds API is closed — only Xero financial institution partners can push directly to the bank feed. Reconciliation via API is not supported by Xero. SyncPay uses the right approach instead: POST /Invoices to create the invoice in Xero with the SPTC in the Reference field, then PUT /Payments to mark it paid as soon as payment is detected — making reconciliation unnecessary entirely. Docs: developer.xero.com ↗
identity.xero.com
POST /connect/token
OAuth 2.0 — exchange authorisation code for access + refresh tokens. Required before any Xero API call.
api.xero.com/api.xro/2.0
POST /Invoices
Create invoice in Xero with SPTC embedded in the Reference field. Status set to AUTHORISED (awaiting payment).
api.xero.com/api.xro/2.0
GET /Invoices?where=Reference=...
Look up an invoice by SPTC reference string to confirm it exists and check current status.
api.xero.com/api.xro/2.0
PUT /Payments
Record payment against the invoice. Xero immediately marks it PAID. This replaces the need for manual reconciliation.
SyncPay → Xero Webhook
POST /webhooks (Xero outbound)
Xero fires a webhook when invoice status changes. SyncPay listens to confirm PAID status and update its own records.
OAuth 2.0 · identity.xero.com/connect/token
// Step 1: Exchange auth code for tokens
// identity.xero.com/connect/token

const tokens = await fetch('https://identity.xero.com/connect/token', {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: new URLSearchParams({
    grant_type: 'authorization_code',
    code: authCode,
    redirect_uri: 'https://syncpay.au/xero/callback',
    client_id: XERO_CLIENT_ID,
    client_secret: XERO_CLIENT_SECRET
  })
}).then(r => r.json());

// Response
{
  "access_token":  "eyJhbGci...",  // expires 30min
  "refresh_token": "abc123...",   // store securely
  "token_type":    "Bearer",
  "expires_in":    1800
}
SyncPay
×
Xero

Connect once.
Reconcile never.

Link your Xero organisation in 30 seconds via OAuth 2.0. Every invoice you raise from that point gets a SPTC, syncs to Xero, and marks itself paid when your client transfers the funds.

Connect Xero → ← Back to SyncPay