Skip to content

Correspondent Bank Transfers

Correspondent bank transfers allow financial institutions to initiate wire transfers on behalf of originators (third parties). These transfers comply with travel rule requirements by capturing and transmitting originator information.

Create a correspondent bank transfer

Request

Creates an outgoing wire transfer on behalf of an originator (correspondent banking).

This endpoint is designed for correspondent banking use cases where a financial institution initiates a wire transfer on behalf of another party (the originator).

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

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
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, <= 50 characters(Tag)^[a-zA-Z0-9_-]+$

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

sourceInstrumentobjectrequired

The managed account from which funds will be collected.

amountobject(CurrencyAmount)required

The amount to transfer.

originatorCorrespondentBankingIndividualOriginator (object) or CorrespondentBankingBusinessOriginator (object)required
One of:

An individual (natural person) originator of the transfer.

Travel Rule Requirements:

  • Mandatory: Full name and account number (via bankAccountDetails)
  • Mandatory: At least one supplementary information type (address + birth details, or address + official ID)
beneficiaryCorrespondentBankingSEPABeneficiary (object) or CorrespondentBankingRIXBeneficiary (object) or CorrespondentBankingFasterPaymentsBeneficiary (object)required
One of:

CBT-specific beneficiary details for SEPA/IBAN wire transfers with Banking Circle FI-to-FI field limits.

purposestring, <= 255 charactersrequired

The purpose of the payment.

descriptionstring, <= 35 characters

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

externalDataArray of objects(CorrespondentBankingExternalData)

Additional external data as key-value pairs.

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

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

curl -i -X POST \
  https://sandbox.weavr.io/multi/correspondent_bank_transfers \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE' \
  -H 'idempotency-ref: string' \
  -d '{
    "profileId": "string",
    "tag": "string",
    "sourceInstrument": {
      "type": "managed_accounts",
      "id": "string"
    },
    "amount": {
      "currency": "str",
      "amount": 0
    },
    "originator": {
      "tag": "string",
      "name": "string",
      "address": "string",
      "country": "st",
      "bankAccountDetails": {
        "account": "string",
        "financialInstitution": "stringst"
      },
      "supplementaryInformation": {
        "documentType": "NATIONAL_ID",
        "documentNumber": "string"
      }
    },
    "beneficiary": {
      "name": "string",
      "iban": "stringstringstr",
      "bankIdentifierCode": "stringst",
      "address": "string",
      "bankName": "string",
      "bankAddress": "string",
      "bankCountry": "st",
      "nationality": "st",
      "dateOfBirth": "2019-08-24"
    },
    "purpose": "string",
    "description": "string",
    "externalData": [
      {
        "name": "string",
        "value": "string"
      }
    ],
    "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
idstring^[0-9]+$required

The unique identifier of the Correspondent Banking OWT.

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, <= 50 characters(Tag)^[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.

amountobject(CurrencyAmount)required

The amount transferred.

originatorCorrespondentBankingIndividualOriginator (object) or CorrespondentBankingBusinessOriginator (object)required
One of:

An individual (natural person) originator of the transfer.

Travel Rule Requirements:

  • Mandatory: Full name and account number (via bankAccountDetails)
  • Mandatory: At least one supplementary information type (address + birth details, or address + official ID)
beneficiaryCorrespondentBankingSEPABeneficiary (object) or CorrespondentBankingRIXBeneficiary (object) or CorrespondentBankingFasterPaymentsBeneficiary (object)required
One of:

CBT-specific beneficiary details for SEPA/IBAN wire transfers with Banking Circle FI-to-FI field limits.

purposestring, <= 255 charactersrequired

The purpose of the payment.

descriptionstring, <= 35 characters

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

externalDataArray of objects(CorrespondentBankingExternalData)

Additional external data as key-value pairs.

statestring(CorrespondentBankingOwtState)required

The state of the correspondent bank transfer transaction, as follows:

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

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

The reason the scheduled transaction was cancelled.

validationOutcomesArray of objects(CorrespondentBankingOwtValidationOutcome)
Response
{ "id": "string", "profileId": "string", "tag": "string", "sourceInstrument": { "type": "managed_accounts", "id": "string" }, "amount": { "currency": "str", "amount": 0 }, "originator": { "tag": "string", "name": "string", "address": "string", "country": "st", "bankAccountDetails": {}, "supplementaryInformation": {} }, "beneficiary": { "name": "string", "iban": "stringstringstr", "bankIdentifierCode": "stringst", "address": "string", "bankName": "string", "bankAddress": "string", "bankCountry": "st", "nationality": "st", "dateOfBirth": "2019-08-24" }, "purpose": "string", "description": "string", "externalData": [ {} ], "state": "INVALID", "creationTimestamp": 0, "scheduledTimestamp": "string", "cancellationReason": "string", "validationOutcomes": [ {} ] }