Disbursement

On this page, we’ll dive into the different disbursement endpoints you can use to manage disbursement transactions programmatically. You can disburse both fiat and cryptocurrency.

The disbursement model

The disbursement model is the data structure that represents a disbursement transaction in WePay. The following attributes are associated with the disbursement model:

Properties

FieldTypeDescription
disbursementIdstring

Unique identifier for the disbursement transaction.

recipientobject

Details of the recipient.

recipient.recipientIdstring

Unique identifier for the recipient.

recipient.emailstring

Email address of the recipient.

recipient.namestring

Name of the recipient.

recipient.bankobject

Bank details of the recipient.

recipient.bank.bankNamestring

Name of the bank.

recipient.bank.accountNamestring

Name on the bank account.

recipient.bank.accountNumberstring

Bank account number.

recipient.bank.bankCodestring

Code of the bank.

recipient.bank.currencystring

Currency of the bank account.

recipient.bank.countrystring

Country of the bank.

amountnumber

The amount of the disbursement.

currencystring

The currency of the disbursement.

feeAmountnumber

The amount of the fee.

feePercentagenumber

The percentage of the fee.

statusstring

The status of the disbursement transaction. This can be either pending, failed or completed.

createdBystring

Unique identifier of the user who created the disbursement.

activityHistoryarray

Array of activity history objects.

activityHistory.activitystring

Description of the activity.

activityHistory.statusstring

Status of the activity.

activityHistory.descriptionstring

Description of the activity.

activityHistory.updatedAtobject

Timestamp of the activity update.

referencestring

This can be the client transaction ID for the disbursement transaction. If exists, should be unique.

notestring

This can be used to store any additional information about the disbursement transaction.

createdAtstring

Timestamp when the disbursement was created.

updatedAtstring

Timestamp when the disbursement was last updated.


GET/v1/disbursement/fiat

Disbursement Fiat List

This endpoint allows you to retrieve a paginated list of all your fiat disbursement transactions. By default, a maximum of ten disbursement transactions are shown per page.

Query Params attributes

FieldTypeDescription
limitinteger

Limit the number of disbursement transactions returned.

pageinteger

Specify the page number of the disbursement transactions to retrieve.

sortstring

Sort the disbursement transactions by a specific field. You can sort by createdAt or updatedAt. By default, disbursement transactions are sorted by createdAt. You can also sort in reverse order by adding a hyphen (-) before the field you want to sort by.

disbursementIdstring

Search for a specific disbursement transaction by its disbursementId.

statusstring

Filter the disbursement transactions by status. You can filter by pending, failed, or completed.

currencystring

Filter the disbursement transactions by currency.

Request

GET
/v1/disbursement/fiat
curl -X GET "https://staging.wepay.to/v1/disbursement/fiat?limit=10&page=1&sort=createdAt&status=pending&currency=IDR" \
-H "X-Signature: YOUR_SIGNATURE" \
-H "X-Timestamp: YOUR_TIMESTAMP" \
-H "X-Client-ID: YOUR_CLIENT_ID"

Response

