Skip to content

Weavr Multi Product API (3.63.5)

Weavr Multi API provides a simple and flexible way to issue cards and accounts to your customers.

By integrating Weavr Multi API in your application you can embed banking capabilities within your app and provide a seamless experience for your customers.

Authentication

Each request to the Multi API must include an api-key that represents your account. You can obtain an API Key by registering for a Multi account here.

Almost all endpoints require a secondary authentication token auth_token that represents the user for whom the request is being executed.

Download OpenAPI description
Overview
Languages
Servers
Mock server
https://api.weavr.io/_mock/products/multi/openapi
Weavr Sandbox Environment
https://sandbox.weavr.io/multi

Access

Manage authentication for your users.

Operations

Passwords

Manage your users' passwords.

Operations

Authentication Factors

Operations

Step-up Challenges

Operations

Confirmation Challenges

Operations

Corporates

Corporates are identities representing companies. Once on-boarded, Corporates can create and manage their own instruments via your application.

Operations

Consumers

Consumers are identities representing individuals. Once on-boarded, Consumers can create and manage their own instruments via your application.

Operations

Authorised Users

Corporate and Consumer identities can invite authorised users to access their account. Once on-boarded, authorised users can create and manage instruments and transactions on behalf of the identity they are on-boarded with.

In case of Corporate Identities, authorised users are typically employees who have access to company's banking products such as cards and bank accounts.

In case of Consumer Identities, authorised users are typically children/teens whose parents want them to have access to banking products such as cards and bank accounts.

Note that the /users GET endpoints return all users including root users. However, modification operations (create, update, activate, deactivate) on /users endpoints only apply to authorised users. To modify root user details, use the respective /consumers or /corporates endpoints.

Operations

Beneficiaries

Operations

Managed Accounts

Managed Accounts are a type of financial instrument offered by Weavr.

They hold funds for their owner, and can be upgraded to IBANs so as to receive and send funds to instruments outside of the Weavr Platform, via Wire Transfers.

Managed accounts can also be used as source and destination instruments in the transfer and send transactions.

Operations

Managed Cards

Managed Cards are a type of financial instrument offered by Weavr.

You can create virtual or physical cards that are issued to the consumer or corporate identity.

A card created in prepaid mode has its own balance, whereas a card created in debit mode does not have its own balance but taps into the balance of its parent managed account.

Operations

Linked Accounts

Linked Accounts are external bank accounts that users connect to their profiles within the Weavr Platform.

These accounts allow users to link their existing bank accounts, held at external financial institutions, to the Weavr Platform, enabling secure and efficient transfer of funds between their own accounts.

Linked Accounts are designed to streamline the process of moving money between a user’s various bank accounts, providing a convenient and integrated way to manage personal finances across different financial institutions.

Operations

Sends

The Send transaction is used to send funds between managed accounts and managed cards belonging to different identities.

Operations

Transfers

The Transfer transaction is used to transfer funds between managed accounts and managed cards belonging to same identity.

Operations

Outgoing Wire Transfers

The Outgoing Wire Transfer transaction is used to transfer funds from managed accounts to an external bank account.

Operations

Confirm an outgoing wire transfer transaction

Request

Confirm the outgoing wire transfer identified by the id path parameter.

Security
auth_token and api-key
Path
idstring^[0-9]+$required

The unique identifier of the Outgoing Wire Transfer transaction.

curl -i -X POST \
  'https://api.weavr.io/_mock/products/multi/openapi/outgoing_wire_transfers/{id}/confirm' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

Success

Headers
request-refstringrequired

A request identifier. Providing this reference when contacting our support team will help us investigate your query.

Bodyapplication/json
idstring^[0-9]+$required

The unique identifier of an Outgoing Wire Transfer transaction.

profileIdstring(ProfileId)^[0-9]+$required

The profile Id which a specific identity, instrument or transaction type is linked to.

Profiles contain configuration and determine behavioral aspects of the newly created transaction, for example, fees that may apply.

You can have one or more profiles linked to your application, and these can be used to drive different behaviors according to your product's needs.

Profile Ids can be found in the Multi Portal, in the API Credentials page.

tagstring(Tag)<= 50 characters^[a-zA-Z0-9_-]+$

The tag field is a custom field that can be used to search and filter.

sourceInstrumentobjectrequired

The source managed account from where the funds were taken.

sourceInstrument.​typestringrequired
Value"managed_accounts"
sourceInstrument.​idstring^[0-9]+$required
transferAmountobject(CurrencyAmount)required

