Singapay Home Page
Logo Icon
  1. Webhooks
  2. Virtual Account Transaction

Information

MethodPathFormatAuthentication
POSThttps://merchant-virtual-account-transaction-urljsonOAuth 2.0 with Access Token

Request Details

Headers Structure

FieldValueTypeMandatoryLengthDescriptionExample
X-PARTNER-IDapi_keyAlphanumericMandatoryAPI key obtained from the merchant dashboard.b3ed7d4b-a96c-6c08-b3c7-12c3124242d9
Acceptapplication/jsonAlphabeticMandatorySpecifies JSON as the expected response format.application/json
AuthorizationBearer {bearerToken}AlphanumericMandatoryBearer token obtained from the get access token endpoint.Bearer eyJ0eXAiOiJKV1{…}

Response Details

Response Structure

FieldTypeMandatoryLengthDescriptionExample
statusNumericMandatory3HTTP Status Code200
successBooleanMandatory12xx is true. 4xx-500 is false.true
dataArray ObjectConditional---
> transaction_idNumericMandatory-Transaction ID3645345
> accountObject----
>> nameAlphabetic--Account name-
>> idNumeric--Account ID-
> bank_codeAlphabeticMandatory-Code of bank like: BRI, BNI, DANAMON, etcBRI
> va_numberNumericMandatory-Virtual account bank number5588804221231232
> statusAlphabeticMandatory-Transaction status (e.g., paid, pending, unpaid)paid
> amountObjectMandatory-Amount of transaction-
>> valueDecimalMandatory-Transaction amount99000
>> currencyAlphabeticMandatory3Currency typeIDR
> feesArray--List of fees related to the transaction-
>> nameAlphabetic--Fee name-
>> amountDecimal--Fee amount-
>> currencyAlphabetic--Currency type-
> total_amountObjectMandatory-Total amount of transaction-
>> valueDecimalMandatory-Total transaction amount99000
>> currencyAlphabeticMandatory3Currency typeIDR
> post_timestampTimestampMandatory-Date requested with Unix Timestamp millisecond format1714122259
> processed_timestampTimestamp--Date finished with Unix Timestamp millisecond format-
> balance_afterNumericMandatory-Balance account after transaction-
>> valueNumericMandatory-Balance after transaction99000
>> currencyAlphabeticMandatory3Currency typeIDR

Response Example

Success: Here’s an example of a successful response.

{
  "status": 200,
  "success": true,
  "data": {
    "transaction_id": "645345445",
    "account": {
      "name": "Julian Pratama",
      "id": "465454"
    },
    "bank_code": "BRI",
    "va_number": "5588804221231232",
    "status": "paid",
    "notes": "lorem ipsum",
    "amount": {
      "value": "11000.00",
      "currency": "IDR"
    },
    "fees": [
      {
        "name": "Service Fee",
        "amount": "2000.00",
        "currency": "IDR"
      }
    ],
    "total_amount": {
      "value": "13000.00",
      "currency": "IDR"
    },
    "post_timestamp": "1714618220440",
    "processed_timestamp": "1714618220440",
    "balance_after": {
      "value": "11000.00",
      "currency": "IDR"
    }
  }
}

Error: This is an example of an unsuccessful request.

{
    "status": 401,
    "success": false,
    "error": {
        "code": 401,
        "message": "Unauthorized partner, please sign in"
    }
}