{
  "data": {
    "docs": [
      {
        "disbursementId": "e254a4ba-6c6b-4953-af22-30d7447fe3ee",
        "groupId": "0c9d8e7f-6a5b-4c3d-9e2f-1a0b9c8d7e6f",
        "recipient": {
          "recipientId": "mocked_recipient_id",
          "email": "mocked_email@example.com",
          "name": "Mocked Name",
          "bank": {
            "bankName": "Bank Central Asia",
            "accountName": "MOCKED NAME",
            "accountNumber": "1234567890",
            "bankCode": "bca",
            "bankIdentifierCode": "CENAIDJA",
            "currency": "IDR",
            "country": "ID",
            "address": "Jl. Jend. Sudirman No. 1",
            "city": "Jakarta",
            "province": "DKI Jakarta",
            "postCode": "10220"
          },
          "verification": {
            "outcome": "verified",
            "suppliedName": "Mocked Name",
            "bankName": "MOCKED NAME",
            "provider": "bank_inquiry",
            "checkedAt": "2024-11-12T06:07:01.512Z"
          }
        },
        "amount": 40000,
        "currency": "IDR",
        "feeAmount": 5000,
        "feePercentage": 12.5,
        "status": "completed",
        "createdBy": "672873dfc82e12312dc77ce2",
        "activityHistory": [
          {
            "activity": "Disburse requested",
            "status": "completed",
            "description": "order is valid",
            "updatedAt": "2024-11-12T06:07:02.386Z"
          },
          {
            "activity": "Recipient validated",
            "status": "completed",
            "description": "recipient is valid",
            "updatedAt": "2024-11-12T06:07:02.386Z"
          },
          {
            "activity": "Sent to recipient account",
            "status": "completed",
            "description": "transaction is success",
            "updatedAt": "2024-11-12T06:07:11.442Z"
          }
        ],
        "reference": "referenceId",
        "note": "Payroll November",
        "balance": {
          "before": 1000000,
          "after": 955000
        },
        "organizationId": "672873dfc82e12312dc77ce0",
        "organizationName": "PT Example Merchant",
        "initiatedBy": {
          "userId": "672873dfc82e12312dc77ce2",
          "name": "Mocked User"
        },
        "createdAt": "2024-11-12T06:07:00.762Z",
        "updatedAt": "2024-11-12T06:07:11.443Z",
        "completedAt": "2024-11-12T06:07:11.442Z"
      }
    ],
    "offset": 0,
    "page": 1,
    "limit": 10,
    "totalPages": 1,
    "totalDocs": 1,
    "totalItems": 1,
    "pagingCounter": 10,
    "hasPrevPage": false,
    "hasNextPage": false,
    "prevPage": 0,
    "nextPage": 0
  },
  "message": "Successfully get fiat disbursements",
  "requestId": "e6f7a8b9-c0d1-4e2f-9a3b-4c5d6e7f8091",
  "statusCode": 200,
  "timestamp": "2026-10-01T03:30:00.000Z"
}

GET/v1/disbursement/fiat/:disbursementIdOrReference

Disbursement Fiat Detail

This endpoint allows you to retrieve the details of a specific fiat disbursement transaction.

Request

GET
/v1/disbursement/fiat/:disbursementIdOrReference
curl -X GET "https://staging.wepay.to/v1/disbursement/fiat/cd738d41-8f37-4fb4-9c0b-8cd75b687530" \
-H "X-Signature: YOUR_SIGNATURE" \
-H "X-Timestamp: YOUR_TIMESTAMP" \
-H "X-Client-ID: YOUR_CLIENT_ID"

Response

{
  "data": {
    "disbursementId": "e254a4ba-6c6b-4953-af22-30d7447fe3ee",
    "groupId": "0c9d8e7f-6a5b-4c3d-9e2f-1a0b9c8d7e6f",
    "recipient": {
      "recipientId": "mocked_recipient_id",
      "email": "mocked_email@example.com",
      "name": "Mocked Name",
      "bank": {
        "bankName": "Bank Central Asia",
        "accountName": "MOCKED NAME",
        "accountNumber": "1234567890",
        "bankCode": "bca",
        "bankIdentifierCode": "CENAIDJA",
        "currency": "IDR",
        "country": "ID",
        "address": "Jl. Jend. Sudirman No. 1",
        "city": "Jakarta",
        "province": "DKI Jakarta",
        "postCode": "10220"
      },
      "verification": {
        "outcome": "verified",
        "suppliedName": "Mocked Name",
        "bankName": "MOCKED NAME",
        "provider": "bank_inquiry",
        "checkedAt": "2024-11-12T06:07:01.512Z"
      }
    },
    "amount": 40000,
    "currency": "IDR",
    "feeAmount": 5000,
    "feePercentage": 12.5,
    "status": "completed",
    "createdBy": "672873dfc82e12312dc77ce2",
    "activityHistory": [
      {
        "activity": "Disburse requested",
        "status": "completed",
        "description": "order is valid",
        "updatedAt": "2024-11-12T06:07:02.386Z"
      },
      {
        "activity": "Recipient validated",
        "status": "completed",
        "description": "recipient is valid",
        "updatedAt": "2024-11-12T06:07:02.386Z"
      },
      {
        "activity": "Sent to recipient account",
        "status": "completed",
        "description": "transaction is success",
        "updatedAt": "2024-11-12T06:07:11.442Z"
      }
    ],
    "reference": "referenceId",
    "note": "Payroll November",
    "balance": {
      "before": 1000000,
      "after": 955000
    },
    "organizationId": "672873dfc82e12312dc77ce0",
    "organizationName": "PT Example Merchant",
    "initiatedBy": {
      "userId": "672873dfc82e12312dc77ce2",
      "name": "Mocked User"
    },
    "createdAt": "2024-11-12T06:07:00.762Z",
    "updatedAt": "2024-11-12T06:07:11.443Z",
    "completedAt": "2024-11-12T06:07:11.442Z"
  },
  "message": "Successfully get fiat disbursements",
  "requestId": "f7a8b9c0-d1e2-4f3a-8b4c-5d6e7f809102",
  "statusCode": 200,
  "timestamp": "2026-10-01T03:30:00.000Z"
}

