- OAuth API
- Obtain Token endpoint: Removed the
scopes
property from the request body.
- Obtain Token endpoint: Removed the
- Customer Segments API (beta).
limit
field removed from ListCustomerSegments endpoint.
Note: This release fixes a bug introduced on the April 22, 2020 release of the Square API.
-
Terminal API. The new Terminal API lets a custom third-party POS app integrate with the Square Terminal to send terminal checkout requests to collect payments.
- For an overview, see Overview.
- For technical reference, see Terminal API.
-
Devices API. The new Devices API lets a custom third-party POS app generate a code used to sign in to a Square Terminal to create a pairing that lets the POS app send terminal checkout requests. For technical reference, see Devices API.
-
Customer Groups API (beta). The new Customer Groups API (Beta) enables full CRUD management of customer groups, including the ability to list, retrieve, create, update, and delete customer groups. Previously, this functionality was only available through the Square dashboard and point-of-sale product interfaces.
- For an overview, see Overview
- For technical reference, see Customer Groups.
-
Customer Segments API (beta). The new Customer Segments API (Beta) lets you list and retrieve customer segment (also called smart groups) information. Coupled with the new
segment_ids
field on the customer resource, this API lets you better understand and track the customer segments to which a customer belongs.- For an overview, see Overview
- For technical reference, see Customer Segments.
-
New webhooks. v2 Webhooks (beta) now supports webhooks for the following APIs:
- Orders API.
order.created
,order.updated
, andorder.fulfillment.updated
- Terminal API.
terminal.checkout.created
andterminal.checkout.updated
- Devices API.
device.code.paired
For more information, see Subscribe to Events.
- Orders API.
-
Customers API
- AddGroupToCustomer endpoint. Added to add customer memberships to a customer group.
- RemoveGroupFromCustomer endpoint. Added to remove customer memberships from a customer group.
- Customer object. Updated as follows:
group_ids
field. Added to designate groups the customer is in.segment_ids
field. Added to designate segments the customer is in.groups
field. Deprecated to be replaced bygroup_ids
andsegment_ids
. It remains supported for one year from this release.
- CustomerQuery object's
filter
parameter. Updated as follows:group_ids
filter. Added to search for customers based on whether they belong to any, all, or none of the specified groups.
-
Orders API
- OrderFulfillmentPickupDetails type updated to support curbside pickup:
is_curbside_pickup
. This Boolean field indicates curbside pickup.CurbsidePickupDetails
. This type provides supporting information for curbside pickup, including a buyer description (for example, "buyer is in a red car") and a timestamp when the buyer arrived for the pickup.
- OrderFulfillmentPickupDetails type updated to support curbside pickup:
-
OAuth API
- RevokeToken endpoint. Added a new field called revoke_only_access_token. This field allows a client to revoke an access token but leave the parent authorization active.
- ObtainToken endpoint. Added a new field called scopes. This field lets a client change the set of permissions for an access token when making a request to refresh the token.
-
Catalog API
- CatalogQuickAmountsSettings type. Added to support predefined custom payment amounts in the Square Register checkout dialog box.
- ENUM
CatalogItemProductType
. The ENUM valueGIFT_CARD
is now deprecated.
-
Payments API. See Take Payments and Collect Fees for updated information about permission requirements, Square reporting of the application fee collected by an app, and how to collect fees internationally.
- Payments API. In support of the existing Delayed capture for payments, the following fields are added to the Payment type:
delay_duration
. In a CreatePayment request, you can setautocomplete
to false to get payment approval but not charge the payment source. You can now add this field to specify a time period to complete (or cancel) the payment. For more information, see Delay capture.delay_action
. Defines the action that Square takes on the payment when thedelay_duration
elapses. In this release, the API supports only the cancel payment action.delayed_until
. Provides the date and time on Square servers when Square appliesdelay_action
on the payment.
-
GA release: All SDKs have been updated to support the new Bank Accounts and CashDrawerShifts APIs.
-
Beta release: All SDKs have been updated to support the new Disputes API.
All SDKs have been updated to support the following changes:
-
Catalog API
- Batch upsert catalog objects endpoint — The
batches
field is now required and the array must have at least one element. - CatalogModifier — Two fields added:
ordinal
to support custom ordering in a modifier listmodifier_list_id
to reference the parent modifier list
- CatalogModifierList — New field added:
ordinal
to support custom ordering in a list of CatalogModifierList objects.
- Batch upsert catalog objects endpoint — The
-
Customers API changes
- SearchCustomers endpoint —
limit
size reduced from 1000 to 100 to improve the endpoint performance.
- SearchCustomers endpoint —
-
Orders API changes
- CreateOrderRequest — Previously these request fields were deprecated:
line_items
,taxes
,discounts
. These fields are no longer available. Instead you now use theOrder
object in the request. For example,Order.line_items
,Order.taxes
, andOrder.discounts
. - OrderLineItem type — There are two changes:
- The
taxes
field that was previously deprecated is no longer available. Instead, you now use theOrderLineItem.applied_taxes
field. This also now requires that you set theOrderLineItemTax.scope
field. - The
discounts
field that was previously deprecated is no longer available. Instead, you now use theOrderLineItem.applied_discounts
field. This also now requires that you set theOrderLineItemDiscount.scope
field.
- The
- CreateOrderRequest — Previously these request fields were deprecated:
-
Shared object updates
- Card object — New fields added:
card_type
,prepaid_type
. Currently, only the Payments API responses populate these fields.
- Card object — New fields added:
Documentation Changes
- Minor updates for Payments API descriptions
- Deprecation & retirement dates added for Transactions API endpoints
-
New field: The Employee object now has an
is_owner
field. -
New field: The Card enumeration has a new
SQUARE_CAPITAL_CARD
enum value to support a Square one-time Installments payment. -
New request body field constraint: The Refund Payment request now required a non-empty string when the
payment_id
is supplied.
!!!important Square is excited to announce the public release of customized SDKs for Java and .NET. For more information, see Square SDKs. !!!
-
GA release: SDKs updated to support new
receipt_url
andreceipt_number
fields added to the Payment type. -
Beta release: SDKs updated to support the new CashDrawerShifts API.
-
Square now follows the semantic versioning scheme that uses three numbers to delineate MAJOR, MINOR, and PATCH versions of our SDK. In addition, the SDK version also includes the API version so you know what Square API version the SDK is related to. For more information, see Versioning and SDKs.
!!!important Square has begun the retirement process for Connect v1 APIs. See the Connect v1 Retirement information page for details. !!!
- GA releases: SDKs now support the new
modify_tax_basis
field to Discounts and v2 Sandbox - BETA releases: SDKs now support the Shifts API webhooks for Labor shift created, updated, deleted, CreateLocation endpoint, and the ability to customize statement description in Payments API.
- Deprecated: Support for v1Items API and v1Locations API is fully deprecated.
- GA release: Merchants.ListMerchant is GA for all SDKs.
- Beta release: All SDKs support new Locations API endpoint, CreateLocation.
- Beta release: All SDKs support exclusion strategies for pricing rules.
-
GA release: All SDKs have been updated to support the new Merchants API.
-
Beta release: All SDKs have been updated to support the new endpoints (RetrieveLocation, UpdateLocation) added to the Locations API.
-
Beta release: All SDKs have been updated to support the new field (
mcc
) added to theLocation
type. -
GA release: All SDKs have been updated to support the new field (
bin
) added to theCard
type. -
GA release: All SDKs have been updated to support the new
CardPaymentDetails
fields (verification_results
,statement_description
, andverification_method
). -
GA release: All SDKs have been updated to support the new
Payment
field, (employee_id
).
- Bug fix: Fixed path parameters for
UpdateOrder
- Bug fix: Removed a currentlyunsupported API object type
- New functionality: All SDKs have been updated to support the Sandbox v2 BETA release
- Deprecated functionality: All Transactions API functionality is deprecated in favor of Payments API and Refunds API functionality.
- New functionality: All SDKs have been updated to support the Payments API GA.
- New functionality: All SDKs have been updated to support the Refunds API GA.
- New functionality: All SDKs have been updated to support Orders API updates:
- Pickup Fulfillments, SearchOrders, and ServiceCharges move from BETA to GA.
- New BETA endpoint: Orders.UpdateOrder — use the UpdateOrder endpoint to update existing orders.
- New BETA functionality: Create shipment-type fulfillments.
- New functionality: Locations.RetrieveLocation — use the RetrieveLocation endpoint to load details for a specific Location.
- BETA releases:
- Catalog API: supports item options with datatypes and enums for item options and item option values.
- Retired functionality — The
CatalogItem.image_url
field (deprecated underSquare-Version
YYYYMMDD) is retired and no longer included in Connect SDKs.
- Bug fix:
Transaction.Charge
andCustomers.CreateCustomerCard
request objects — now include theverification_token
required for Strong Customer Authentication.
- BETA releases:
- Orders API: supports service charges with a new field and datatype.
- Catalog API: supports measurement unites for item variation quantities with a new field and datatype.
- New functionality:
Order
entities — now include asource
field that contains details on where the order originated. - Improved functionality: ListLocations — Expanded business information available through the Locations API, including business hours, contact email, social media handles, and longitude/latitude for physical locations.
- Beta functionality: Orders API — support for fractional quantities, expanded metadata, and embedded information on payments, refunds, and returns.
- Beta functionality: Inventory API — support for fractional quantities.
- New functionality:
Locations.business_hours
— read-only field with information about the business hours at a particular location.
- New functionality: Employees API (Connect v2) — New fields to capture contact information for employee profiles.
- New functionality:
V1Tender.CardBrand
— New V1 enum to represent brand information for credit cars.
- The Connect v2 Orders object now includes an OrderSource field (
source
) that encapsulates the origination details of an order.
- The following Connect v1 data types now include a
v2_id
field that makes it easier to link information from Connect v1 endpoints to related Connect v2 Catalog objects:- V1Discount
- V1Fee
- V1Item
- V1ModifierList
- V1ModifierOption
- V1Variation
- Add
image_id
toCatalogObject
- Deprecated
image_url
field inCatalogItem
in favor of a richerCatalogImage
data type. - Image information is now set, and returned, at the
CatalogObject
level.
- Change
timecard_id
as path parameter forListTimecardEvents
endpoint - Change
ended_at
to string type forV1CashDrawerShift
type
The Labor API now includes functionality that gives a Square account the ability to track and retrieve employee labor hours including multiple hourly wage rates per employee, work shift break tracking, and standardized break templates.
See the Connect v2 Technical Reference.
The Employees API includes the ability to list employees for a Square account and retrieve a single employee by ID.
See the Connect v2 Technical Reference.
The RenewToken endpoint is now deprecated and replaced with new functionality in ObtainToken. ObtainToken now returns a refresh token along with an access token. Refresh tokens are used to renew expired OAuth access tokens.
The Orders API now includes beta functionality that supports in-person fulfillment through Square Point of Sale for orders placed online.
The CreateOrderRequest
datatype now groups order details under a single
object.
The CreateOrderResponse
datatype now retains structure of order-level
price adjustments in addition to converting them to scoped, line-item price
adjustments. Previously, CreateOrderResponse
did not preserve the original
order-level price-adjustment objects.
Requests to the ListCustomers endpoint now returns all available customer profiles. Previously, ListCustomers only returned customer profiles explicitly created through the Customers API or Square Point of Sale.
Requests to the CreateCustomer endpoint now include a idempotency_key
field to
ensure idempotent creation of new profiles.
The Connect SDK now supports refund adjustments for the Connect v1
Refunds API with the addition of multiple new fields in the Refund
data type
The Connect SDK now supports partial payment functionality for the Connect v1 Transactions API with the addition of a new Payment
field:
Payment.is_partial
— Indicates whether or not the payment is only partially paid for. Iftrue
, the payment will have the tenders collected so far, but the itemizations will be empty until the payment is completed.
Tender
also includes 2 new fields to help resolve timing around payments with multiple tenders. Invoices that involve partial payment (e.g., requiring a deposit) may include tenders settled well before the entire payment is completed:
Tender.tendered_at
— The time when the tender was accepted by the merchant.Tender.settled_at
— The time when the tender was captured, in ISO 8601 format. Typically the same as (or within moments of)tendered_at
unless the tender was part of a delay capture transaction.
The change also makes some behavioral changes to the Connect v1 Payment endpoints:
- Create Refunds rejects requests for invoices that have partial payments pending.
- List Payments takes a new request field,
include_partial
to indicate whether partial payments should be included in the response.
We have added Connect v2 Inventory API and birthdays in Customer
entities.
The Connect v2 Inventory API replaces the Connect v1 Inventory API and introduces new functionality:
- Moving item variations quantities through predefined states
(e.g., from
IN_STOCK
toWASTE
). - Viewing the inventory adjustment history for an item variation.
- Batch inventory adjustments and information retrieval.
- Customer profiles now include a
birthday
field. Dates are recorded in RFC-3339 format and can be set through theCreateCustomer
andUpdateCustomer
endpoints.
The Connect SDK now includes functionality for the OAuth API. The Square OAuth API lets applications request and obtain permission from a Square account to make API calls on behalf of that account. Applications can request individual permissions so that users do not need to grant full access to their Square accounts.
-
ObtainToken
endpoint — Exchanges the authorization code for an access token. After a merchant authorizes your application with the permissions form, an authorization code is sent to the application's redirect URL (See Implementing OAuth for information about how to set up the redirect URL). -
RenewToken
endpoint — Renews an OAuth access token before it expires. OAuth access tokens besides your application's personal access token expire after 30 days. You can also renew expired tokens within 15 days of their expiration. You cannot renew an access token that has been expired for more than 15 days. Instead, the associated merchant must complete the OAuth flow from the beginning. Important: TheAuthorization
header you provide to this endpoint must have the following format:Authorization: Client APPLICATION_SECRET
ReplaceAPPLICATION_SECRET
with your application's secret, available from the application dashboard. -
RevokeToken
endpoint — Revokes an access token generated with the OAuth flow. If a merchant has more than one access token for your application, this endpoint revokes all of them, regardless of which token you specify. If you revoke a merchant's access token, all of the merchant's active subscriptions associated with your application are canceled immediately. Important: TheAuthorization
header you provide to this endpoint must have the following format:Authorization: Client APPLICATION_SECRET
ReplaceAPPLICATION_SECRET
with your application's secret, available from the application dashboard.
We have added MobileAuthorization API.
CreateMobileAuthorizationCode
endpoint — Generate a mobile authorization code for an instance of your application. Mobile authorization credentials permit an instance of your application to accept payments for a given location using the Square Reader SDK. Mobile authorization codes are one-time-use and expire shortly after being issued.
We introduce Square API versions. Square-Version
is 2018-07-12 for this SDK.
Square API versions (Square-Version
) track changes in the evolution of Connect
v2 APIs. The Square-Version
naming scheme is YYYY-MM-DD
, which indicates
the date the version was released. Connect v1 APIs are not versioned. Square
continues to support Connect v1, but future releases will focus on improving
Connect v2 functionality.
By default, new Square applications are pinned to the version current at the
time the application was created in the Square Application Dashboard. Pinning an
application sets the default Square-Version
for the application. The default
Square-Version
of an application can be reviewed and updated at any time on
the settings pages for the application.
When a new Square-Version
is released, new Connect SDKs are publish on GitHub
and various package management systems. SDK updates follow the version
convention of the associated language and manager but include the related
Square-Version
in the SDK version. For example, Connect SDKs tied to version
2018-01-04
might look like {SDK_VERSION}.20180104.{VERSION_INCREMENT}
.
While SDK versions can be mapped to a related Square-version, SDK versions
follow an independent, incremental versioning scheme to allow updates and
improvements to the SDKs outside of Square-Version
updates.
In most cases, Square-version migration should be straightforward, with known differences listed in the related Change Log.
To test migrations, developers can override the default Square-Version
of an
application by explicitly setting the preferred Square-Version
in the HTTP
header of the Connect v2 API request for REST calls. Requesting an API version
that does not exist returns an error. Successful API responses include the
Square-Version
header to indicate the API version used to process request.
Connect SDK versions are locked to specific API versions and cannot be overwritten. Instead, the SDK must be upgraded to work with new API versions.
We have added search functionality to the Connect v2 Customer API.
SearchCustomers
endpoint — retrieves groups of customer profiles based on a related characteristic. For example, retrieving all customers created in the past 24 hours.creation_source
field is now available onCustomer
entities. The creation source exposes the process that created a customer profile. For example, if a customer is created using the API, the creation source will beTHIRD_PARTY
.- Instant Profiles are now exposed in the following endpoints:
RetrieveCustomer
,SearchCustomers
,UpdateCustomer
,DeleteCustomer
.
- Fix SDK request property
adjustment_type
in V1 Adjust Inventory.
We have added sorting functionality to the Connect v2 Customer API, updated the Connect v1 Payments API to include information about surcharges and improvements to the Item data type.
- ListCustomers endpoint — now provides the ability to sort
customers by their creation date using the
sort_field
andsort_order
parameters.
The Payments API now returns information about surcharges applied to payments. The new functionality introduces the following new data types:
- SurchargeMoney datatype — The total of all surcharges applied to the payment.
- Surcharges datatype — A list of all surcharges associated with the payment.
- Surcharge datatype — A surcharge that is applied to the payment. One example of a surcharge is auto-gratuity, which is a fixed-rate surcharge applied to every payment, often based on party size.
We are constantly evaluating new languages to add. In the meantime, if the language you need is not supported, you can use our [Swagger pipeline](<%= articles__client_libraries_path%>#generatingwithswagger) to generate a custom SDK or continue sending JSON to the endpoint URLs directly.
Item will now provide two new properties:
category_id
— indicates if an item can be added to pickup orders from the merchant's online storeavailable_for_pickup
— indicates the item's category (if any).
The Transactions API in Connect v2 now includes payment and refund information from exchanges.
ListTransactions
now includes payment information from sales and exchanges and refund information from returns and exchanges.ListRefunds
now includes refunds that result from exchanges in addition to partial refunds and itemized returns through Square's Point of Sale applications.
The Payments API in Connect v1 now includes payment and refund information from exchanges.
ListPayments
now includes refunds that are generated from exchanges to account for the value of returned goods.ListRefunds
now returns an approximate number of refunds (default: 100, max: 200). The response may contain more results than the prescribed limit when refunds are made simultaneously to multiple tenders in a payment or when refunds are generated from exchanges to account for the value of returned goods.is_exchange
is added toV1Refund
andV1Tender
. Refunds and tenders marked in this way represent the value of returned goods in an exchange, rather than actual money movement.
- Updates user-agent header
BatchRetrieveOrders
will now return uncharged orders.
- For Catalog-backed line items, setting
CreateOrderRequestLineItem.base_price_money
will now override the catalog item variation's price. CreateOrderRequestModifier
s may now be created ad hoc using the newname
andbase_price_money
fields.
OTHER
enum value is added toType
onV1SettlementEntry
- Initial release