Exploring the Square API in JavaScript

Are you looking to integrate payment processing functionality into your application? Look no further than the Square API. This powerful tool allows developers to add payment processing capabilities to their websites and applications quickly and efficiently. In this article, we’ll examine the Square API in more detail and explore some sample code in JavaScript.

Getting Started with the Square API

Before we can start working with the Square API, we need to create a developer account and obtain an API key. Head over to the Square Developer website and follow the instructions for creating an account.

After you’ve created your account and logged in, you’ll be able to access the Square Dashboard. Here, you can create applications, generate API keys, and manage your account settings.

Making API Requests in JavaScript

Now that we have our Square API key, we can start making API requests in JavaScript. The Square API supports RESTful web services, making it easy to integrate with any programming language that can make HTTP requests.

To begin, we’ll need to create a function for making HTTP requests. In this example, we’ll be using the popular axios library to handle our HTTP requests.

First, let’s install axios using npm:

npm install axios

Now we can create a basic function for making our API requests:

const axios = require('axios');

async function makeSquareAPIRequest(method, endpoint, data = null) {
    const headers = {
        Authorization: `Bearer ${YOUR_ACCESS_TOKEN}`,
        'Content-Type': 'application/json',

    let url = `https://connect.squareup.com/v2/${endpoint}`;

    let response;

    try {
        switch (method) {
            case 'GET':
                response = await axios.get(url, { headers });
            case 'POST':
                response = await axios.post(url, data, { headers });
            case 'PUT':
                response = await axios.put(url, data, { headers });
            case 'DELETE':
                response = await axios.delete(url, { headers });
                throw new Error(`Invalid method: ${method}`);
    } catch (err) {

    return response.data;

This function takes in a method, endpoint, and data (if applicable) and returns the JSON response from the Square API.

Let’s explore a few examples of what we can accomplish with this function.

Retrieving a List of Locations

To retrieve a list of locations associated with our Square account, we can use the following code:

async function getLocations() {
    const locations = await makeSquareAPIRequest('GET', 'locations');

    return locations;

// Call the function to retrieve a list of locations
getLocations().then((response) => console.log(response));

Creating a Customer

To create a new customer, we can use the following code:

async function createCustomer(givenName, familyName, email, phoneNumber) {
    const data = {
        given_name: givenName,
        family_name: familyName,
        email_address: email,
        phone_number: phoneNumber,

    const customer = await makeSquareAPIRequest('POST', 'customers', data);

    return customer;

// Call the function to create a new customer
createCustomer('John', 'Doe', 'johndoe@example.com', '555-555-5555').then(
    (response) => console.log(response)

Charging a Customer

Finally, let’s explore how to charge a customer using the Square API:

async function createPayment(customerId, amount, sourceId, locationId) {
    const data = {
        idempotency_key: Date.now().toString(),
        amount_money: {
            amount: amount,
            currency: 'USD',
        source_id: sourceId,
        customer_id: customerId,
        location_id: locationId,

    const payment = await makeSquareAPIRequest('POST', 'transactions', data);

    return payment;

// Call the function to charge a customer
).then((response) => console.log(response));


In this article, we’ve explored the Square API and demonstrated how to make API requests using JavaScript. With the Square API, you can easily add powerful payment processing functionality to your website or application. Get started today and take your project to the next level!