GET/v1/disbursement/crypto

Disbursement Crypto List

This endpoint allows you to retrieve a paginated list of all your crypto disbursement transactions. By default, a maximum of ten disbursement transactions are shown per page.

Query Params attributes

FieldTypeDescription
limitnumber

Limit the number of disbursement transactions returned.

pagenumber

Specify the page number of the disbursement transactions to retrieve.

sortstring

Sort the disbursement transactions by a specific field, such as createdAt or updatedAt. You can sort in reverse order by adding a hyphen (-) before the field you want to sort by.

statusstring

Filter the disbursement transactions by status. You can filter by pending, pending_retry, processed, completed, canceled, failed, or need_check.

referencestring

Search for a specific disbursement transaction by its reference.

disbursementIdstring

Search for a specific disbursement transaction by its disbursementId.

amountnumber

Filter the disbursement transactions by exact amount.

startDatestring

Return disbursement transactions created at or after this date. Must be sent together with endDate; if only one of the two is sent, no date filter is applied.

endDatestring

Return disbursement transactions created at or before this date. Must be sent together with startDate.

tokenstring

Filter the disbursement transactions by token, for example usdt-polygon.

tokenAddressstring

Filter the disbursement transactions by token contract address.

receiverAddressstring

Filter the disbursement transactions by receiver wallet address.

txHashstring

Search for a specific disbursement transaction by its blockchain transaction hash.

Request

GET
/v1/disbursement/crypto
curl -X GET "https://staging.wepay.to/v1/disbursement/crypto?limit=10&status=completed&token=usdt-polygon" \
-H "X-Signature: YOUR_SIGNATURE" \
-H "X-Timestamp: YOUR_TIMESTAMP" \
-H "X-Client-ID: YOUR_CLIENT_ID"

Response

{
  "statusCode": 200,
  "message": "getCryptoDisbursementListHandler successfully",
  "data": {
    "docs": [
      {
        "disbursementId": "3f8c2a1e-7b4d-4e9a-9c6f-2d1b0a9e8f7c",
        "groupId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
        "tokenAddress": "0x1234567890abcdef1234567890abcdef12345678",
        "tokenDecimal": 6,
        "receiverAddress": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
        "amount": 25,
        "token": "usdt-polygon",
        "network": "polygon",
        "blockchainType": "evm",
        "feeAmount": 0.35,
        "feePercentage": 1,
        "feeConfig": {
          "currency": "usdt",
          "minAmount": 1,
          "maxAmount": 1000,
          "feePercentage": 1,
          "feeFlat": 0.1,
          "_id": "66fa3c1e9b2d4a0012a4c001"
        },
        "status": "completed",
        "createdBy": "672873dfc82e12312dc77ce2",
        "activityHistory": [
          {
            "activity": "Sent to recipient wallet",
            "status": "completed",
            "description": "Transaction is under process and will be transferred out to the recipient",
            "updatedAt": "2026-09-30T05:10:00.000Z",
            "_id": "66fa3c1e9b2d4a0012a4b001"
          },
          {
            "activity": "Received by recipient",
            "status": "completed",
            "description": "Transaction is executed successfully and closed",
            "updatedAt": "2026-09-30T05:12:00.120Z",
            "_id": "66fa3c1e9b2d4a0012a4b002"
          }
        ],
        "transactionData": {
          "gasUsed": 21000,
          "txHash": "0x9f2c4e6a8b0d1f3e5a7c9b1d3f5e7a9c1b3d5f7e9a1c3b5d7f9e1a3c5b7d9f1e",
          "gasFeeEstimated": 0.02,
          "gasFeeActual": 0.018,
          "gasFeeShortfall": 0
        },
        "reference": "payout-2026-09-30-001",
        "createdAt": "2026-09-30T05:10:00.000Z",
        "updatedAt": "2026-09-30T05:12:00.100Z"
      }
    ],
    "totalDocs": 1,
    "offset": 0,
    "limit": 10,
    "totalPages": 1,
    "page": 1,
    "pagingCounter": 1,
    "hasPrevPage": false,
    "hasNextPage": false,
    "prevPage": null,
    "nextPage": null
  }
}

