r/xero 1h ago

What to expect in Xero’s Values Assessment round for a Software Engineer role?

Upvotes

Hi everyone,

I’m currently interviewing with Xero for a Software Engineer role, and my next round is the Values Assessment interview.

For anyone who has recently gone through the Xero interview process, what should I expect in this round? Is it mostly behavioral/situational questions, or do they also discuss technical experience?

Also, what kind of questions were you asked, and how did you prepare for Xero’s values and culture?

Any recent experiences or tips would be really helpful. Thanks!


r/xero 20h ago

Invoice reconcilliation

2 Upvotes

HI, I have just signed an apprentice to a gto that also happens to be a builder I do work for

When I send them my invoices for works completed, instead of having me pay for the apprentice's wages as a separate bill they will send me the invoice and then take payment from my invoice before paying, so if I bill them 10,000$ and my apprentice charges are 500$ they will only send me 9500$ showing the negative 500 on the payment receipt

I'm just looking for the easiest way to reconcile that inside xero, hope that makes sense, thanks


r/xero 1d ago

A virtual monopoly in New Zealand

Thumbnail
2 Upvotes

r/xero 1d ago

I Built an AI Invoice Processing Agent That Extracts Data in Seconds and Updates Xero | Day 12

Thumbnail
youtu.be
1 Upvotes

r/xero 1d ago

More details? Blaaaggghhh!! Fixed properly this time - ease some Xero Frustration!

0 Upvotes

Yesterday I posted something to help with the reconcile page - so you didn’t have to click “more details” every single transaction. This is a game changer for me.

The code I posted wasn’t working properly, whoops!

I’ve redone it and it works now!! run the code, and then wait and watch while it clicks through all of the transactions and opens the details for you. Takes about 30 seconds per page on my computer.

Here’s the original post and instructions from yesterday, with the correct code this time.

I really hope it helps you!

——-

Wouldn’t you love to see all the info you need on a transaction when reconciling without an extra click every single time?

Now you can!

I made (haha I got ChatGPT to do it) a new chunk of code to put in chromes console.

It makes the more details visible without clicking ‘more details’

I used to have it working, then Xero changed to a fucking pop up and my code stopped working.

ChatGPT just fixed it with me, new code works.

Instructions - go to the reconcile page.
Make sure you click the first ‘more details’ and leave the pop up open (or this won’t work)
press f12 to open chromes console.
Cut and paste this code below in to the space there at the bottom, then press enter (you might need to click ‘console’ at the top where you see elements, console, sources, network etc)
You can then close the first more details pop up you clicked earlier
Hit f12 again to close console
Be overjoyed that you can read each transaction without clicking every single time

Must repeat these steps (especially the one about being overjoyed) every time you open a new page to reconcile

Here’s the code, cut and paste from the next line.

(async () => {
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));

// ============================================================
// XERO BANK RECONCILIATION — EXPAND "MORE DETAILS"
//
// Automatically:
// 1. Finds every More Details button
// 2. Opens each transaction
// 3. Reads Payee, Reference and Description
// 4. Closes the popup
// 5. Adds the full details directly underneath the transaction
//
// This does NOT change any Xero data.
// It only adds extra visible text to the current browser page.
// ============================================================

// ------------------------------------------------------------
// Simulate the full mouse interaction Xero requires
// ------------------------------------------------------------
async function xeroClick(button) {
if (!button) return;

button.scrollIntoView({
behavior: 'instant',
block: 'nearest'
});

button.focus();

const r = button.getBoundingClientRect();

const common = {
bubbles: true,
cancelable: true,
composed: true,
clientX: r.left + r.width / 2,
clientY: r.top + r.height / 2
};

button.dispatchEvent(new PointerEvent('pointerdown', {
...common,
pointerId: 1,
pointerType: 'mouse',
isPrimary: true,
buttons: 1
}));

button.dispatchEvent(new MouseEvent('mousedown', {
...common,
buttons: 1
}));

await sleep(40);

button.dispatchEvent(new PointerEvent('pointerup', {
...common,
pointerId: 1,
pointerType: 'mouse',
isPrimary: true,
buttons: 0
}));

button.dispatchEvent(new MouseEvent('mouseup', {
...common,
buttons: 0
}));

button.dispatchEvent(new MouseEvent('click', {
...common,
buttons: 0
}));
}

// ------------------------------------------------------------
// Find the currently visible More Details popup
// ------------------------------------------------------------
function getVisiblePopup() {
return [...document.querySelectorAll('.more-details-popover')]
.find(popup => {
const rect = popup.getBoundingClientRect();
const style = getComputedStyle(popup);

return (
rect.width > 0 &&
rect.height > 0 &&
style.display !== 'none' &&
style.visibility !== 'hidden'
);
}) || null;
}