The amount, in same currency as source and destination, that was transferred from the source.

transferAmount.​currencystring(Currency)= 3 characters^[A-Z]*$required

The currency expressed in ISO-4217 code. Example: GBP, EUR, USD.

transferAmount.​amountinteger(int64)required

The monetary amount, scaled to the lowest denomination of the currency.

Example, an amount of 1000 for a EUR currency is actually 1000 Euro cents or EUR 10.00.

descriptionstring<= 50 characters

Transaction description.

typestring(OutgoingWireTransferType)

The wire transfer rails used, from SEPA, Faster Payments or SWIFT.

Enum"SEPA""FASTER_PAYMENTS""SWIFT"
destinationOutgoingWireTransferBeneficiary (object) or BeneficiaryId (object) or ExternalAccountId (object)
One of:

Details of the beneficiary of the outgoing wire transfer.

statestring(OutgoingWireTransferState)required

The state of the Outgoing wire transfer transaction, as follows:

  • INVALID: The wire transfer has failed initial validation checks.
  • PENDING_CHALLENGE: The wire transfer requires the completion of a transaction confirmation challenge before it can be submitted.
  • SUBMITTED: The wire transfer has been submitted to the sending financial institution for processing.
  • REJECTED: The wire transfer that was submitted was rejected.
  • APPROVED: The wire transfer that was submitted has been approved and is being processed by the sending financial institution.
  • FAILED: There was an issue with the wire transfer, and the transaction has failed.
  • COMPLETED: The requested funds have been sent from the source instrument.
  • RETURNED: The wire transfer has been returned to the sender.
  • SCHEDULED: The wire transfer will be executed at the scheduled time.
  • CANCELLED: The scheduled wire transfer has been cancelled.
  • PENDING_CONFIRMATION: The wire transfer requires a manual confirmation by the user before proceeding.
Enum"INVALID""PENDING_CHALLENGE""SUBMITTED""REJECTED""APPROVED""FAILED""COMPLETED""RETURNED""SCHEDULED""CANCELLED"
rejectedInfostring(OutgoingWireTransferRejectedInfo)

Additional info when the outgoing wire transfer has been rejected, as follows:

  • SYSTEM: The wire transfer was rejected by the system.
  • USER: The wire transfer was rejected by the user.
Enum"SYSTEM""USER"
challengeExemptionReasonstring(ChallengeExemptionReason)

The Reason the transaction was exempted from SCA verification

Enum"LOW_VALUE""TRUSTED_BENEFICIARY"
creationTimestampinteger(int64)required

The time when the transaction was created, expressed in Epoch timestamp using millisecond precision.

scheduledTimestampstring(ScheduledTimestamp)^[0-9]+$

The epoch timestamp at which the transaction is scheduled to be executed.

executionTimestampstring(ExecutionTimestamp)^[0-9]+$

The epoch timestamp at which the transaction was executed, transitioning to a final state such as COMPLETED, REJECTED, or FAILED.

cancellationReasonstring(TransactionCancellationReason)<= 50 characters^[ a-zA-Z0-9_-]+$

The reason the scheduled transaction was cancelled.

validationOutcomesArray of objects(OutgoingWireTransferValidationOutcome)
Response
application/json
{ "id": "string", "profileId": "string", "tag": "string", "sourceInstrument": { "type": "managed_accounts", "id": "string" }, "transferAmount": { "currency": "str", "amount": 0 }, "description": "string", "type": "SEPA", "destination": { "name": "string", "type": "PERSONAL", "address": "string", "bankName": "string", "bankAddress": "string", "bankCountry": "st", "bankAccountDetails": { … }, "nationality": "st", "dateOfBirth": "2019-08-24" }, "state": "INVALID", "rejectedInfo": "SYSTEM", "challengeExemptionReason": "LOW_VALUE", "creationTimestamp": 0, "scheduledTimestamp": "string", "executionTimestamp": "string", "cancellationReason": "string", "validationOutcomes": [ { … } ] }

Create a bulk of outgoing wire transfer transactionsDeprecated

Request

Deprecated in favour of the Operations in Bulk.

Transfers funds from multiple managed accounts to multiple external bank accounts.

The Outgoing Wire Transfer Profile (configured in the Multi Portal) specified determines the behaviour and restrictions of the transaction (for example, fees).

Note that even if the transaction is created successfully, you still need to check its state in order to determine if it is pending completion of an authentication challenge by the user.