GET/v1/disbursement/crypto/:disbursementIdOrReference

Disbursement Crypto Detail

This endpoint allows you to retrieve the details of a specific crypto disbursement transaction, by its disbursementId or by the reference you sent when creating it. If no crypto disbursement matches, the endpoint responds with 404 and the message Crypto disbursement not found.

If you reused a reference across disbursements, a lookup by that reference returns only one of them. Use disbursementId to get a specific one. A fiat disbursement ID returns 404 here; use the fiat detail endpoint for it.

Request

GET
/v1/disbursement/crypto/:disbursementIdOrReference
curl -X GET "https://staging.wepay.to/v1/disbursement/crypto/3f8c2a1e-7b4d-4e9a-9c6f-2d1b0a9e8f7c" \
-H "X-Signature: YOUR_SIGNATURE" \
-H "X-Timestamp: YOUR_TIMESTAMP" \
-H "X-Client-ID: YOUR_CLIENT_ID"

Response

{
  "statusCode": 200,
  "message": "getCryptoDisbursementDetailHandler successfully",
  "data": {
    "disbursementId": "3f8c2a1e-7b4d-4e9a-9c6f-2d1b0a9e8f7c",
    "groupId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
    "tokenAddress": "0x1234567890abcdef1234567890abcdef12345678",
    "tokenDecimal": 6,
    "receiverAddress": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
    "amount": 25,
    "token": "usdt-polygon",
    "network": "polygon",
    "blockchainType": "evm",
    "feeAmount": 0.35,
    "feePercentage": 1,
    "feeConfig": {
      "feeFlat": 0.1,
      "feePercentage": 1
    },
    "status": "completed",
    "createdBy": "672873dfc82e12312dc77ce2",
    "activityHistory": [
      {
        "activity": "Sent to recipient wallet",
        "status": "completed",
        "description": "Transaction is under process and will be transferred out to the recipient",
        "updatedAt": "2026-09-30T05:10:00.000Z",
        "_id": "66fa3c1e9b2d4a0012a4b001"
      },
      {
        "activity": "Received by recipient",
        "status": "completed",
        "description": "Transaction is executed successfully and closed",
        "updatedAt": "2026-09-30T05:12:00.120Z",
        "_id": "66fa3c1e9b2d4a0012a4b002"
      }
    ],
    "transactionData": {
      "gasUsed": 21000,
      "txHash": "0x9f2c4e6a8b0d1f3e5a7c9b1d3f5e7a9c1b3d5f7e9a1c3b5d7f9e1a3c5b7d9f1e",
      "gasFeeEstimated": 0.02,
      "gasFeeActual": 0.018,
      "gasFeeShortfall": 0
    },
    "reference": "payout-2026-09-30-001",
    "createdAt": "2026-09-30T05:10:00.000Z",
    "updatedAt": "2026-09-30T05:12:00.100Z"
  }
}

POST/v1/disbursement/fiat

[DEPRECATED] Create Disbursement Fiat V1

These endpoints is deprecated. Please use Create Disbursement Fiat V2 endpoints instead.

This endpoint is used to initiate a fiat disbursement transaction. In order to initiate a disbursement, you must provide the amount, currency, recipient, and paymentMethod.

Read the statusCode field in the response body rather than the HTTP status code.

Please ensure that the amount is a positive number and that you are using valid currency codes.

Required attributes

FieldTypeDescription
disburseDataarray

This is an array of disbursement data.

currencystring

This is the currency of the disbursement.

recipientIdstring

This is the unique identifier of the recipient.

amountnumber