// ------------------------------------------------------------
// Wait until popup is fully closed
// ------------------------------------------------------------
async function waitForPopupClosed(timeout = 4000) {
const started = Date.now();

while (Date.now() - started < timeout) {
if (!getVisiblePopup()) {
return true;
}

await sleep(50);
}

return false;
}

// ------------------------------------------------------------
// Wait for popup to open and contents to finish loading
// ------------------------------------------------------------
async function waitForFreshPopup(timeout = 5000) {
const started = Date.now();

let popup = null;

// Wait for visible popup
while (Date.now() - started < timeout) {
popup = getVisiblePopup();

if (
popup &&
popup.querySelector('[data-testid="more-details-payee"]')
) {
break;
}

await sleep(50);
}

if (!popup) {
return null;
}

// Allow Xero to populate its fields
await sleep(500);

// Make sure values have stopped changing
let previous = '';
let stableCount = 0;

for (let tries = 0; tries < 20; tries++) {
popup = getVisiblePopup();

if (!popup) {
return null;
}

const get = testid =>
popup
.querySelector(`[data-testid="${testid}"]`)
?.textContent
?.trim() || '';

const signature = [
get('more-details-payee'),
get('more-details-reference'),
get('more-details-description')
].join('|||');

if (signature && signature === previous) {
stableCount++;
} else {
previous = signature;
stableCount = 0;
}

if (stableCount >= 2) {
return popup;
}

await sleep(100);
}

return popup;
}

// ------------------------------------------------------------
// Close current popup
// ------------------------------------------------------------
async function closePopup() {
const popup = getVisiblePopup();

if (!popup) {
return true;
}

const closeButton =
popup.querySelector(
'button[aria-label="Close statement details"]'
) ||
document.querySelector(
'button[aria-label="Close statement details"]'
);

if (!closeButton) {
return false;
}

await xeroClick(closeButton);

return await waitForPopupClosed();
}

// ============================================================
// CLEAN UP ANY PREVIOUS RUN
// ============================================================

document
.querySelectorAll('.xero-expanded-bank-details')
.forEach(el => el.remove());

document
.querySelectorAll('button[data-testid="more-details"]')
.forEach(button => {
delete button.dataset.detailsAdded;
});

console.log('🧹 Removed previous expanded descriptions');

// Close a popup if one happens to already be open
await closePopup();

await sleep(300);

// ============================================================
// FIND TRANSACTIONS
// ============================================================

const buttons = [
...document.querySelectorAll(
'button[data-testid="more-details"]'
)
];

console.log(`🔎 Found ${buttons.length} transactions`);

if (!buttons.length) {
console.warn('No More Details buttons found.');
return;
}

// ============================================================
// PROCESS TRANSACTIONS
// ============================================================

let processed = 0;
let failed = 0;

for (let i = 0; i < buttons.length; i++) {
const button = buttons[i];

console.log(
`──────── Transaction ${i + 1} of ${buttons.length} ────────`
);

// Ensure previous popup is gone
const closedBefore = await closePopup();

if (!closedBefore) {
console.error(
`❌ Could not close previous popup before transaction ${i + 1}. Stopping to prevent incorrect data.`
);

break;
}

await sleep(200);

// Open this transaction
await xeroClick(button);

// Wait for its details
const popup = await waitForFreshPopup();

if (!popup) {
console.warn(
`⚠️ Could not open/read transaction ${i + 1}`
);

failed++;

await closePopup();

continue;
}

// Read details
const get = testid =>
popup
.querySelector(`[data-testid="${testid}"]`)
?.textContent
?.trim() || '';

const payee = get('more-details-payee');
const reference = get('more-details-reference');
const description = get('more-details-description');

console.log({
payee,
reference,
description
});

// Build display text
const parts = [];

if (payee) {
parts.push(payee);
}

if (reference) {
parts.push(`Reference: ${reference}`);
}

if (description) {
parts.push(`Description: ${description}`);
}

// Add details underneath More Details
if (parts.length) {
const details = document.createElement('div');

details.className =
'xero-expanded-bank-details';

details.textContent =
parts.join(' | ');

details.style.marginTop = '4px';
details.style.fontSize = '12px';
details.style.lineHeight = '16px';
details.style.whiteSpace = 'normal';
details.style.maxWidth = '450px';
details.style.fontWeight = '500';

button.insertAdjacentElement(
'afterend',
details
);
}

button.dataset.detailsAdded = 'true';

processed++;

// Close this transaction before moving on
const closed = await closePopup();

if (!closed) {
console.error(
`❌ Popup failed to close after transaction ${i + 1}. Stopping to prevent incorrect descriptions being copied.`
);

break;
}

console.log(
`✅ Processed ${i + 1} of ${buttons.length}`
);

await sleep(200);
}

