Skip to main content
POST
Transfer between accounts

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) account.

Body

application/json
amount
number<float>
required

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

Example:

500000

beneficiary_account_number
string
required

12-digit account number of the destination account. Must belong to the same merchant and be active.

Example:

"123456789012"

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.