This is the amount of the disbursement.

Optional attributes

FieldTypeDescription
referencestring

This can be the client transaction ID for the disbursement transaction. If exists, should be unique.

notestring

This can be used to store any additional information about the disbursement transaction.

Request

POST
/v1/disbursement/fiat
curl --location \
https://staging.wepay.to/v1/disbursement/fiat \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{
    "disburseData": [
        {
            "currency" : "IDR",
            "recipientId": "670f8112cd0b0ddab0a03860",
            "amount": 10000,
            "reference": "referenceId1",
            "note": "note1"
        },
        {
            "currency" : "IDR",
            "recipientId": "670f8112cd0b0ddab0a03860",
            "amount": 200000,
            "reference": "referenceId12",
            "note": "note2"
        },
        {
            "currency" : "IDR",
            "recipientId": "670f8112cd0b0ddab0a03860",
            "amount": 3000000,
            "reference": "referenceId123"
            "note": "note3"
        }
    ]
}'

Response

{
  "statusCode": 200,
  "message": "Disbursement created successfully",
  "data": {
      "totalRecipient": 2,
      "disburseData": [
          {
              "disbursementId": "82dc0772-1b4c-4894-8b14-7ebd74ffec58",
              "recipient": {
                  "recipientId": "666b127a8a1656b0d892cf8b",
                  "email": "recipient@example.com",
                  "name": "test recipient",
                  "bank": {
                      "bankName": "BANK DIGITAL BCA",
                      "accountName": "accountName",
                      "accountNumber": "1234567890",
                      "bankCode": "051",
                      "currency": "IDR",
                      "country": "INDONESIA"
                  }
              },
              "currency": "IDR",
              "amount": 12000,
              "status": "pending",
              "feeAmount": 5000,
              "feePercentage": 41.67,
              "reference": "referenceId1",
              "note": "note1"
          },
          {
              "disbursementId": "182cd82d-c2c8-48fc-a0e1-1742dd28cff6",
              "recipient": {
                  "recipientId": "666b127a8a1656b0d892cf8b",
                  "email": "recipient@example.com",
                  "name": "test recipient",
                  "bank": {
                      "bankName": "BANK NEGARA INDONESIA",
                      "accountName": "accountName",
                      "accountNumber": "0987654321",
                      "bankCode": "009",
                      "currency": "IDR",
                      "country": "INDONESIA"
                  }
              },
              "currency": "IDR",
              "amount": 7800,
              "status": "pending",
              "feeAmount": 5000,
              "feePercentage": 64.1,
              "reference": "referenceId2",
              "note": "note2"
          }
      ],
      "sumFees": [
          {
              "currency": "IDR",
              "totalAmount": 10000
          }
      ],
      "sumAmount": [
          {
              "currency": "IDR",
              "totalAmount": 19800
          }
      ]
  }
}

HTTP Status 400 Example

Error Response

{
    "statusCode": 400,
    "error": "Not Found",
    "message": "Payment method not found"
}

POST/v2/disbursement/fiat

Create Disbursement Fiat V2

This endpoint allows you to create a disbursement transaction for fiat currency. That you can passing recipientId or directly input the recipient details.

Read the statusCode field in the response body rather than the HTTP status code.

Request body

FieldTypeDescription
currencystring

The currency for all disbursements in this request.

disburseDataarray

Array of disbursement data objects.

disburseData[].recipientobject

Direct recipient details (required if recipientId not provided).

recipient.emailstring

Email address of the recipient. Optional field.

recipient.namestring

Name of the recipient. Optional field.

recipient.bankobject

Bank details of the recipient.

bank.bankNamestring

Name of the bank.

bank.accountNamestring

Name on the bank account.

bank.accountNumberstring

Bank account number.

bank.bankCodestring

Code of the bank.

disburseData[].recipientIdstring

Unique identifier of an existing recipient (required if recipient details not provided).

disburseData[].amountnumber

Amount to disburse.

disburseData[].referencestring

Reference ID for the disbursement. Optional field.

Request

