How to check if an account is enabled to take payments?

Hi, we sometimes receive this error:

[{'code': 'BAD_REQUEST', 'detail': 'This account has not been enabled to take payments', 'category': 'INVALID_REQUEST_ERROR'}]

I would like to verify that the merchants we’re onboarding are ready to take payment with Square Terminals. I can’t find an appropriate attribute that will indicate that they are ready to take payments.

Is there such an attribute, or should we for e.g. check if bank account is configured?

:wave: I’m Square Dev AI, here to help answer your question!
Based on the information you’ve provided, the following documentation will help answer your question:

Additional Documentation

Troubleshoot the Payments API
Payments Requirements
Merchant APIs

If this documentation helped you find a solution, please check the box indicating that this reply solves the problem.
Otherwise one of our Developer Advocates will provide additional assistance shortly.

With the Locations API you can check the capabilities to see if CREDIT_CARD_PROCESSING is available for the seller your onboarding. If CREDIT_CARD_PROCESSING isn’t in the capabilities then they’ll need to enable it in the Square Dashboard. :slightly_smiling_face:

1 Like

This might help – you need request the specific permissions, ‘called scopes’, that your user requires when you initially construct the ‘login authorization’ link that you send to the client. This is the link that the client clicks on to take them back to the Square-hosted UI. The Leedz is a system that allows users to buy and sell – i.e. receive payments – so this is the login link with scopes:

authorize_url = (
sq_url + ‘/oauth2/authorize’
‘?client_id=’ + app_ID +
‘&scope=’ + “ORDERS_READ ORDERS_WRITE PAYMENTS_WRITE PAYMENTS_READ PAYMENTS_WRITE_ADDITIONAL_RECIPIENTS MERCHANT_PROFILE_READ” +
‘&session=’ + “false” +
‘&state=’ + state
)

Note the MERCHANT_PROFILE_READ – you will need this later to use the locations API to query about LocationID - and maybe other queries.