Schema

Transfer Attributes

AttributeTypeDefinitionExample
idUUIDunique id of the transfer
stateStringsee above for states and definitionsprocessing
userUserAccountuser object{ ... }
beneficiaryBeneficiarybeneficiary object{ ... }
entityEntityentity object{ ... }
feeStringfee of transfer in source currency1.50
source_amountStringnumerical amount of the currency funding the payment100.00
source_currencyString3 character code of currency funding the paymentUSD
destination_amountStringnumerical amount of currency sent to beneficiary2000.00
destination_currencyString3 character code of currency sent to beneficiaryMXN
purpose_of_paymentStringfree form text describing purpose of the paymentContractor services
rateStringthe forward rate of the trade used to convert funds20.00000
referenceStringfree form text memo on payment which can be read by beneficiaryInvoice-001
created_dateDateTimedate & time the record was created2021-04-02 00:00:00
expected_delivery_dateDateTimedate the receiving bank is expected to receive the funds2021-04-04 00:00:00
errorStringif the transfer was returned or failed, this might show a returning/failing reasonThe transaction is rejected as the beneficiary is blacklisted.
funding_instructionsFundingInstructionsbank details to fund wallet for transfer{ ... }

GraphQL

enum TransferStates {
  accepted
  finalized
  initiated
  processing
  sent
  completed
  failed
  returned
  canceled
  scheduled
  in_review
}

enum IncomingTransferPurposeOfPayment {
  corporate_payment
  marketplace
  professional_services
  payroll
  expenses_reimbursement
  representation_expenses
  hired_personnel
  trainees_scholarships
  productivity_or_quality_prizes
  lay_off_payment
  family_support
  education
  gift_and_other_donations
  medical_treatment
  maintenance_or_other_expenses
  car_driver
  software_license
  hotel_accommodation
  advertising_and_or_public_relations_related_expenses
  fees_for_advisory_or_consulting_service
  business_related_insurance_payment
  insurance_claims_payment
  delivery_fees
  payments_for_exported_goods
  payment_of_loans
  residential_property_purchase
  property_rental_payment
  royalty_trademark_patent_and_copyright_fees
  investment_in_shares
  fund_investment
  tuition_fees
  transportation_fees
  utility_bills
  personal_transfer
  payment_of_salary
  other_purposes
  remittances
  freelancer_payment
}

type Transfer {
  id: UUID!
  state: TransferStates! # see States section for values and descriptions
  user: UserAccount!
  creator: UserAccount!
  beneficiary: Beneficiary!
  entity: Entity!
  fee: String
  source_amount: String
  source_currency: ISO4217!
  destination_amount: String
  destination_currency: ISO4217!
  purpose_of_payment: String!
  rate: String
  reference: String
  created_date: DateTime
  expected_delivery_date: DateTime
  funding_instructions: FundingInstructions
  wallet: Wallet
  is_scheduled: Boolean
  scheduled_delivery_date: DateTime
  error: String
}

type TransferQuote {
  rate: String!
  inverted_rate: String!
  source_amount: String
  destination_amount: String
  source_currency: ISO4217!
  destination_currency: ISO4217!
  fee: String
}

type TransferReceipt {
  transfer_id: UUID!
  link: String
  link_expiration: DateTime
  includes_tracking: Boolean
}

type IncomingTransferAccount {
  id: UUID!
  organization_id: UUID
  entity: Entity
  wallet: Wallet
  currency: ISO4217
  account_number: BankAccountNumber
  name_on_bank_account: String
  nicename_on_bank_account: String
  bank_name: String
  state: IncomingTransferState
  tax_id: TaxNumber
  purpose_of_payment: IncomingTransferPurposeOfPayment
  updated_date: DateTime
  country_code: String
  tax_code: String
  remittance_info: String
  reference: String
}

type IncomingTransfer {
  id: UUID
  uuid: UUID
  organization_id: UUID
  entity_id: UUID
  wallet_id: UUID
  currency: ISO4217
  credit: Boolean
  debit: Boolean
  amount: String!
  transaction_date: DateTime
  remittance_info: String
  reference: String
  counterparty_name: String
  account_number: BankAccountNumber
  name_on_bank_account: String
  nicename_on_bank_account: String
  state: IncomingTransferState
  tax_id: TaxNumber
  purpose_of_payment: IncomingTransferPurposeOfPayment
  updated_date: DateTime
  incoming_transfer_account: IncomingTransferAccount
  virtual_account_name: String
  created_date: DateTime
  incoming_transfer_account_id: UUID
  incoming_transfer_account_name_on_bank_account: String
  incoming_transfer_account_bank_name: String
}

type SubAccount {
  id: UUID
  created_date: DateTime
  organization_id: UUID
  entity: Entity
  currency: ISO4217
  balance: String
  available_balance: String
  account_name: String
  client_friendly_name: String
  account_number: String
  master_account_number: String
  updated_date: DateTime
  state: String
  funding_instructions: FundingInstructions
}

enum IncomingTransferState {
  accepted
  awaiting_funds
  complete
  canceled
  declined
}

type Query {
  transfer(
    transfer_id: UUID!
  ): Transfer

  transfers(
    search_terms: String # optional
    listFilter: ListFilter
  ): [Transfer]

  transferReceipt(
    transfer_id: UUID!
  ): TransferReceipt

  subAccount(
    sub_account_id: UUID!
  ): SubAccount
}

type Mutation {
  createTransfer(
    user_id: UUID!
    entity_id: UUID!
    source_amount: String
    wallet_id: UUID
    destination_amount: String
    beneficiary_id: UUID!
    purpose_of_payment: String!
    reference: String
  ): UUID

  createScheduledTransfer(
    user_id: UUID
    entity_id: UUID!
    source_amount: String
    wallet_id: UUID
    destination_amount: String
    beneficiary_id: UUID!
    purpose_of_payment: String!
    reference: String
    scheduled_delivery_date: DateTime
  ): UUID

  updateTransfer(
    transfer_id: UUID!
    user_id: UUID!
    entity_id: UUID
    source_currency: ISO4217
    wallet_id: UUID
    beneficiary_id: UUID
    purpose_of_payment: String
    reference: String
  ): UUID @verified

  getTransferQuote(
    transfer_id: UUID!
    source_amount: String
    destination_amount: String
  ): TransferQuote

  finalizeTransfer(transfer_id: UUID!): UUID

  createIncomingTransferAccount(
    entity_id: UUID!
    wallet_id: UUID!
    currency: ISO4217!
    account_number: BankAccountNumber!
    account_type: String
    name_on_bank_account: String!
    nicename_on_bank_account: String
    bank_name: String!
    bank_code: String!
    state: IncomingTransferState
    tax_id: TaxNumber!
    purpose_of_payment: IncomingTransferPurposeOfPayment
    remittance_info: String
    reference: String
    account_number_type: String
    email: String!
  ): UUID

  createIncomingTransfer(
    amount: String!
    incoming_transfer_account_id: UUID!
    purpose_of_payment: IncomingTransferPurposeOfPayment
    remittance_info: String
    reference: String
  ): UUID
}