PaymentsCards & Services

White-label

Guidance for embedding Cobru in your own product experience with minimal end-user confusion.

Cobru's hosted payment flows can still feel integrated into your own product if you design the handoff carefully. The original Spotlight material also documents a white-label user registration surface that is important for embedded financial products.

White-label onboarding and brand-prefixed usernames come from legacy Cobru documentation. Publish or ship only after confirming the current contract with your Cobru team.

What this capability covers

  • registering users under a partner or brand namespace
  • collecting categories and subcategories before registration
  • confirming email and phone
  • embedding Cobru-owned flows inside your product experience

Registration workflow

Fetch categories from GET /category/ and the matching subcategories from GET /subcategory?category_id=....

Collect the registration payload, including brand, username, documents, and legal identity fields.

Create the user with POST /user/.

Complete post-registration verification flows such as email and phone confirmation.

Example registration payload

{
  "username": "09906786442",
  "first_name": "Test",
  "last_name": "User",
  "email": "test@example.com",
  "password": "12345678",
  "phone": "09906786442",
  "document_type": "0",
  "document_number": "11111122223",
  "country_code": "+57",
  "gender": 2,
  "date_birth": "2001-08-08",
  "type_person": 1,
  "date_expiration": "2019-08-08",
  "subcategory": 745,
  "category": 99,
  "platform": "ios",
  "brand": "MY_BRAND"
}
const response = await fetch('https://dev.cobru.co/user/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': process.env.COBRU_API_KEY!,
  },
  body: JSON.stringify(userPayload),
});

const createdUser = await response.json();
console.log(createdUser.username);
import requests

response = requests.post(
    "https://dev.cobru.co/user/",
    headers={
        "x-api-key": COBRU_API_KEY,
        "Content-Type": "application/json",
    },
    json=user_payload,
)
print(response.json())
<?php

use GuzzleHttp\Client;

$client = new Client();
$response = $client->request('POST', 'https://dev.cobru.co/user/', [
    'headers' => [
        'x-api-key' => getenv('COBRU_API_KEY'),
        'Content-Type' => 'application/json',
    ],
    'json' => $userPayload,
]);

$createdUser = json_decode((string) $response->getBody(), true, 512, JSON_THROW_ON_ERROR);
var_dump($createdUser);

Integration rules

UX recommendations

  • always describe the next step before redirecting the user
  • use your own reference ID in the callback URL
  • store Cobru's pk, url, and idempotency_key
  • design a return URL that confirms status and next actions
  • document payment-method-specific UX, especially for BRE-B and QR

On this page