Annual Business Data Confirmation for Subaccounts
What is it?
The Annual Business Data Confirmation is a mandatory process in which a subaccount’s registration data must be confirmed or updated annually. This procedure ensures that Asaas’ database remains up to date in accordance with regulatory requirements.
Why do I need to confirm the subaccount’s business data?
This is a requirement from the Central Bank of Brazil (Bacen). As a regulated Payment Institution, Asaas must ensure that the registration data for all accounts, including subaccounts, is always accurate and up to date. Failure to complete this confirmation may result in API usage restrictions for the affected subaccount.
How will it work?
The process can be managed through Webhook notifications and requires an action from your integration to update the account’s data when necessary. In addition, information on the expiration of business data is already returned in some account management routes.
Subaccounts created before the implementation date of this change (06/12/2025) and that had an expiration scheduled for 2025 will have their business data expiration date automatically set by Asaas to the last week of November 2025.
Subaccounts created after the implementation date of this feature will follow the standard annual expiration cycle (one year after creation/last update).
This approach aims to avoid the immediate need for a massive update of your existing subaccount base, allowing for a gradual adaptation to the new requirement.
Proactive verification
When creating a subaccount, retrieving the business data of an account, or updating the business data, the API response already includes the commercialInfoExpiration
object. This object contains the following fields:
isExpired
(boolean): Indicates whether the business data is expired.scheduledDate
(string): Indicates the scheduled date for business data expiration (e.g.,"2025-05-05 00:00:00"
).
You can use this information to schedule updates in advance, even before the expiration warning webhook is sent.
Note on Rate Limits:
Remember that the update is annual. Excessive proactive checks of this field may impact your API request quota (rate limit). Prioritize using webhooks, and if performing proactive checks, do so infrequently, bearing in mind that the expiration date only changes annually or after an update.
Webhooks
The following events have been added to the ACCOUNT_STATUS
scope:
ACCOUNT_STATUS_COMMERCIAL_INFO_EXPIRING_SOON
– Indicates that the account’s business data is nearing expiration and needs to be confirmed/updated.ACCOUNT_STATUS_COMMERCIAL_INFO_EXPIRED
– Indicates that the account’s business data has expired and has not been confirmed. API actions for this account will be restricted.
Advance Notification
Even though this data is available via the API, 40 days before the scheduledDate
deadline for confirming the data, a ACCOUNT_STATUS_COMMERCIAL_INFO_EXPIRING_SOON
webhook event will be sent to the configured URL, indicating that the business data is about to expire and needs to be confirmed or updated.
Expiration and Blocking Notification
If the business data is not confirmed by the scheduledDate
, a new webhook event ACCOUNT_STATUS_COMMERCIAL_INFO_EXPIRED
will be sent.
Important:
When attempting to call any API endpoint that is blocked due to expired business data (i.e., any endpoint other than those listed below as accessible), your integration will receive an HTTP 403 Forbidden status code.
The error response body will include a message indicating that the action cannot be completed due to pending confirmation/update of the business data and the need to regularize it to restore access.
To allow the pending update, the following endpoints will remain accessible for the account even during the blocking period:
POST
/v3/myAccount/commercialInfo/
(to update the data)
GET/v3/myAccount/commercialInfo/
(to retrieve the current data)
After the business data is updated, access to all other API features will be restored, isExpired
will return to false
, and a new scheduledDate
will be set.
Webhook Event Examples
Business Data Expiring Soon:
{
"id": "evt_05b708f961d739ea7eba7e4db318f621&368604920",
"event": "ACCOUNT_STATUS_COMMERCIAL_INFO_EXPIRING_SOON",
"dateCreated": "2024-05-10 16:45:03",
"accountStatus": {
"id": "175027c1-029c-41e5-8b9a-e289b9788c33",
"commercialInfo": "APPROVED",
"bankAccountInfo": "APPROVED",
"documentation": "APPROVED",
"general": "APPROVED"
},
"additionalInfo": {
"scheduledDate": "2025-06-20"
}
}
Business Data Expired:
{
"id": "evt_05b708f961d739ea7eba7e4db318f621&368604920",
"event": "ACCOUNT_STATUS_COMMERCIAL_INFO_EXPIRED",
"dateCreated": "2024-05-10 02:00:00",
"accountStatus": {
"id": "175027c1-029c-41e5-8b9a-e289b9788c33",
"commercialInfo": "APPROVED",
"bankAccountInfo": "APPROVED",
"documentation": "APPROVED",
"general": "APPROVED"
},
"additionalInfo": {
"scheduledDate": "2025-05-10"
}
}
Important:
Even when the
ACCOUNT_STATUS_COMMERCIAL_INFO_EXPIRED
event is triggered, thecommercialInfo
andgeneral
fields inside theaccountStatus
object (as shown above) may still have the valueAPPROVED
.
This happens because the expiration of business data for annual confirmation purposes is a specific compliance process and does not necessarily indicate a rejection of the account’s general commercial registration or overall approval status (which may be managed by separate review flows and remain valid). The API functionality block is an operational measure to ensure data is updated.
The indication that the business data truly needs to be updated will be the ACCOUNT_STATUS_COMMERCIAL_INFO_EXPIRED
event itself and, in subsequent API calls to retrieve account data, the isExpired
field (within the commercialInfoExpiration
object) will be set to true
.
Best Practices
As a best practice, we recommend that your platform retrieve the updated business data or confirm the validity of the existing data in Asaas directly with the subaccount holder. Once you have that confirmation, your integration should submit the data to Asaas.
- To retrieve the business data and present it to the subaccount holder, use the endpoint:
GET
/v3/myAccount/commercialInfo/
See the full reference for this endpoint.
- To confirm or update the subaccount’s business data, use the endpoint:
POST
/v3/myAccount/commercialInfo/
See the full reference for this endpoint.
Important:
Remember that this endpoint must be called in the context of the subaccount, i.e., using the specific subaccount’s
access_token
.
Note:
Upon a successful update, a new
scheduledDate
will be defined in thecommercialInfoExpiration
object (returned in the response and in future queries) for one year ahead, and the API access for that subaccount will remain normal.
Updated about 8 hours ago