Draft Transfers API

Create draft transfer

🚧 Beta feature

This feature is currently in beta testing, and the final specification may still change.

Creates a draft transfer. The draft transfer immediately enters pending-review and appears in the initiator's queue in Mollie Apps. It carries no legal weight and moves no funds until a human initiator approves it there.

Test mode

Creating a draft transfer always returns a synthetic draft in pending-review, using synthetic data, same as in live mode. No real funds move and nothing is sent to Mollie Apps.

Shortly after, you can simulate the initiator's decision by adjusting the transfer amount:

AmountSimulated outcomeWebhook sequence
13.00Declined by the initiator, with a free-text reasonbusiness-account-draft-transfer.createdbusiness-account-draft-transfer.declined
OtherApproved by the initiatorbusiness-account-draft-transfer.createdbusiness-account-draft-transfer.approved

The webhooks fire asynchronously, with a short delay between them to mimic real timing. Get and list reflect the simulated outcome once it lands.

Cancelling (via DELETE) is unaffected by the amount: it always transitions the draft to declined with statusReason.code set to deleted-by-creator, the same as in live mode.

post/v2/business-accounts/draft-transfers

Headers

idempotency-keystring
Example:123e4567-e89b-12d3-a456-426

A unique key to ensure idempotent requests. This key should be a UUID v4 string.

Request body

resourcestring

Indicates the response contains a draft transfer object. Will always contain the string business-account-draft-transfer for this endpoint.

idstring
mode'live' | 'test'

Whether this entity was created in live mode or in test mode.

debtorIbanstring

The IBAN of the debtor's (sender) Mollie Business Account. Defaults to your organization's primary account if omitted.

descriptionstring nullable required

A short description of the draft transfer. Once approved, this will appear on the bank statement of both the debtor and creditor.

scheduledExecutionDatestring date nullable

The date on which the resulting transfer will be executed, once approved. Defaults to same-day if omitted, in ISO 8601 date format.

status'pending-review' | 'approved' | 'declined'

The status of the draft transfer.

createdAtstring

The entity's date and time of creation, in ISO 8601 format.

approvedAtstring nullable

The date and time the draft transfer was approved, in ISO 8601 format. null unless status is approved.

declinedAtstring nullable

The date and time the draft transfer was declined by the initiator, in ISO 8601 format. null unless statusReason.code is declined-by-initiator.

deletedAtstring nullable

The date and time the draft transfer was deleted via the Cancel draft transfer endpoint, in ISO 8601 format. null unless statusReason.code is deleted-by-creator.

testmodeboolean nullable

Whether to create the entity in test mode or live mode.

Most API credentials are specifically created for either live mode or test mode, in which case this parameter must not be sent. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting testmode to true.

Example request

{
  "resource": "business-account-draft-transfer",
  "id": "badrt_87GByBuj4UCcUTEbs6aGJ",
  "mode": "live",
  "debtorIban": "NL55MLLE0123456789",
  "debtor": {
    "fullName": "Jan Jansen",
    "account": {
      "iban": "NL02ABNA0123456789"
    }
  },
  "creditor": {
    "fullName": "Jan Jansen",
    "account": {
      "iban": "NL02ABNA0123456789"
    }
  },
  "amount": {
    "currency": "EUR",
    "value": "10.00"
  },
  "description": "Invoice 12345",
  "scheduledExecutionDate": "2025-03-01",
  "status": "pending-review",
  "statusReason": {
    "code": "deleted-by-creator",
    "message": "The draft transfer has been deleted by the user who created it"
  },
  "createdAt": "2024-03-20T09:13:37+00:00",
  "approvedAt": "2025-01-01T12:05:00+00:00",
  "declinedAt": "2025-01-01T12:05:00+00:00",
  "deletedAt": "2025-01-01T12:05:00+00:00",
  "_links": {
    "self": {
      "href": "https://api.mollie.com/v2/business-accounts/draft-transfers/badrt_87GByBuj4UCcUTEbs6aGJ",
      "type": "application/hal+json"
    },
    "documentation": {
      "href": "https://docs.mollie.com/reference/get-draft-transfer",
      "type": "text/html"
    }
  }
}

Response

The newly created draft transfer object.