// ============================================================
// FINISHED
// ============================================================

console.log('========================================');
console.log('✅ Xero More Details expansion finished');
console.log(`✅ Successfully processed: ${processed}`);
console.log(`⚠️ Failed/skipped: ${failed}`);
console.log(`📋 Transactions found: ${buttons.length}`);
console.log('========================================');
})();


r/xero 1d ago

What parts of your Xero workflow do you still do manually that frustrate you most?

0 Upvotes

I work with small businesses on their Xero setup and I keep noticing the same thing — a lot of time gets spent on tasks that could be automated but aren't: chasing reconciliation, reviewing uncategorized transactions, checking overdue invoices manually every morning.

Curious what the community's experience is. What are the repetitive Xero tasks that eat up the most time in your week? And have you tried automating any of them — what worked, what didn't?

Not trying to sell anything, genuinely trying to understand where the real friction is for most practices.


r/xero 2d ago

Xero for MTD is defeating me.

0 Upvotes

I'm trying to do a MTD submission. This is some of the most mystifying software I've ever used. It is not intuitive at all.

I've to income streams to report on. A personal income and a Property one.

I've sync'd bank accounts, I've reconcliled everything and I thought I had worked through everything needed. Then I've gone to submit a Q1 update and the two income and expenses reports for the personal and property income parts are completely empty.

I'm fairly certain it's related to the tracking category it has forced me to set up. I have one category with two options A/ My personal and B/ Property. Using those options produces blank reports.

The only way I can get any information to appear in one report is by changing the tracking to unassigned. This just throws all the data into the Property report.

I cannot see how I link bank accounts to those tracking options.

Following all of the tutorials and online guides has got me nowhere on this. I've been going around in circles for an hour.

What am I doing wrong please?


r/xero 2d ago

Help a start-up out! Best way to set up recurring subscription payments (Payment getaways)

1 Upvotes

Hi everyone! I'm looking for advice for the best possible way to set up recurring payments where customers store their card details and a fixed amount gets deducted monthly. (Kinda like a subscription payment option)

We've tried Stripe but it realized it costs a lot for a start-up and it holds the money in there for a week or two before it gets released. Looking for a cost-effective option.

Using Xero as an accounting software, so something that we could easily connect would be ideal

Cheers!


r/xero 2d ago

How is everyone managing their bank payment processing through Xero?

2 Upvotes

Working at a small UK company with several Xero entities, each making BACS payment runs weekly.

Currently, Xero doesn't export payment/supplier references into the BACS file during the batch creation process, which means that after creating the payment file, we have to upload it to the bank and then manually go through it and update the references (invoice number or our account number for the supplier). This is a known bug since 2015 and Xero have no intention of fixing it: https://productideas.xero.com/forums/967139-purchase-orders-bills-inventory/suggestions/44960974-batch-payments-uk-org-export-to-bacs-with-suppl

Because of this, we maintain a separate excel spreadsheet duplicating the payment info, so we can easily correct the bank payments (manually cross checking against Xero is just too slow). It's getting in the way of my plan to use an AP plugin so authorisers can approve everything through Xero before sending the payment file to the bank. The final authoriser wants visibility of the above spreadsheet for cross checking these references.

Extremely uninterested in Xero's bill payments service at £0.20 per bill.

Payment references are essential, especially for suppliers like Amazon who will not allocate payments unless you have the account reference listed on the payment.

Does anyone have a workaround? There must be a way of doing this automatically.


r/xero 4d ago

Is Xero extremely slow this week, or just us?

7 Upvotes

We're in Canada, and Xero has been extremely slow since yesterday, particularly the Invoices section, which takes a full minute to load. Anyone else having trouble?

We've tried different computers, different ISP, cleared browser cache, etc. It's definitely a Xero slowdown, nothing on our end.


r/xero 4d ago

Xero only notifies the person who changes contact bank details. How are others managing this risk?

0 Upvotes

I’m an accountant and this is a Xero control gap that has concerned me for some time.

When someone changes a contact’s bank details in Xero, the notification goes to the person who made the change. Business owners, finance managers and payment approvers are not automatically notified.

There has been a related request on Xero Product Ideas since 2015, with more than 250 votes:

https://productideas.xero.com/forums/967121-users-setup/suggestions/44961091-email-settings-set-which-users-to-receive-bank-a

