Customers API

Customers

This object represents a customer of your business. Use it to track receipts that belong to the same customer.

POST https://api.smartbills.io/v1/customers

Request Body

Requires body of type CustomerCreateRequest CustomerCreateRequest

ParameterDescriptionTypeRequired
firstNameFirst name of the customerstringrequired
lastNameLast name of the customerstringrequired
localeLocale the customerstringrequired
emailEmail of the customerstringrequired if no phone
phonePhone of the customerstringrequired if no email
CustomerCreateRequest
{
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "taxExempt": true,
    "phone": "(555) 555-5555",
	"locale": "fr-CA",
	"acceptsMarketing": true,
}

Response

Returns a SBCustomer

SBCustomer
{
	"id": 1,
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "taxExempt": true,
    "phone": "(555) 555-5555",
	"locale": "fr-CA",
	"acceptsMarketing": true,
}

Code example

import { SBClient, SBCustomer, CustomerCreateRequest} from "@smartbills/sdk"
 
const client: SBClient = new SBClient();
const request: CustomerCreateRequest = {
"firstName": "John",
"lastName": "Doe",
"email": "[email protected]",
"taxExempt": true,
"phone": "(555) 555-5555",
"locale": "fr-CA",
"acceptsMarketing": true,
};
 
const customer: SBCustomer = await client.customer.create(request);

Retrieve customer

Retrieve a customer by ID. Requires scope customers.read

GET https://api.smartbills.io/v1/customers/:id

Path parameters

ParameterDescriptionTypeRequired
idID of the customer to retrievelongrequired

Response

Returns a SBCustomer

SBCustomer
{
	"id": 1,
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "taxExempt": true,
    "phone": "(555) 555-5555",
	"locale": "fr-CA",
	"acceptsMarketing": true,
}

Code example

import { SBClient, SBCustomer, CustomerCreateRequest} from "@smartbills/sdk"
 
const client:SBClient = new SBClient();
const customer: SBCustomer = await client.customer.getByIdAsync(1);

List customers

Retrieve a list of customers. Requires scope customers.read

GET https://api.smartbills.io/v1/customers?page=1&pageSize=100

Query parameters

Requires query parameters of type CustomerListRequest

ParameterDescriptionTypeRequiredDefault
pageCurrent pagelongrequired1
pageSizeNumber of records to returnlongrequired100
orderByOrder the results by a key of SBCustomerkeyof SBCustomercreatedAt
sortOrderOrder of the sortasc or descdesc
CustomerListRequest
{
    "page": 1,
    "pageSize": 100,
	"orderBy": "createdAt",
	"sortOrder": "desc",
}

Response

Returns a SBList<SBCustomer>

SBList<SBCustomer>
{
	"data": [{
		"id": 1,
		"firstName": "John",
		"lastName": "Doe",
		"email": "[email protected]",
		"taxExempt": true,
		"phone": "(555) 555-5555",
		"locale": "fr-CA",
		"acceptsMarketing": true,
	}],
	"metadata": {
		"page":1,
		"pageSize":100,
		"totalPages":1,
		"count":1,
	},
	
}

Code example

import { SBClient, SBCustomer, SBList, CustomerListRequest} from "@smartbills/sdk"
 
const client = new SBClient();
const request: CustomerListRequest = {
"page": 1,
"pageSize": 100,
"orderBy": "createdAt",
"sortOrder": "desc",
};
 
const customers: SBList<SBCustomer> = await client.customer.list(request);

Update a customer

Update information about a customer. Requires scope customers.write

PUT https://api.smartbills.io/v1/customers/:id

Path parameters

ParameterDescriptionTypeRequired
idID of the customer to updatelongrequired

Update body parameters

Requires a body of type CustomerUpdateRequest

ParameterDescriptionTypeRequired
firstNameFirst name of the customerstringrequired
lastNameLast name of the customerstringrequired
emailEmail of the customerstringrequired
phonePhone of the customerstringrequired
localeLocale the customerstringrequired
CustomerUpdateRequest
{
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "taxExempt": true,
    "phone": "(555) 555-5555",
	"locale": "fr-CA",
	"acceptsMarketing": true,
}

Update response

Returns a SBCustomer

SBCustomer
{
	"id": 1,
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "taxExempt": true,
    "phone": "(555) 555-5555",
	"locale": "fr-CA",
	"acceptsMarketing": true,
}

Update code example

 
import { SBClient, SBCustomer, CustomerUpdateRequest} from "@smartbills/sdk"
	
	const client:SBClient = new SBClient();
	const request: CustomerUpdateRequest = {
		"firstName": "John",
		"lastName": "Doe",
		"email": "[email protected]",
		"taxExempt": true,
		"phone": "(555) 555-5555",
		"locale": "fr-CA",
		"acceptsMarketing": true,
	}
	const customer:SBCustomer = await client.customers.updateAsync(1, request);
 

Delete a customer

Delete a customer. Requires scope customers:delete

DELETE https://api.smartbills.io/v1/customers/:id

Delete path parameters

ParameterDescriptionTypeRequired
idID of the customer to deletelongrequired

