Skip to main content
POST
Transfer between accounts (PG or cross-channel)

Authorizations

Authorization
string
header
required

JWT issued by POST /api/v1.1/access-token/b2b. Send Authorization: Bearer <token>.

X-PARTNER-ID
string
header
required

Merchant API key (Credential.api_key). Required on every request.

Path Parameters

account_id
string
required

ULID of the source (remitter) PG account.

Body

application/json

Compatible-extend contract: PG→PG still uses beneficiary_account_number. Cross-channel (KYC / future BILLER) sets beneficiary_channel and omits the PG account number. Optional beneficiary_account_id is reserved for multi-pool peer products.

amount
number<float>
required

Transfer amount in IDR. Must be at least 1 and not exceed the remitter account available balance.

Example:

500000

beneficiary_channel
enum<string> | null

Destination product channel. Omit or PG for intra-PG movement. KYC credits the merchant KYC credit-pool. BILLER reserved until biller Shanghai provisioning.

Available options:
PG,
KYC,
BILLER
Example:

"KYC"

beneficiary_account_number
string | null

Required when beneficiary_channel is PG (or omitted). 12-digit PG account number of the destination account; must belong to the same merchant and be active.

Example:

"123456789012"

beneficiary_account_id
string | null

Optional peer-product account selector. Unused for KYC today (one pool per merchant). Reserved for future multi-pool / BILLER.

Example:

null

merchant_ref_no
string | null

Optional merchant-supplied idempotency reference. Unique per merchant across all account movements: reusing a value already used by the same merchant returns the original transfer (HTTP 200) without creating a duplicate. If omitted or empty, the platform auto-generates a unique reference (format AM-<timestamp>-<random>) and returns it in the response — a generated reference is unique per request and therefore provides no replay protection. A different merchant may reuse the same value.

Maximum string length: 191
Example:

"MOVE-20260702-001"

Response

Transfer completed successfully. The data object contains the created transfer record.

Standard success response envelope for account transfer endpoints.

status
integer
Example:

200

success
boolean
Example:

true

data
object

Account transfer transaction resource.

pagination
object | null

Pagination metadata for list endpoints; omitted for single-object responses.