Skip to main content

Distributor Internal Posting

Purpose

This functionality allows the distributor to post internal transactions such as debiting client IBANs and transferring funds to an operational account. Internal posting is essential for back-office operations that need to move funds between accounts without going through external payment networks.

When to use

Use this API for back-office operations that require internal fund transfers, such as:

  • Collecting fees from customer accounts
  • Consolidating funds to operational accounts
  • Periodic settlement processes
  • Correcting accounting entries

These operations are typically not exposed to end users but are crucial for the distributor's financial management.

Testing Endpoints

You can test these endpoints directly in our API Sandbox.

Available Modes

The Internal Posting API supports two operational modes:

  1. Transaction Mode - Used for individual transfers processed immediately
  2. Pre-authorization Mode - Used for transactions requiring additional approval steps

Distributor Internal Posting - Single Transaction

Endpoint

POSThttps://sandbox.revsto.com/api/distributor/v1/transactions/distributorPosting
Required Scopes: posting
Access Control

Internal posting operations require the posting scope. Access should be restricted to authorized back-office personnel only.

Code Examples

curl -X POST "https://sandbox.revsto.com/api/distributor/v1/transactions/distributorPosting" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_token" \
-d '{
"accounting": [
{
"srcAccount": "10000056878",
"dstAccount": "10000056910",
"amount": {"value": 10, "currency": "EUR"},
"type": "TRANSFER"
}
],
"mode": "TRANSACTION"
}'

Request Body

Internal Posting Request
{
"accounting": [
{
"srcAccount": "10000056878",
"dstAccount": "10000056910",
"amount": {"value": 10, "currency": "EUR"},
"type": "TRANSFER"
}
],
"mode": "TRANSACTION"
}

Sample Response

Internal Posting Response
{
"id": "15047",
"externalId": null,
"processId": null,
"type": "DISTRIBUTOR_POSTING",
"localizedType": {
"value": "DISTRIBUTOR_POSTING",
"label": "Distributor Posting"
},
"amount": {
"value": 10000,
"currency": "EUR"
},
"description": "Transfer from #10000096916 to #10000008325 of 100,00 €",
"shortDescription": "",
"media": "API",
"createdAt": "2025-05-09T11:32:36+03:00",
"businessProcessId": null,
"accountingEntries": [
{
"id": "13215",
"accountId": "10000096916",
"transactionId": "15047",
"externalId": null,
"description": "Transfer to account #10000008325 of 100,00 €",
"type": "TRANSFER",
"amount": {
"value": -10000,
"currency": "EUR"
},
"balance": {
"value": 949876,
"currency": "EUR"
},
"availableBalance": {
"value": 949876,
"currency": "EUR"
},
"createdAt": "2025-05-09T11:32:36+03:00",
"accountOwner": {
"id": "3630",
"name": "My Test Business",
"externalId": null,
"userRole": "COMPANY"
}
},
{
"id": "13216",
"accountId": "10000008325",
"transactionId": "15047",
"externalId": null,
"description": "Transfer of 100,00 € from #10000096916",
"type": "TRANSFER",
"amount": {
"value": 10000,
"currency": "EUR"
},
"balance": {
"value": 10000,
"currency": "EUR"
},
"availableBalance": {
"value": 10000,
"currency": "EUR"
},
"createdAt": "2025-05-09T11:32:36+03:00",
"accountOwner": {
"id": "1016",
"name": "SURESWIPE E.M.I. PLC",
"externalId": null,
"userRole": "DISTRIBUTOR"
}
}
],
"contributions": [
{
"id": "20795",
"role": "INITIATOR",
"device": null,
"contributor": "1016",
"name": "SURESWIPE E.M.I. PLC",
"externalId": null,
"userRole": {},
"employee": null,
"supportId": null
}
]
}

Request Parameters - Transaction Mode

ParameterRequiredDescription
accountingYesArray of accounting entries (at least one entry required)
accounting[].srcAccountYesSource account number to debit
accounting[].dstAccountYesDestination account number to credit
accounting[].amount.valueYesAmount to transfer
accounting[].amount.currencyYesCurrency code of the amount (e.g., "EUR")
accounting[].typeYesType of transfer (usually "TRANSFER")
modeYesMust be set to "TRANSACTION" for standard transactions or "PREAUTH" for pre-authorized transactions

Distributor Internal Posting - Multiple Transfers

You can include multiple accounting entries in a single request to transfer funds between multiple accounts.