POST
/v2/disbursement/fiat
curl --location \
  https://staging.wepay.to/v2/disbursement/fiat \
  --header 'Content-Type: application/json' \
  --header 'Authorization: ••••••' \
  --data '{
    "currency": "IDR",
    "disburseData": [
      {
        "recipient": {
          "email": "client@example.com",
          "name": "Client Name",
          "bank": {
            "bankName": "BANK RAKYAT INDONESIA", 
            "accountName": "Client Name",
            "accountNumber": "123456789",
            "bankCode": "bank_rakyat_indonesia"
          }
        },
        "amount": 10000,
        "reference": "reference 1",
        "note": "note 1"
      },
      {
        "recipientId": "671766b24633f04ac6273109",
        "amount": 10000,
        "reference": "reference 2",
        "note": "note 2"
      }
    ]
  }'

Response

{
  "statusCode": 200,
  "message": "Disbursement created successfully",
  "data": {
    "totalRecipient": 2,
    "disburseData": [
      {
        "disbursementId": "1a5a4781-768e-4f04-9323-3409d5cf031e",
        "groupId": "b4599b0e-4b27-492b-a0ed-650ba590de73",
        "recipient": {
          "bank": {
            "bankName": "BANK RAKYAT INDONESIA",
            "accountName": "Client Name",
            "accountNumber": "123456789",
            "bankCode": "bank_rakyat_indonesia",
            "currency": "IDR"
          }
        },
        "currency": "IDR",
        "amount": 10000,
        "status": "pending",
        "feeAmount": 5000,
        "feePercentage": 50,
        "activityHistory": [
          {
            "activity": "Disburse requested",
            "status": "pending",
            "description": "waiting for system validation",
            "updatedAt": "2025-02-12T08:42:38.568Z"
          },
          {
            "activity": "Recipient validated",
            "status": "pending",
            "description": "waiting for bank confirmation received by system",
            "updatedAt": "2025-02-12T08:42:38.568Z"
          },
          {
            "activity": "Sent to recipient account",
            "status": "pending",
            "description": "transaction is under process and will be transferred out to recipient after validation is done",
            "updatedAt": "2025-02-12T08:42:38.568Z"
          }
        ],
        "reference": "reference 2"
      },
      {
        "disbursementId": "e62f3c62-4588-46db-a485-a1e22d3b43ca",
        "groupId": "b4599b0e-4b27-492b-a0ed-650ba590de73",
        "recipient": {
          "recipientId": "671766b24633f04ac6273109",
          "email": "jane.doe@example.com",
          "name": "Fiat Disburse Test 1",
          "bank": {
            "bankName": "BANK BNI",
            "accountName": "Jane Doe",
            "accountNumber": "1234567890",
            "bankCode": "bank_bni",
            "currency": "IDR",
            "country": "INDONESIA"
          }
        },
        "currency": "IDR",
        "amount": 10000,
        "status": "pending",
        "feeAmount": 5000,
        "feePercentage": 50,
        "activityHistory": [
          {
            "activity": "Disburse requested",
            "status": "pending",
            "description": "waiting for system validation",
            "updatedAt": "2025-02-12T08:42:38.568Z"
          },
          {
            "activity": "Recipient validated",
            "status": "pending",
            "description": "waiting for bank confirmation received by system",
            "updatedAt": "2025-02-12T08:42:38.568Z"
          },
          {
            "activity": "Sent to recipient account",
            "status": "pending",
            "description": "transaction is under process and will be transferred out to recipient after validation is done",
            "updatedAt": "2025-02-12T08:42:38.568Z"
          }
        ],
        "reference": "reference 2"
      }
    ],
    "sumFees": 10000,
    "sumAmount": 20000
  }
}

POST/v1/disbursement/crypto

Create Disbursement Crypto

This endpoint is used to initiate a crypto disbursement transaction. In order to initiate a disbursement, you must provide the token currency, amount, receiver wallet address, and reference (if any).

Read the statusCode field in the response body rather than the HTTP status code.

Please ensure that the amount is a positive number and that you are using valid token currency codes.

Required attributes

FieldTypeDescription
tokenstring

This is the token currency of the disbursement.

receiversarray

This is an array of disbursement data.

amountnumber

This is the amount of the disbursement.

receiverWalletAddressstring

This is the receiver wallet address.

Optional attributes

FieldTypeDescription
referencestring

This can be the client transaction ID for the disbursement transaction. If exists, should be unique.

notestring

