Skip to main content

Transfers

A transfer moves funds from your platform to a customer's bank account or wallet. Use transfers to pay out sellers, distribute campaign proceeds, or send refunds via a different channel. Each transfer is routed through a provider (Stripe, PagarMe, or BRLA) and targets a specific payment method on the destination customer.

import { createOakClient, createTransferService } from '@oaknetwork/api';

const client = createOakClient({ ... });
const transfers = createTransferService(client);

Methods

MethodDescription
create(transfer)Create a new transfer

Create a transfer

Transfer requests are provider-specific. Pass the provider field to select the request shape.

Stripe

const result = await transfers.create({
provider: 'stripe',
source: {
amount: 2500,
currency: 'usd',
customer: { id: 'cus_abc123' },
},
destination: {
customer: { id: 'cus_abc123' },
payment_method: { type: 'bank', id: 'pm_bank_xyz' },
},
metadata: {
reference_id: 'payout_001',
},
provider_data: {
statement_descriptor: 'OAK PAYOUT',
},
});

if (result.ok) {
console.log('Transfer ID:', result.value.data.id);
console.log('Status:', result.value.data.status);
}

PagarMe

const result = await transfers.create({
provider: 'pagar_me',
source: {
amount: 10000,
currency: 'brl',
},
metadata: {
campaign_id: 'camp_001',
},
});

BRLA

const result = await transfers.create({
provider: 'brla',
source: {
amount: 5000,
currency: 'brla',
customer: { id: 'cus_abc123' },
},
destination: {
customer: { id: 'cus_def456' },
payment_method: {
type: 'customer_wallet',
chain: 'polygon',
evm_address: '0x1234...abcd',
},
},
});

Provider request fields

FieldStripePagarMeBRLA
provider"stripe""pagar_me""brla"
source.currency"usd""brl""brla"
source.customerRequiredOptional
destination.customerRequired (same as source)Optional
destination.payment_methodBank PM by IDWallet or PM by ID
provider_datastatement_descriptorwallet_memo

Response

The response data extends the original request with:

FieldTypeDescription
idstringTransfer ID
statusstringTransfer status (e.g., "created")
type"transfer"Always "transfer"
providerstringProvider used
created_atstringISO timestamp
updated_atstringISO timestamp