Security
auth_token and api-key
Headers
idempotency-refstring

A unique call reference generated by the caller that, taking into consideration the payload as well as the operation itself, helps avoid duplicate operations. Idempotency reference uniqueness is maintained for at least 24 hours.

Bodyapplication/jsonrequired
outgoingWireTransfersArray of objects(OutgoingWireTransferCreateRequest)required

The object representing the outgoing wire transfers' details.

outgoingWireTransfers[].​profileIdstring(ProfileId)^[0-9]+$required

The profile Id which a specific identity, instrument or transaction type is linked to.

Profiles contain configuration and determine behavioral aspects of the newly created transaction, for example, fees that may apply.

You can have one or more profiles linked to your application, and these can be used to drive different behaviors according to your product's needs.

Profile Ids can be found in the Multi Portal, in the API Credentials page.

outgoingWireTransfers[].​tagstring(Tag)<= 50 characters^[a-zA-Z0-9_-]+$

The tag field is a custom field that can be used to search and filter.

outgoingWireTransfers[].​sourceInstrumentobjectrequired

The managed account from which funds will be collected.

outgoingWireTransfers[].​sourceInstrument.​typestringrequired
Value"managed_accounts"
outgoingWireTransfers[].​sourceInstrument.​idstring^[0-9]+$required
outgoingWireTransfers[].​transferAmountobject(CurrencyAmount)required

The amount, in same currency as source and destination, that was transferred from the source.

outgoingWireTransfers[].​transferAmount.​currencystring(Currency)= 3 characters^[A-Z]*$required

The currency expressed in ISO-4217 code. Example: GBP, EUR, USD.

outgoingWireTransfers[].​transferAmount.​amountinteger(int64)required

The monetary amount, scaled to the lowest denomination of the currency.

Example, an amount of 1000 for a EUR currency is actually 1000 Euro cents or EUR 10.00.

outgoingWireTransfers[].​descriptionstring

These details are passed to the beneficiary as the reference . This field is mandatory for wire transfers executed over SEPA. The allowed length is dependent on the payment type:

SEPA <= 35 characters. An extended character set is accepted to cater for all European languages. If SEPA does not support a particular character, it is automatically converted to an acceptable alternative, in line with SEPA scheme guidance.

Faster Payments <= 18 characters

outgoingWireTransfers[].​destinationBeneficiaryOutgoingWireTransferBeneficiary (object) or BeneficiaryId (object) or ExternalAccountId (object)required
One of:

Details of the beneficiary of the outgoing wire transfer.

outgoingWireTransfers[].​destinationBeneficiary.​namestringrequired

The beneficiary's full name. The allowed length and pattern is dependent on the bank account details type:

IBANDetails: >= 1 character and <= 150 characters. An extended character set is accepted to cater for all European languages. If SEPA does not support a particular character, it is automatically converted to an acceptable alternative, in line with SEPA scheme guidance.

