VRPlatformVRPlatform
Integrate & Migrate Data

Airbnb Deposit Imports

Convert Airbnb payout CSV data into VRPlatform deposit transactions

Last Updated: 2026-07-21

Version: 1.0

Use one Airbnb Payout row and its following activity rows as the boundary for one VRPlatform deposit. Group the activity by reservation confirmation code and Airbnb activity type, then reconcile the resulting lines to the paid-out amount.

Result

For each Airbnb payout, submit one transaction with:

  • type: deposit
  • the Airbnb payout ID or reference code as the transaction uniqueRef
  • the payout date and lowercase currency
  • the first four-digit bank account reference in the payout details, when present
  • one line per confirmation-code and activity-type group
  • a Fast Pay fee or deviation line when the activity does not equal the payout

Convert Airbnb decimal amounts to integer minor units. For USD, 9850 means $98.50.

Airbnb Data to Load

Load the Airbnb payout transaction-history CSV. A row whose type is Payout starts a payout; the non-payout rows that follow it belong to that payout until the next Payout row.

The current composition recognizes these activity types:

  • Reservation
  • Adjustment
  • Resolution Payout
  • Resolution Adjustment
  • Cancellation Fee

Team accounts may expose a second payout CSV containing payout IDs and reference codes. Match its rows to the base CSV by details, date, and paid-out amount, then prefer its stable payout identity.

Map the Deposit Header

Choose the transaction uniqueRef in this order:

  1. payout ID
  2. reference code, with any prefix before : removed
  3. a deterministic key derived from payout date, amount, and sorted confirmation codes
Airbnb valueVRPlatform field
Payout identityuniqueRef
Payout datedate
Payout currencylowercase currency
Payout detailsdescription
First four digits in payout detailsmatchBankAccountLast4

Only send matchBankAccountLast4 when the four digits identify the destination bank account. Do not use guest payment-card digits.

Map Activity Lines

Group rows first by confirmationCode, then by type. Sum the decimal amounts within each group and convert that sum to minor units. Skip zero-total groups.

ActivitymatchLineTypeClassification
Reservationreservation
Any other typeairbnb_${camelCase(type)}

Use this line identity:

${confirmationCode || "none"}--${camelCase(type)}

Send the confirmation code as matchReservationConfirmationCode. Keep lines without a confirmation code unmatched rather than attaching them to an unrelated reservation.

Reconcile the Payout

After grouping the activity, calculate:

difference = payout paid-out amount - sum(activity lines)

When the difference is zero, add nothing. Otherwise:

  • classify it as airbnb_fastPayFee when it is exactly -1500 minor units or the difference-to-payout ratio rounds to -0.015
  • classify every other difference as airbnb_deviation

The deviation line preserves the source payout total, but it also signals that the source activity did not explain the settlement. Monitor and map this classification explicitly; do not silently treat it as reservation revenue.

End-to-End Example

This shortened input represents normalized Airbnb CSV rows:

{
  "payout": {
    "date": "07/18/2026",
    "type": "Payout",
    "details": "Transfer to Bank Account IBAN •••••7712 (USD)",
    "currency": "USD",
    "paidOut": "98.50",
    "payoutId": "AIRBNB-PAYOUT-123"
  },
  "activity": [
    {
      "type": "Reservation",
      "confirmationCode": "HMABC123",
      "details": "Guest payment",
      "currency": "USD",
      "amount": "100.00"
    }
  ]
}

The reservation line is 10000; the payout is 9850; the -150 difference is a 1.5% Fast Pay fee.

POST https://api.vrplatform.app/transactions/batch
Content-Type: application/json
{
  "connectionId": "00000000-0000-0000-0000-000000000002",
  "data": [
    {
      "type": "deposit",
      "currency": "usd",
      "date": "2026-07-18",
      "description": "Transfer to Bank Account IBAN •••••7712 (USD)",
      "uniqueRef": "AIRBNB-PAYOUT-123",
      "matchBankAccountLast4": "7712",
      "lines": [
        {
          "uniqueRef": "HMABC123--reservation",
          "amount": 10000,
          "description": "Reservation - Guest payment",
          "matchReservationConfirmationCode": "HMABC123",
          "matchLineTypeClassification": "reservation"
        },
        {
          "uniqueRef": "fastPayFee",
          "amount": -150,
          "description": "Fast pay fee",
          "matchLineTypeClassification": "airbnb_fastPayFee"
        }
      ]
    }
  ]
}

Implementation Checklist

  • Start a new deposit only at an Airbnb Payout row.
  • Prefer Airbnb payout IDs over generated identities.
  • Group activity by confirmation code and type before rounding.
  • Preserve negative fees, adjustments, and refunds.
  • Send reservation hints only from the row's confirmation code.
  • Require the final deposit lines to equal the payout paid-out amount.
  • Review every airbnb_deviation instead of treating it as ordinary income.

On this page