This can be used to store any additional information about the disbursement transaction.

Request

POST
/v1/disbursement/crypto
curl --location \
https://staging.wepay.to/v1/disbursement/crypto \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{
    "token": "usdt-ethereum",
    "receivers": [
      {
        "amount" : 10,
        "receiverWalletAddress": "0xabc...",
        "reference": "referenceId1",
        "note": "note1"
      },
      {
        "amount" : 11,
        "receiverWalletAddress": "0xdef...",
        "reference": "referenceId2",
        "note": "note2"
      }
    ]
}'

Response

{
  "statusCode": 200,
  "message": "Crypto disbursement created",
  "data": {
      "totalReceiver": 2,
      "disburseData": [
        {
          "disbursementId": "558aa19c-83d2-40a5-a547-6b4404016f20",
          "groupId": "45334723-08bf-4b20-9aa0-c1e9409286d3",
          "tokenAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
          "receiverAddress": "0xabc...",
          "senderAddress": "0xghi...",
          "amount": 10,
          "token": "usdt-ethereum",
          "tokenDecimal": 6,
          "network": "ethereum",
          "blockchainType": "EVM",
          "feeAmount": 2,
          "feePercentage": 2000,
          "feeConfig": {
            "feeFlat": 1,
            "feePercentage": 0,
            "feeNetwork": 1
          },
          "status": "pending",
          "createdBy": "6719f68dd07aef516b9158ba",
          "activityHistory": [
            {
              "activity": "Sent to recipient wallet",
              "status": "pending",
              "description": "Transaction is under process and will be transferred out to the recipient",
              "updatedAt": "2025-04-23T05:55:49.079Z"
            },
            {
              "activity": "Received by recipient",
              "status": "pending",
              "description": "Transaction is executed successfully and closed",
              "updatedAt": "2025-04-23T05:55:49.079Z"
            }
          ],
          "reference": "referenceId1"
        },
        {
          "disbursementId": "558aa19c-83d2-40a5-a547-6b4404016f21",
          "groupId": "45334723-08bf-4b20-9aa0-c1e9409286d4",
          "tokenAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
          "receiverAddress": "0xdef...",
          "senderAddress": "0xghi...",
          "amount": 11,
          "token": "usdt-ethereum",
          "tokenDecimal": 6,
          "network": "ethereum",
          "blockchainType": "EVM",
          "feeAmount": 2,
          "feePercentage": 2000,
          "feeConfig": {
            "feeFlat": 1,
            "feePercentage": 0,
            "feeNetwork": 1
          },
          "status": "pending",
          "createdBy": "6719f68dd07aef516b9158ba",
          "activityHistory": [
            {
              "activity": "Sent to recipient wallet",
              "status": "pending",
              "description": "Transaction is under process and will be transferred out to the recipient",
              "updatedAt": "2025-04-23T05:55:49.079Z"
            },
            {
              "activity": "Received by recipient",
              "status": "pending",
              "description": "Transaction is executed successfully and closed",
              "updatedAt": "2025-04-23T05:55:49.079Z"
            }
          ],
          "reference": "referenceId2"
        },
      ],
      "sumFees": 4,
      "sumAmount": 21
  }
}

HTTP Status 400 Example

Error Response

{
    "statusCode": 400,
    "error": "Not Found",
    "message": "Payment method not found"
}
GET/v1/disbursement/fiat/payment-method

Disbursement Fiat Payment Method

This endpoint is used to get the list of available payment methods for fiat disbursement. You can filter the results by currency using the currency query parameter.

Request

GET
/v1/disbursement/payment-method
# Get all payment methods
curl --location --request GET 'https://staging.wepay.to/v1/disbursement/fiat/payment-method' \
--header 'Authorization: ••••••'

# Filter by currency (e.g., IDR)
curl --location --request GET 'https://staging.wepay.to/v1/disbursement/fiat/payment-method?currency=IDR' \
--header 'Authorization: ••••••'