FasterPaymentsBankDetailsOrBACSBankDetails: >= 1 character and <= 140 characters with a pattern of ^[a-zA-Z0-9\/\-?:().,’+\s#=!"%&*<>;\{@\r\n]*$ (please note that the ’ symbol is the unicode value U+2019 (right single quotation mark) and not the unicode value U+0027 (apostrophe))

outgoingWireTransfers[].​destinationBeneficiary.​typestring

The type of beneficiary account. Required only when FasterPaymentsBankDetailsOrBACSBankDetails are specified

Enum"PERSONAL""BUSINESS"
outgoingWireTransfers[].​destinationBeneficiary.​addressstring[ 1 .. 150 ] characters

The beneficiary’s address. For SEPA, an extended character set is accepted to cater for all European languages. If SEPA does not support a particular character, it is automatically converted to an acceptable alternative, in line with SEPA scheme guidance.

outgoingWireTransfers[].​destinationBeneficiary.​bankNamestring

The beneficiary's bank name.

outgoingWireTransfers[].​destinationBeneficiary.​bankAddressstring[ 1 .. 150 ] characters

The beneficiary's bank address.

outgoingWireTransfers[].​destinationBeneficiary.​bankCountrystring= 2 characters^[A-Z]{2}$

The beneficiary's bank country in ISO 3166 alpha-2 format.

outgoingWireTransfers[].​destinationBeneficiary.​bankAccountDetailsIBANDetails (object) or FasterPaymentsBankDetailsOrBACSBankDetails (object)required

Details of the beneficiary bank account, depending on the type of transfer chosen.

One of:

Bank details used in case the wire transfer is executed over SEPA or RIX

outgoingWireTransfers[].​destinationBeneficiary.​bankAccountDetails.​ibanstring[ 15 .. 34 ] characters^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$required

International Bank Account Number, required for wire transfer over SEPA or RIX

outgoingWireTransfers[].​destinationBeneficiary.​bankAccountDetails.​bankIdentifierCodestring[ 8 .. 11 ] characters^[a-zA-Z0-9]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}[a-zA...

BIC, for wire transfer over SEPA or RIX

outgoingWireTransfers[].​destinationBeneficiary.​nationalitystring(Nationality)= 2 characters^[A-Z]+$

Nationality of the user - using ISO 3166 alpha-2.

outgoingWireTransfers[].​destinationBeneficiary.​dateOfBirthstring(date)(DateOfBirth)

The date of birth in ISO 8601 format (YYYY-MM-DD).

outgoingWireTransfers[].​scheduledTimestampstring(ScheduledTimestamp)^[0-9]+$

The epoch timestamp at which the transaction is scheduled to be executed.

curl -i -X POST \
  https://api.weavr.io/_mock/products/multi/openapi/outgoing_wire_transfers/bulk/create \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE' \
  -H 'idempotency-ref: string' \
  -d '{
    "outgoingWireTransfers": [
      {
        "profileId": "string",
        "tag": "string",
        "sourceInstrument": {
          "type": "managed_accounts",
          "id": "string"
        },
        "transferAmount": {
          "currency": "str",
          "amount": 0
        },
        "description": "string",
        "destinationBeneficiary": {
          "name": "string",
          "type": "PERSONAL",
          "address": "string",
          "bankName": "string",
          "bankAddress": "string",
          "bankCountry": "st",
          "bankAccountDetails": {
            "iban": "stringstringstr",
            "bankIdentifierCode": "stringst"
          },
          "nationality": "st",
          "dateOfBirth": "2019-08-24"
        },
        "scheduledTimestamp": "string"
      }
    ]
  }'

Responses

Success

Headers
request-refstringrequired

A request identifier. Providing this reference when contacting our support team will help us investigate your query.

Bodyapplication/json
responseArray of objectsrequired
response[].​idstring^[0-9]+$

The unique identifier of an outgoing wire transfer transaction.

response[].​profileIdstring(ProfileId)^[0-9]+$required

The profile Id which a specific identity, instrument or transaction type is linked to.

Profiles contain configuration and determine behavioral aspects of the newly created transaction, for example, fees that may apply.

You can have one or more profiles linked to your application, and these can be used to drive different behaviors according to your product's needs.

Profile Ids can be found in the Multi Portal, in the API Credentials page.

response[].​tagstring(Tag)<= 50 characters^[a-zA-Z0-9_-]+$

The tag field is a custom field that can be used to search and filter.

response[].​sourceInstrumentobjectrequired

The managed account from which funds will be collected.

response[].​sourceInstrument.​typestringrequired
Value"managed_accounts"
response[].​sourceInstrument.​idstring^[0-9]+$required
response[].​transferAmountobject(CurrencyAmount)required

The amount, in same currency as source and destination, that was transferred from the source.

response[].​transferAmount.​currencystring(Currency)= 3 characters^[A-Z]*$required

The currency expressed in ISO-4217 code. Example: GBP, EUR, USD.

response[].​transferAmount.​amountinteger(int64)required

The monetary amount, scaled to the lowest denomination of the currency.

Example, an amount of 1000 for a EUR currency is actually 1000 Euro cents or EUR 10.00.

response[].​descriptionstring

These details are passed to the beneficiary as the reference . This field is mandatory for wire transfers executed over SEPA. The allowed length is dependent on the payment type:

SEPA <= 35 characters. An extended character set is accepted to cater for all European languages. If SEPA does not support a particular character, it is automatically converted to an acceptable alternative, in line with SEPA scheme guidance.

Faster Payments <= 18 characters

response[].​destinationBeneficiaryOutgoingWireTransferBeneficiary (object) or BeneficiaryId (object) or ExternalAccountId (object)required
One of:

Details of the beneficiary of the outgoing wire transfer.

response[].​destinationBeneficiary.​namestringrequired

The beneficiary's full name. The allowed length and pattern is dependent on the bank account details type:

IBANDetails: >= 1 character and <= 150 characters. An extended character set is accepted to cater for all European languages. If SEPA does not support a particular character, it is automatically converted to an acceptable alternative, in line with SEPA scheme guidance.

