POST /v1/subclients with the merchant's legal, tax, and beneficial ownership information. The Subclient is created immediately in processing status while the screening runs asynchronously in the background.// POST /v1/subclients
// Headers: Authorization: Bearer sk_live_... | client_id: cli_xxx123
{
"legal_name": "Merchant Co. S.A. de C.V.",
"short_name": "MerchantCo",
"id_type": "rfc",
"id_number": "MER900101ABC",
"email": "contacto@merchantco.mx",
"phone": "+525512345678",
"website": "https://www.merchantco.mx",
"industry": "internet_marketplace",
"date_of_incorporation": "2015-03-20",
"country_of_incorporation": "mex",
"address": {
"street": "Av. Insurgentes Sur 1234",
"city": "Ciudad de Mexico",
"state": "CDMX",
"postal_code": "03100",
"country": "mex"
},
"ubos": [
{
"first_name": "Juan",
"last_name": "Perez",
"id_type": "rfc",
"id_number": "PELJ800101ABC",
"nationalities": ["mex","col"],
"date_of_birth": "1975-08-08"
}
],
"legal_representatives": [
{
"first_name": "María",
"last_name": "García Torres",
"id_type": "rfc",
"id_number": "GATM850101XYZ",
"nationalities": ["mex","col"],
"date_of_birth": "1985-10-28"
}
]
}processing status. Store the id — you will need it in Step 2.{
"id": "sc_4xKmN8pQrLvW2T",
"object": "subclient",
"status": {
"state": "processing"
},
"legal_name": "Merchant Co. S.A. de C.V.",
"short_name": "MerchantCo",
...
}POST /v1/subscriptions to receive the result without polling:| Event | Meaning |
|---|---|
subclient.approved | Screening passed — you can proceed to Step 2 |
subclient.rejected | Screening failed — a new Subclient must be created |
subclient.failed | Screening encountered an error — a new Subclient must be created |
// POST /v1/subscriptions
{
"events": ["subclient.processing", "subclient.approved", "subclient.rejected", "subclient.failed"],
"description": "Named Accounts screening notifications",
"url": "https://your-domain.com/webhooks/cobre",
"event_signature_key": "your_secret_key"
}GET /v1/subclients/{id} until status.state is no longer processing.⚠️ Do not proceed to Step 2 until the Subclient is in approvedstatus. Attempting to create an account with aprocessingorrejectedSubclient will return an error.
approved, create a Cobre Balance account and link it to the Subclient by passing the subclient field in the request body. This is the only change to the standard POST /v1/accounts request.// POST /v1/accounts
// Headers: Authorization: Bearer sk_live_...
{
"action": "create",
"alias": "MerchantCo Principal",
"provider_id": "pr_mex_cobre3",
"subclient": "sc_4xKmN8pQrLvW2T"
}{
"id": "acc_9TuVwXyZaBcDeF",
"object": "account",
"status": {
"state": "processing"
},
"subclient_id": "sc_4xKmN8pQrLvW2T",
"alias": "MerchantCo Principal",
"provider_id": "pr_mex_cobre3",
"account_number": "703123456789012345",
"created_at": "2026-06-01T11:00:00Z",
"updated_at": "2026-06-01T11:00:00Z"
}acc_ ID of the Named Account as the source or destination in your existing calls.spei_credit transactions, with the merchant's name surfaced to the sender.| Step | Action | Endpoint |
|---|---|---|
| 1a | Register the merchant as a Subclient | POST /v1/subclients |
| 1b | Track the screening result | subclient.approved webhook or GET /v1/subclients/{id} |
| 2a | Create a Named Account linked to the approved Subclient | POST /v1/accounts with subclient field |
| 2b | Wait for the CLABE to be assigned | account.connected webhook or GET /v1/accounts/{id} |
| 3 | Operate normally — pay-ins, pay-outs, Virtual CLABEs, R2P SPEI | Existing endpoints, no changes needed |