Response

    {
        "statusCode": 200,
        "message": "getDisbursementPayment executed successfully",
        "data": [
            {
                "currency": "IDR",
                "bankCode": "bank_digital_bca",
                "bankName": "Bank Digital BCA",
                "minAmount": 10000,
                "maxAmount": 50000000,
                "feeFlat": 1000,
                "feePercentage": 1
            },
            {
                "currency": "IDR",
                "bankCode": "bank_central_asia",
                "bankName": "BCA",
                "minAmount": 10000,
                "maxAmount": 50000000,
                "feeFlat": 1000,
                "feePercentage": 1
            },
            {
                "currency": "IDR",
                "bankCode": "bank_rakyat_indonesia",
                "bankName": "BRI",
                "minAmount": 10000,
                "maxAmount": 50000000,
                "feeFlat": 5000,
                "feePercentage": 1
            }
        ]
    }

GET/v1/disbursement/crypto/payment-method

Disbursement Crypto Payment Method

This endpoint is used to get the list of tokens available for crypto disbursement. Use the currency of an entry as the token when you create a crypto disbursement.

Request

GET
/v1/disbursement/crypto/payment-method
curl --location --request GET 'https://staging.wepay.to/v1/disbursement/crypto/payment-method' \
--header 'Authorization: ••••••'

Response

    {
        "statusCode": 200,
        "message": "Crypto payment methods retrieved successfully",
        "data": [
            {
                "currency": "usdt-polygon",
                "network": "polygon",
                "symbol": "USDT",
                "name": "Tether USD",
                "minimumAmount": 1,
                "maximumAmount": 10000,
                "feeFlat": 0.1,
                "feePercentage": 0.5
            },
            {
                "currency": "usdc-ethereum",
                "network": "ethereum",
                "symbol": "USDC",
                "name": "USD Coin",
                "minimumAmount": 5,
                "maximumAmount": 50000,
                "feeFlat": 1,
                "feePercentage": 0
            }
        ]
    }

GET/v1/disbursement/crypto/estimate

Disbursement Crypto Estimate

This endpoint allows you to retrieve a fee estimation of your crypto disbursement transactions.

Query Params attributes

FieldTypeDescription
tokenstring

The token-id of the token you want to disburse.

amountinteger

Specify the number of the crypto disbursement transactions.

Request

GET
/v1/disbursement/crypto/estimate
curl -X GET "https://staging.wepay.to/v1/disbursement/crypto/estimate?token=usdt-ethereum&amount=10" \
-H "X-Signature: YOUR_SIGNATURE" \
-H "X-Timestamp: YOUR_TIMESTAMP" \
-H "X-Client-ID: YOUR_CLIENT_ID"

Response

{
      "statusCode": 200,
      "message": "Crypto disbursement estimate success",
      "data": {
          "token": "usdt-ethereum",
          "amount": 10,
          "fee": 1.812405740351673
      }
  }

PATCH/v1/disbursement/:disbursementId

[DEV] Update status

This endpoint is used to update the status of a disbursement. Work only on sandbox environment. Will send webhook to the user.

Work only on sandbox environment.

Required attributes

FieldTypeDescription
statusstring

The status of the disbursement.

Request

PATCH
/v1/disbursement/:disbursementId
curl --location --request PATCH 'https://staging.wepay.to/v1/disbursement/24f8d87a-ee5c-42b6-81b1-0a2706430bd7' \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{
    "status" : "completed"
}'

Response

{
  "statusCode": 200,
  "message": "Disbursement updated successfully"
}

HTTP Status 400 Example

Error Response

{
    "statusCode": 400,
    "error": "Bad Request",
    "message": "Disbursement not found"
}

GET/v1/disbursement/fiat/:disbursementId/report

Disbursement Fiat Transfer Proof

This endpoint allows you to download the transfer proof for a completed fiat disbursement transaction.

Request

GET
/v1/disbursement/fiat/:disbursementId/report
curl -X GET "https://staging.wepay.to/v1/disbursement/fiat/2f746abf-7630-4309-95d3-0f80ca1d0a1b/report" \
-H "X-Signature: YOUR_SIGNATURE" \
-H "X-Timestamp: YOUR_TIMESTAMP" \
-H "X-Client-ID: YOUR_CLIENT_ID"

Response

HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename="disbursement-2f746abf-7630-4309-95d3-0f80ca1d0a1b.pdf"

<binary PDF content>

HTTP Status 400 Example

Error Response

{
    "statusCode": 404,
    "error": "Not Found",
    "message": "Disbursement not found"
}

Did this page help you ship?