FasterPaymentsBankDetailsOrBACSBankDetails: >= 1 character and <= 140 characters with a pattern of ^[a-zA-Z0-9\/\-?:().,’+\s#=!"%&*<>;\{@\r\n]*$ (please note that the ’ symbol is the unicode value U+2019 (right single quotation mark) and not the unicode value U+0027 (apostrophe))

response[].​destinationBeneficiary.​typestring

The type of beneficiary account. Required only when FasterPaymentsBankDetailsOrBACSBankDetails are specified

Enum"PERSONAL""BUSINESS"
response[].​destinationBeneficiary.​addressstring[ 1 .. 150 ] characters

The beneficiary’s address. For SEPA, an extended character set is accepted to cater for all European languages. If SEPA does not support a particular character, it is automatically converted to an acceptable alternative, in line with SEPA scheme guidance.

response[].​destinationBeneficiary.​bankNamestring

The beneficiary's bank name.

response[].​destinationBeneficiary.​bankAddressstring[ 1 .. 150 ] characters

The beneficiary's bank address.

response[].​destinationBeneficiary.​bankCountrystring= 2 characters^[A-Z]{2}$

The beneficiary's bank country in ISO 3166 alpha-2 format.

response[].​destinationBeneficiary.​bankAccountDetailsIBANDetails (object) or FasterPaymentsBankDetailsOrBACSBankDetails (object)required

Details of the beneficiary bank account, depending on the type of transfer chosen.

One of:

Bank details used in case the wire transfer is executed over SEPA or RIX

response[].​destinationBeneficiary.​bankAccountDetails.​ibanstring[ 15 .. 34 ] characters^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$required

International Bank Account Number, required for wire transfer over SEPA or RIX

response[].​destinationBeneficiary.​bankAccountDetails.​bankIdentifierCodestring[ 8 .. 11 ] characters^[a-zA-Z0-9]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}[a-zA...

BIC, for wire transfer over SEPA or RIX

response[].​destinationBeneficiary.​nationalitystring(Nationality)= 2 characters^[A-Z]+$

Nationality of the user - using ISO 3166 alpha-2.

response[].​destinationBeneficiary.​dateOfBirthstring(date)(DateOfBirth)

The date of birth in ISO 8601 format (YYYY-MM-DD).

response[].​scheduledTimestampstring(ScheduledTimestamp)^[0-9]+$

The epoch timestamp at which the transaction is scheduled to be executed.

Response
application/json
{ "response": [ { … } ] }

Cancel outgoing wire transfer transactionsDeprecated

Request

Cancels outgoing wire transfers that are scheduled to be executed in the future.

Security
auth_token and api-key
Bodyapplication/jsonrequired
cancellationsArray of objects(TransactionCancelRequest)required

Contains the details of the transactions to be cancelled.

cancellations[].​idstring^[0-9]+$required

The id of the transaction.

cancellations[].​cancellationReasonstring(TransactionCancellationReason)<= 50 characters^[ a-zA-Z0-9_-]+$

The reason the scheduled transaction was cancelled.

curl -i -X POST \
  https://api.weavr.io/_mock/products/multi/openapi/outgoing_wire_transfers/bulk/cancel \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE' \
  -d '{
    "cancellations": [
      {
        "id": "string",
        "cancellationReason": "string"
      }
    ]
  }'

Responses

Success

Headers
request-refstringrequired

A request identifier. Providing this reference when contacting our support team will help us investigate your query.

Bodyapplication/json
cancellationsArray of objects(TransactionCancelResponse)required

Contains the cancellation details for each of the transactions.

cancellations[].​idstring^[0-9]+$required

The id of the transaction.

cancellations[].​statestringrequired
Enum"SUCCESS""ERROR"
cancellations[].​errorCodestring

Indicates the reason why the cancel operation could not be executed. May be included in the response if the state is "ERROR".

  • "GENERIC": A generic error has occurred.
  • "TRANSACTION_NOT_SCHEDULED": The transaction is not in state SCHEDULED.
  • "FORBIDDEN": The current user is not allowed to access this transaction.
  • "NOT_FOUND": The transaction does not exist.
Enum"GENERIC""TRANSACTION_NOT_SCHEDULED""FORBIDDEN""NOT_FOUND"
Response
application/json
{ "cancellations": [ { … } ] }

Incoming Wire Transfers

Webhooks

Operations

Operations

Manage

Operations