Endpoint

POSThttps://sandbox.revsto.com/api/distributor/v1/transactions/distributorPosting
Required Scopes: posting
Access Control

Internal posting operations require the posting scope. Access should be restricted to authorized back-office personnel only.

Code Examples

curl -X POST "https://sandbox.revsto.com/api/distributor/v1/transactions/distributorPosting" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_token" \
-d '{
"accounting": [
{
"srcAccount": "10000056878",
"dstAccount": "10000056910",
"amount": {"value": 10, "currency": "EUR"},
"type": "TRANSFER"
},
{
"srcAccount": "10000056878",
"dstAccount": "10000056911",
"amount": {"value": 20, "currency": "EUR"},
"type": "TRANSFER"
}
],
"mode": "BATCH"
}'

Request Body - Multiple Transfers

Batch Internal Posting Request
{
"accounting": [
{
"srcAccount": "10000056878",
"dstAccount": "10000056910",
"amount": {"value": 10, "currency": "EUR"},
"type": "TRANSFER"
},
{
"srcAccount": "10000056878",
"dstAccount": "10000056911",
"amount": {"value": 20, "currency": "EUR"},
"type": "TRANSFER"
}
],
"mode": "BATCH"
}

Sample Response - Multiple Transfers

Similar to single transfers, but with multiple accounting entries reflected in the response.

Request Parameters - Multiple Transfers

ParameterRequiredDescription
accountingYesArray of accounting entries (multiple entries for multiple transfers)
accounting[].srcAccountYesSource account number to debit
accounting[].dstAccountYesDestination account number to credit
accounting[].amount.valueYesAmount to transfer
accounting[].amount.currencyYesCurrency code of the amount (e.g., "EUR")
accounting[].typeYesType of transfer (usually "TRANSFER")
modeYesMust be set to "TRANSACTION" or "PREAUTH"

Transaction Status and Notifications

Internal posting transactions are automatically settled in real-time. You will receive webhook notifications about the transaction status instead of polling for status updates.

Webhook Notification Example

When an internal posting is completed, you'll receive a webhook notification:

Internal Posting Webhook Payload
{
"id": "15047",
"webhookId": "0196afb7-268e-730e-917f-c690256e7784",
"type": "transaction",
"event": "transaction.new",
"data": {
"transactionLogId": "15047",
"transactionType": "DISTRIBUTOR_POSTING"
}
}

Transaction Response Structure

The response includes detailed accounting entries showing:

  • Source account debit: Negative amount showing funds leaving the source account
  • Destination account credit: Positive amount showing funds entering the destination account
  • Updated balances: Current balance and available balance for each affected account
  • Account ownership: Details about who owns each account involved in the transfer

Transaction Types

TypeDescription
TRANSFERStandard transfer between accounts
FEEFee collection from a customer account
SETTLEMENTSettlement transaction (typically for batch operations)
CORRECTIONCorrection of a previous accounting entry

Available Modes

ModeDescription
TRANSACTIONStandard transfer processed immediately
PREAUTHPre-authorization mode requiring additional approval steps

Status Values

Internal posting transactions are processed immediately and have the following characteristics:

  • Transactions are automatically settled in real-time
  • No intermediate status values - transfers complete immediately or fail
  • Status notifications are sent via webhooks rather than polling

Best Practices

  1. Use Multiple Entries for Efficiency: When transferring to multiple accounts, include multiple accounting entries in a single request to reduce the number of API calls.

  2. Monitor via Webhooks: Internal posting operations are automatically settled. Use webhook notifications to track transaction completion rather than polling for status.

  3. Implement Proper Error Handling: Handle API errors appropriately. Failed requests will return error details in the response.

  4. Account Validation: Validate source and destination accounts before attempting transfers to avoid rejected transactions.

  5. Reconciliation: Use the detailed accounting entries in the response to reconcile internal transfers against account balances.

Security Considerations

Internal posting operations involve direct movement of funds, so they require careful security controls:

  1. Access Control: Limit access to internal posting APIs to authorized back-office personnel only.

  2. Audit Trail: Maintain comprehensive logs of all internal postings for audit purposes.

  3. Dual Authorization: Consider implementing a dual authorization process for transfers above a certain threshold.

  4. IP Restrictions: Consider restricting API access to specific IP addresses or VPNs.

caution

Internal posting operations modify account balances directly. Always ensure that source accounts have sufficient funds before initiating transfers to avoid rejected transactions.