Create bulk transfers

POST /v2/transfers/bulks

This endpoint allows to create up to 5000 transfers with a single call. It acts exactly as if you called the POST /v2/transfers endpoint 5000 times yourself, except you don't need to worry about rate limiting. It also allows you to get an aggregated state for this bulk.

This endpoint does not perform the transfers synchronously, a 200 OK response means the bulk will be handled in the near future. You can either poll the GET endpoint or use the webhooks to follow its progress.

Note that the completion of a bulk does not mean all transfers are settled, it only means the transfers were initiated (the equivalent of a call to POST /v2/transfers).

application/json

Body Required

  • transfers array[object] Required

    Transfer creations to execute. There should not be more than 5000 transfers in a single bulk, and there should be at least one.

    Hide transfers attributes Show transfers attributes object
    • amount integer(int64) Required

      Amount of the transfer, in cents. The currency is always EURO.

      Minimum value is 1.

    • Name of the beneficiary. Will be used to create the beneficiary if one doesn't already exist with the same beneficiary_iban, will be ignored otherwise. If you know the beneficiary exists, you don't need to provide a name here.

    • beneficiary_iban string Required

      IBAN of the beneficiary. Note that when you perform a transfer between your own accounts, you can't use a virtual IBAN.

      Format should match the following pattern: [A-Z]{2}[0-9]{2}[a-zA-Z0-9]{1,30}.

    • local_iban string Required

      Existing IBAN to be used as the source of the transfer. Can be the main IBAN of an account or a virtual IBAN. Note that when you perform a transfer between your own accounts, you can't use a virtual IBAN.

      Format should match the following pattern: [A-Z]{2}[0-9]{2}[a-zA-Z0-9]{1,30}.

    • Determines whether to use an instant transfer (available in a few seconds on the beneficiary account), or a standard transfer (1-3 business days). By default, try to perform an instant transfer if possible for this beneficiary, and use a standard transfer otherwise.

      Values are standard_only, instant_only, or instant_if_available. Default value is instant_if_available.

    • scheduled_date string(date)

      The ISO8601 formatted date on which the transfer will be executed. This date must not be in the past. If not set, the transfer is executed immediately. Setting this date is incompatible with instant_only strategy.

    • message string

      Message attached to this transfer, visible to all involved parties.

    • Unique identification to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. It can be used for reconciliation or to link tasks relating to the transaction.

      Minimum length is 1, maximum length is 35. Format should match the following pattern: [a-zA-Z0-9\-\?\:\(\)\.\,\'\+\ ]{1,35}.

    • Internal note attached to this transfer, visible only in your Memo Bank workspace.

    • Custom identifier that will be attached to the transaction resulting from this transfer. It will not be transmitted nor visible in your Memo Bank workspace. It can only be retrieved or used to search for transactions via Memo Bank API.

      Minimum length is 1, maximum length is 256.

    • Custom metadata that will be attached to the transaction resulting from this transfer. It will not be transmitted nor visible in your Memo Bank workspace and can only be retrieved via API.

      Minimum length is 1, maximum length is 2048.

Responses

  • 200 application/json

    OK

    Hide response attributes Show response attributes object
    • id string(uuid) Required

      ID of the bulk.

    • transfers_total integer(int32) Required

      Total number of transfers in the bulk.

    • transfers_confirmed integer(int32) Required

      Number of transfers that were processed and confirmed.

    • transfers_canceled integer(int32) Required

      Number of transfers canceled before processing.

    • transfers_failed integer(int32) Required

      Number of transfers that were processed and failed.

    • status string Required

      Aggregated status of the bulk.

      Values are pending or completed.

POST /v2/transfers/bulks
curl \
 -X POST https://api.memo.bank/v2/transfers/bulks \
 -H "Authorization: Bearer $ACCESS_TOKEN" \
 -H "Content-Type: application/json" \
 -d '{"transfers":[{"amount":500,"beneficiary_name":"John Doe","beneficiary_iban":"FR2512739000308553756377J95","local_iban":"FR6430003000509825397888D64","type_strategy":"instant_if_available","scheduled_date":"2022-12-05","message":"invoice no12345","end_to_end_id":"b0bfb42baa2642c2af0ca3e880fcd590","internal_note":"phone bill","custom_id":"637406efda8534de8c0e","custom_metadata":"This is some metadata"}]}'
Request example
{
  "transfers": [
    {
      "amount": 500,
      "beneficiary_name": "John Doe",
      "beneficiary_iban": "FR2512739000308553756377J95",
      "local_iban": "FR6430003000509825397888D64",
      "type_strategy": "instant_if_available",
      "scheduled_date": "2022-12-05",
      "message": "invoice no12345",
      "end_to_end_id": "b0bfb42baa2642c2af0ca3e880fcd590",
      "internal_note": "phone bill",
      "custom_id": "637406efda8534de8c0e",
      "custom_metadata": "This is some metadata"
    }
  ]
}
Response examples (200)
{
  "id": "fe98f29d-5165-45ff-83f9-d7aa83e970b5",
  "transfers_total": 3000,
  "transfers_confirmed": 1552,
  "transfers_canceled": 2,
  "transfers_failed": 57,
  "status": "pending"
}