Delete response

Returns a SBCustomer

SBCustomer
{
	"id": 1,
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "taxExempt": true,
    "phone": "(555) 555-5555",
	"locale": "fr-CA",
	"acceptsMarketing": true,
}

Delete code example

 
import { SBClient, SBCustomer} from "@smartbills/sdk"
	
	const client:SBClient = new SBClient();
	const customer:SBCustomer = await client.customers.deleteAsync(1);
 

SBCustomer

This object represents a customer of your business.

AttributeDescriptionTypeRequired
idUnique identifierlongYes
firstNameFirst namestringNo
lastNameLast namestringNo
emailEmail addressstringYes
billingAddressBilling addressSBBillingAddressNo
shippingAddressShipping addressSBBillingAddressNo
phoneNumberPhone numberstringNo
tagsTags associated with the customerList<string>No
currencyCurrency usedstringNo
acceptsMarketingAccepts marketingboolNo
createdAtCreation dateDateTimeOffsetYes
updatedAtUpdate dateDateTimeOffset?No

Endpoints

Retrieve customer payment methods

GET /v{version}/customers/{customerId}/payment-methods

Query Parameters

ParameterDescriptionTypeRequired
customerIdCustomer IDlongYes
pageCurrent pageintNo
pageSizeNumber of records to returnintNo
versionAPI versionstringYes

Response

Returns a list of SBPaymentMethodResponse

Create a customer payment method

POST /v{version}/customers/{customerId}/payment-methods

Query Parameters

ParameterDescriptionTypeRequired
customerIdCustomer IDlongYes
versionAPI versionstringYes

Request Body

PaymentMethodCreateRequest

Response

Returns a SBPaymentMethodResponse

Retrieve a payment method by ID

GET /v{version}/customers/{customerId}/payment-methods/{id}

Query Parameters

ParameterDescriptionTypeRequired
customerIdCustomer IDlongYes
idPayment method IDlongYes
versionAPI versionstringYes

Response

Returns a SBPaymentMethodResponse

Update a payment method

PUT /v{version}/customers/{customerId}/payment-methods/{id}

Query Parameters

ParameterDescriptionTypeRequired
customerIdCustomer IDlongYes
idPayment method IDlongYes
versionAPI versionstringYes

Request Body

PaymentMethodUpdateRequest

Response

Returns a SBPaymentMethodResponse

Delete a payment method

DELETE /v{version}/customers/{customerId}/payment-methods/{id}

Query Parameters

ParameterDescriptionTypeRequired
customerIdCustomer IDlongYes
idPayment method IDlongYes
versionAPI versionstringYes

Response

Returns a SBPaymentMethodResponse

Create multiple payment methods for a customer

POST /v{version}/customers/{customerId}/payment-methods/batch

Query Parameters

ParameterDescriptionTypeRequired
customerIdCustomer IDlongYes
versionAPI versionstringYes

Request Body

List of PaymentMethodCreateRequest

Response

Returns a list of SBPaymentMethodResponse

Update multiple payment methods for a customer

PUT /v{version}/customers/{customerId}/payment-methods/batch

Query Parameters

ParameterDescriptionTypeRequired
customerIdCustomer IDlongYes
versionAPI versionstringYes

Request Body

List of PaymentMethodUpdateRequest

Response

Returns a list of SBPaymentMethodResponse

Retrieve a list of customers

GET /v{version}/customers

Query Parameters

ParameterDescriptionTypeRequired
EmailCustomer email addressstringNo
pageCurrent pageintNo
pageSizeNumber of records to returnintNo
versionAPI versionstringYes

Response

Returns a list of SBCustomerResponse

Create a customer

POST /v{version}/customers

Query Parameters

ParameterDescriptionTypeRequired
versionAPI versionstringYes

Request Body

CustomerCreateRequest

Response

Returns a SBCustomerResponse

Retrieve a customer by ID

GET /v{version}/customers/{id}

Query Parameters

ParameterDescriptionTypeRequired
idCustomer IDlongYes
versionAPI versionstringYes

Response

Returns a SBCustomerResponse

Update a customer

PUT /v{version}/customers/{id}

Query Parameters

ParameterDescriptionTypeRequired
idCustomer IDlongYes
versionAPI versionstringYes

Request Body

CustomerUpdateRequest

Response

Returns a SBCustomerResponse

Delete a customer

DELETE /v{version}/customers/{id}

Query Parameters

ParameterDescriptionTypeRequired
idCustomer IDlongYes
versionAPI versionstringYes

Response

Returns a SBCustomerResponse

Create multiple customers

POST /v{version}/customers/batch

Query Parameters

ParameterDescriptionTypeRequired
versionAPI versionstringYes

Request Body

List of CustomerCreateRequest

Response

Returns a list of SBCustomerResponse

Update multiple customers

PUT /v{version}/customers/batch

Query Parameters

ParameterDescriptionTypeRequired
versionAPI versionstringYes

Request Body

List of CustomerBatchUpdateRequest

Response

Returns a list of SBCustomerResponse