Senior Payments Developer

The Role

Our work is driven by helping viagogo become the world's largest ticket marketplace, and to do that in truly global company - 24/7 uptime required. Customers are using different payment types all around the world - 41 payment types and 98 currencies (with more being added). We develop and support internal/external API integrations for our customers, internal services & tools accept and disburse payments, as well as fraud and compliance checks. For a global ecommerce company that both accepts and disburses payments, scaling these processes to capture all markets while not putting our existing infrastructure at risk, is one of the most critical activities for our engineering team.

As a senior developer, you'll be expected to work in every stage – from understanding the new business challenges to implementing and maintaining new third-party (or internal) APIs. Some sample projects that you might work on in the next few months include:

  • Develop efficient, performant ecosystems of APIs, services and processes to do payments, fraud checks on payments, listings, or customers created/updated everyday
  • Develop new UI tools for internal fraud/compliance checks
  • Adding new payment methods for buyers and sellers
  • Changing the decision tree models on fraud detection and payment systems to ML
  • Automate anything repetitive in our processes

The Tech

viagogo predominantly utilizes Microsoft technologies, such as Windows, .NET, C# and IIS, however we’re not afraid to use the right tool for the job. We use RabbitMQ for some of our internal pub/sub messaging, Redis for local caching and gRPC for high performance out of process calls.

Our public facing website is built using ASP.NET MVC 5.2 and is deployed to multiple Windows Servers that are fronted by an F5 load balancer. We have heavily customized MVC to suit our requirements and handles roughly 250 HTTP requests per second per server when mostly idle.

Payments and fraud team has three main services: integrations, payment & fraud checks with 3rd parties, and internal fraud checks for buyer and seller data. We operate on a global scale with our services being called 750k times on average every day.

We also have WebAPIs that are  consumed by 3rd parties to give fraud check results, payment updates, customer updates, or TC40 information about payments.

Our backend is a set of SQL Server databases deployed in a high-availability configuration using availability groups.  These databases support everything from high-volume transactions to decision support/telemetry analytics.

We're increasingly taking advantage of the Azure cloud to enable hybrid or cloud-only scenarios that support our global growth and ability to quickly respond to surges in demand.

About You

Success in this role requires passion for technology and for using tech to solve business challenges.  We expect that you've already demonstrated your ability to solve difficult problems multiple times already, and that you have consistently been drawn to larger projects with increasing amounts of risk/load/complexity (or similar dimensions). 

We would like to see team members who are creative with excellent problem solving, scalability skills while maintaining a good sense of process control and automation.

Creativity / Problem Solving: the ability to find creative, quick and robust solutions to difficult problems or new third party integrations

Scalability: the ability to develop and deploy efficient changes that will remain performant under traffic

Process Control and Automation: We should always find a way to automate anything repetitive in the payments and fraud eco system.

You'll also likely be a specialist in one or more areas. Working alongside individuals who have extreme depth in areas like WebAPI, SQL Server performance, performant C# code, etc, we'll expect you to bring an additional dimension to our team that you can leverage not only by building exceptional solutions, but also by sharing your knowledge to build a better engineering team.

Apply for this Job

* Required