Account
Resellers (white label)
If you have your own app and want to offer payments, WhatsApp and invoicing to your customers under your brand, you create each business from your server. Recaudo stays behind the scenes: your customers never sign up here.
Your reseller key
We issue it and it starts with rpk_live_. It only creates and looks up businesses; to charge, use each business's sk_live_ key, which we return when you create it. Keep both on your server, never in the app.
Create a business
external_id is your id for the business. If you repeat it we answer 409 with code external_id_conflict, so retries never create duplicates.
curl -X POST https://recaudo.app/api/v1/partner/tenants \
-H "Authorization: Bearer rpk_live_..." \
-H "Content-Type: application/json" \
-d '{"external_id": "biz_123", "business_name": "Taller Ejemplo", "owner_email": "dueno@ejemplo.com", "country": "MX", "webhook_url": "https://tu-servidor.com/recaudo", "webhook_events": ["payment.succeeded", "invoice.paid"]}'
{
"object": "partner_tenant",
"tenant_id": "6f1c\u2026",
"external_id": "biz_123",
"business_name": "Taller Ejemplo",
"country": "MX",
"currency": "MXN",
"timezone": "America/Mexico_City",
"status": "active",
"plan": "growth",
"api_key": "sk_live_\u2026",
"capabilities": {
"card": {
"available": true,
"ready": false,
"status": "pending"
},
"spei": {
"available": true,
"ready": false,
"status": "pending"
},
"cash": {
"available": true,
"ready": false,
"status": "pending"
},
"tap_to_pay": {
"available": true,
"ready": false,
"status": "pending"
},
"whatsapp": {
"available": true,
"ready": false,
"status": "pending"
},
"einvoice": {
"available": true,
"ready": false,
"status": "pending"
}
},
"webhook": {
"id": "0b7e\u2026",
"secret": "whsec_\u2026"
}
}
Parameters
external_idrequired. Your business id (max 100).business_namerequired. Trade name.owner_emailrequired. Owner email; lets them sign in to recaudo.app if they ever need to (via "forgot password").owner_name, owner_phoneoptional.country, currency, timezoneoptional. Defaults to MX and the country's currency and time zone.planoptional. Plan code; growth by default.webhook_url, webhook_eventsoptional. If sent, we create the business's webhook and return its secret once.
Note
Look up a business
Returns its details and capabilities, without the key.
https://recaudo.app/api/v1/partner/tenants/{external_id}
New key for a business
Issues a new sk_live_ and disables the ones we had given you for that business.
https://recaudo.app/api/v1/partner/tenants/{external_id}/api-keys
Capabilities
With the business key, GET /v1/capabilities tells what it can use today: card, spei, cash, tap_to_pay, whatsapp and einvoice. not_available means it does not exist in its country, pending means it still needs setup and active means it works. Use it to decide which buttons to show.
https://recaudo.app/api/v1/capabilities
Note
Setup only the business can do
Connecting Stripe, connecting WhatsApp with Meta and uploading tax details (CSD) must be done by the owner. With the business key you request a single-use link (valid for one hour), open it in your app's browser and when done we return to return_url with type, success (1 or 0) and, if something failed, message. return_url can be https or a scheme you registered with us (e.g. korima://).
curl -X POST https://recaudo.app/api/v1/onboarding-links \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"type": "whatsapp", "return_url": "korima://recaudo/onboarding"}'
{
"object": "onboarding_link",
"type": "whatsapp",
"url": "https://recaudo.app/admin/onboarding-link/\u2026",
"expires_at": "2026-11-07T13:00:00-06:00"
}
type stripe · whatsapp · fiscal