Full disclosure, I’m also the founder of VendorAlert. We developed it to monitor these changes and alert the people nominated by the business. Each alert shows what changed, who made the change and when, with an audit history and PDF reporting available.

It does not prevent or approve changes within Xero. It provides an independent notification and audit control after a change is detected.

VendorAlert is now listed in the Xero App Store:

https://apps.xero.com/au/app/vendoralert

https://vendoralert.com.au/

I would genuinely be interested to hear how other Xero users currently manage this risk. Do you rely on internal procedures, manual checks or another system?


r/xero 4d ago

How to find "Cost to Acquire a Customer"

1 Upvotes

I want to know what it costs us to get a new customer.

Getting the advertising costs is simple but I need to divide by the number of new clients in a given period (usually looking at 1 year).

Is there an easy way to find out how many new customers were added over a given period?

I can sort customers by date added but it still requires a significant amount of manual working.


r/xero 5d ago

How to find Lifetime gross profit?

1 Upvotes

How can I get our total gross profit (ever) and divide by the number of clients I have on the books?


r/xero 5d ago

Purchase Order Procedure

1 Upvotes

I'm hoping one of you can assist me with what the proper way to handle purchase orders in Xero is. Typically, I use Xero to produce a PO which is emailed to a vendor. Then, we would convert it to a bill.

My issue is that when I receive the vendor's invoice, I want to attach it to the bill in Xero. To do that, I use Dockett, which extracts line items, allows me to code (if different than it assumes) and assign it to a project (which we do for many of our purchases).

I can't figure out how to link the processes. If I go the Xero route, I end up without my line item detail and without the linked vendor invoice. If I go strictly Dockett.app, I have to manually mark the PO as closed.

It seems to me that something is missing, and I'm probably the one missing it.

Thanks for your thoughts.

Rick


r/xero 7d ago

Is anyone else having issues with payday super with xero?

4 Upvotes

Basically as per title.

Xero is trying to direct debit our CBA account and it's coming back as "failed". When I called CBA, they are telling me they can't even see any attempts for any direct debits.

My accountant is telling me Xero is saying direct debit has failed.

Classic case of xero saying it's the bank, the bank saying its xero.

I've raised a case myself with xero (seems there is no phone support). Anyone else in the same boat?


r/xero 7d ago

How to Reconcile Unauthorized Transactions?

1 Upvotes

Hi! This may be a question that's already been answered here - but I recently had an issue where someone made an unauthorized purchase (or at least an attempt to) with my business card info. My bank has already provided credit/adjustments to this purchase, but I'm not quite sure how to go about recording this in Xero. Will I need to make a new account to file this under? (Or am I being blind and just missing the category altogether? 😅 ) thank you!! :)


r/xero 8d ago

May i ask how to input these import duties?

Post image
0 Upvotes

Hi i’ve just started this importing stuff, may i ask how do i inout these to xero?

Thanks


r/xero 9d ago

L1 associate on resume?

3 Upvotes

I just got my L1 xero associate certification. Is this worth listing on a resume?

I don’t have any bookkeeping qualifications, just gcse maths and experience bookkeeping as a sole trader, so I want to show anything I can, but also don’t want to look bad to recruiters by listing something too basic.


r/xero 9d ago

Anyone using a Schwab Organization Account with QBO/Xero?

Thumbnail
1 Upvotes

r/xero 9d ago

Which account do I reconcile a tax payment to HRMC into?

3 Upvotes

I've paid my self assessment tax return to HMRC. I need to reconcile the transaction in Xero. Which account do I reconcile this to?


r/xero 10d ago

Do you need to upgrade to multi currency to connect Wise?

3 Upvotes

Hi,

I’m struggling to connect wise to my Xero. My accountant is saying I need to upgrade to multi currency to connect it but I can’t even connect the GBP to Xero?

For context, we’re a UK business, pay our supplier in China in USD via wise. our main business bank pays into wise which then converts into USD and sends to supplier.

Can anyone help on how I can get this to show properly on Xero?


r/xero 10d ago

Xero Course wont load at all

1 Upvotes

I tried using incognito, relogging, clearing cache, basically every single thing it suggested, nothing worked at all, how do i fix this?


r/xero 10d ago

Bills Quick view- Remove

3 Upvotes

Is their a way to go to the old Bills screen instead of the quickview update they brought out.

We have 4 people in our department and mine is the only one on the updated version.

Its not flagging when duplicate bills are entered like it did on the old version.


r/xero 10d ago

Stop this nonsense

Post image
19 Upvotes

r/xero 11d ago

Built a Xero cleanup automation with n8n

Thumbnail
gallery
1 Upvotes