🚧 Bloque documentation is under development

Bancolombia Accounts

Create and manage payment accounts that integrate with Bancolombia's banking system.

Overview

Bancolombia accounts allow users to receive payments through Bancolombia's banking infrastructure. Each account has a unique reference code that can be used for receiving payments.

Creating a Bancolombia Account

create-bancolombia-account.ts
import { SDK } from '@bloque/sdk';

const bloque = new SDK({
  origin: 'your-origin',
  auth: {
    type: 'apiKey',
    apiKey: process.env.BLOQUE_API_KEY!,
  },
  mode: 'production',
});

// Connect to user session
const userSession = await bloque.connect('user-alias');

// Create Bancolombia account
const account = await userSession.accounts.bancolombia.create({
  holderUrn: 'did:bloque:your-origin:user-alias',
  name: 'Main Account',
});

console.log('Reference code:', account.referenceCode);
console.log('Status:', account.status);
console.log('URN:', account.urn);

Parameters

types.ts
interface CreateBancolombiaAccountParams {
  holderUrn?: string;   // Optional user URN
  name?: string;        // Optional account name
  webhookUrl?: string;  // Optional webhook for events
  ledgerId?: string;    // Optional ledger account ID
  metadata?: Record<string, unknown>; // Custom metadata
}

Response

types.ts
interface BancolombiaAccount {
  urn: string;                      // Unique resource name
  id: string;                       // Account ID
  referenceCode: string;            // Payment reference code
  status: AccountStatus;
  ownerUrn: string;
  ledgerId: string;
  webhookUrl: string | null;
  metadata?: Record<string, unknown>;
  createdAt: string;
  updatedAt: string;
}

Account Status

StatusDescription
creation_in_progressAccount is being created
creation_failedAccount creation failed
activeAccount is active
disabledAccount has been disabled
deletedAccount has been deleted

Using Reference Codes

The reference code can be shared with payers to receive funds:

list-bancolombia-accounts.ts
const account = await bloque.accounts.bancolombia.create({
  holderUrn: userUrn,
  name: 'Savings Account',
});

// Share this reference code with payers
console.log('Payment reference:', account.referenceCode);
console.log('Share this code to receive payments');

Listing Bancolombia Accounts

List all Bancolombia accounts for a user:

list-bancolombia-accounts.ts
const userSession = await bloque.connect(userUrn);
const accounts = await userSession.accounts.bancolombia.list();

console.log(`Found ${accounts.accounts.length} Bancolombia accounts`);

accounts.accounts.forEach((account) => {
  console.log('\nAccount:', account.metadata?.name);
  console.log('Reference:', account.referenceCode);
  console.log('Status:', account.status);
});

Checking Balance

Check the balance of a Bancolombia account:

types.ts
const balances = await bloque.accounts.balance(
  'did:bloque:account:bancolombia:acc-12345',
);

Object.entries(balances).forEach(([token, balance]) => {
  console.log(`${token}:`);
  console.log(`  Current: ${balance.current}`);
  console.log(`  Pending: ${balance.pending}`);
});

Transaction History

View transactions for a Bancolombia account:

types.ts
const movements = await bloque.accounts.movements({
  urn: 'did:bloque:account:bancolombia:acc-12345',
  asset: 'DUSD/6',
  limit: 50,
});

movements.data.forEach((transaction) => {
  console.log(`${transaction.direction}: ${transaction.amount}`);
  console.log(`Date: ${transaction.createdAt}`);
});

Updating Account Metadata

Update account information:

types.ts
const updatedAccount = await bloque.accounts.bancolombia.updateMetadata({
  urn: 'did:bloque:account:bancolombia:acc-12345',
  metadata: {
    name: 'Business Account',
    department: 'Finance'
  }
});

console.log('Account updated:', updatedAccount.metadata?.name);

Complete Example

setup-bancolombia.ts
import { SDK } from '@bloque/sdk';

const bloque = new SDK({
  origin: 'your-origin',
  auth: {
    type: 'apiKey',
    apiKey: process.env.BLOQUE_API_KEY!,
  },
  mode: 'production',
});

async function setupBancolombiaAccount(userUrn: string) {
  try {
    // Connect to user session
    const userSession = await bloque.connect(userUrn);

    // Create account
    const account = await userSession.accounts.bancolombia.create({
      holderUrn: userUrn,
      name: 'Receiving Account',
    });

    console.log('✓ Account created');
    console.log('  Reference code:', account.referenceCode);
    console.log('  Status:', account.status);

    // Check balance
    const balances = await bloque.accounts.balance(account.urn);

    console.log('✓ Current balances:');
    Object.entries(balances).forEach(([token, balance]) => {
      console.log(`  ${token}: ${balance.current}`);
    });

    return { success: true, account };

  } catch (error) {
    console.error('✗ Setup failed:', error);
    throw error;
  }
}

Error Handling

types.ts
try {
  const account = await bloque.accounts.bancolombia.create({
    holderUrn: userUrn,
    name: accountName,
  });

  console.log('Account created:', account.referenceCode);

} catch (error) {
  if (error instanceof Error) {
    console.error('Failed to create account:', error.message);

    if (error.message.includes('not found')) {
      // User doesn't exist
    } else if (error.message.includes('unauthorized')) {
      // API key issues
    }
  }

  throw error;
}

Best Practices

  1. KYC Verification: Ensure users complete KYC first
  2. Reference Codes: Store reference codes securely
  3. Status Checks: Verify account status before use
  4. Error Handling: Use try-catch blocks
  5. Test in Sandbox: Test thoroughly before production

Next Steps