Engineer - Payments
Required skills
- backend development
- C#
- NET Core
- AWS
- distributed systems
- service-to-service communication
- eventual consistency
- resilience patterns
- relational databases
- transactional data integrity
Nice to have
- DevOps
- automated testing
- continuous integration
- API design
Role summary
Xero is seeking an Engineer for their Payments team in Vancouver. This role focuses on delivering high-quality, scalable software by transitioning to microservices, building and operating services in AWS using C#/.NET Core, and resolving complex database and API challenges. The position requires proficiency in backend development with languages like C#, .NET, Java, or Go, a solid understanding of distributed systems and relational databases, and familiarity with DevOps practices. The role involves a hybrid work model and offers a salary range of 131,800 - 150,000 CAD.
The role / impact
You will deliver high-quality, impactful software that aligns with team and business goals, always keeping customer needs and outcomes front of mind. By identifying and solving complex, ambiguous problems independently, you will produce robust, high-quality, and scalable software that helps change the world by supporting small businesses. Your daily work will focus on systems, scalability, and engineering quality while collaborating across teams to drive technical excellence and developer efficiency.
Through clear and thoughtful communication, you will ensure stakeholders are well-informed and aligned. You will play a key part in fostering an inclusive team culture by mentoring others and sharing feedback with empathy. Your active participation in planning, delivery, and continuous improvement will contribute directly to the success of the broader Xero community.
The team / how they connect
You will join the Payments team within Product Platforms, which forms the critical foundation underneath core product areas like invoices, bills, payments, and payroll. The team exists to make it easy for other groups across Xero to build on a strong foundation of accounting concepts, data, and libraries safely and efficiently. Operating across Wellington and Vancouver, we collaborate closely to reduce tight coupling, establish clear service boundaries, and accelerate product velocity global-wide.
The team is currently working on / Initially, you will focus on
Transitioning from a monolithic architecture to modern microservices to remove delivery bottlenecks and improve efficiency.
Building and operating services in a production cloud environment utilizing C#, .NET Core, and AWS.
Resolving complex legacy problems, database scalability challenges, and modernizing service interfaces or APIs.
Automating manual processes and applying test-driven and trunk-based development practices.
Where and how you can work
This role is based at our on-site location in Vancouver. We operate on a hybrid model where you will spend one to two days a week in the office for collaborative technical discussions and team alignment, with the flexibility to work from home on the other days. You will also have the opportunity to travel to New Zealand for onboarding after your first couple of weeks.
Here are some of the things we are looking for
You bring proficient backend development experience with one or more programming languages such as C#, .NET, Java, or Go.
A solid understanding of distributed systems concepts, including service-to-service communication, eventual consistency, and resilience patterns belongs in your toolkit.
Your background features practical experience working with relational databases where transactional data integrity and ACID principles are critical.
Having a familiar working knowledge of modern DevOps practices, automated testing, and continuous integration pipelines will help you succeed.
Showing an interest in utilizing modern artificial intelligence tools will enable you to enhance personal productivity and streamline engineering workflows.
You possess strong communication and collaboration skills, with the capacity to manage internal stakeholders like a technical product partner.
Apply even if your experience isn't a perfect match! At Xero, we hire based on your skills, passion, and the unique perspective you can bring to enhance our culture and team.
Compensation & Total Rewards
At Xero, we value the impact and skills you bring to the team. We believe in a Total Package philosophy - ensuring your value is recognized through a holistic lens that includes base salary, performance incentives, and world-class benefits.
The expected base salary range for this role is 131,800 - 150,000 CAD.
Individual pay is determined by various factors, including geography, level of experience, and the specific skills you bring to the role.
In addition to base pay, Xero’s roles are eligible for the following forms of variable compensation:
Variable Pay: Permanent employees are eligible to participate in our annual bonus and equity (RSU) programs. You may also be eligible for performance-based cash or equity (RSUs) incentives depending on your role level, and company performance.
Comprehensive Benefits: World-class health, wellness, and retirement programs. Xero Perks including Wellbeing days, generous leave, and dedicated professional development budgets.
This is a posting for an existing vacancy.
Xero uses AI to help screen applications based on job-related qualifications. These tools assist our recruiters but do not make automated hiring decisions. A human recruiter reviews all candidates before any hiring action is taken.
Sample Xero interview questions
- 1
Merge Overlapping Intervals Merge overlapping intervals in an array. Input: intervals = [[1,4],[4,5]] Output: [[1,5]] Explanation: The intervals touch exactly at the 4 mark, so they are successfully merged into a single continuous interval.
codingmedium - 2
Diameter of a Binary Tree Find the diameter of a binary tree. Input: root = [1,2] Output: 1 Explanation: The longest path is simply the single edge connecting the root node to its only child.
codingmedium - 3
Iterator over a Binary Search Tree Implement an iterator over a binary search tree. Input: root = [7,3,15,null,null,9,20], calls: next(), hasNext(), next() Output: 3, TRUE, 7 Explanation: The iterator yields the smallest value (3), confirms more nodes exist, then properly yields the next in-order value (7).
codingmedium - 4
Alien Dictionary Order Derive the alien dictionary order from a sorted list of alien words. Input: words = ["z","x","z"] Output: "" (Empty String) Explanation: The letter 'z' cannot come before 'x' and then suddenly after 'x', creating a cycle and making the dictionary invalid.
codingmedium - 5
Encode and Decode Strings Encode a list of strings into a single string and decode it back. Input: strs = ["","hello",""] Output: ["","hello",""] Explanation: Prepends chunk lengths and a delimiter (e.g., "0#5#hello0#") to safely encode and perfectly restore empty strings.
codingmedium
Get started to unlock a personalized interview prep pack for this role.
Similar roles
- VP of Growth ContentXero · San Mateo, CA · Hybrid
- Senior Account ExecutiveXero · United States · Hybrid
- Gameplay EngineerGardens Interactive · Remote · Remote
Data EngineerHiggsfield AI · San Francisco, CA · Hybrid- Staff Nuclear EngineerRadiant Nuclear · El Segundo, CA · Onsite
Software System EngineerThe Exploration Company · Houston, TX · Hybrid
