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 {
  # get transfer
  transfer(
    transfer_id: UUID!
  ): Transfer

  # get all transfers for an organization
  transfers(
    search_terms: String # optional
    listFilter: ListFilter
  ): [Transfer]

  transferReceipt(
    transfer_id: UUID!
  ): TransferReceipt

  subAccount(
    sub_account_id: UUID!
  ): SubAccount
}

type Mutation {
  # create transfer
  createTransfer(
    user_id: UUID!
    # must be verified
    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
    # must be verified
    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

  # update transfer
  updateTransfer(
    transfer_id: UUID!
    user_id: UUID!
    entity_id: UUID # must be verified
    source_currency: ISO4217
    wallet_id: UUID
    beneficiary_id: UUID
    purpose_of_payment: String
    reference: String
  ): UUID @verified

  # get rate for transfer. This step can be skipped
  getTransferQuote(
    transfer_id: UUID!
    # you can use this to update the source amount after create
    source_amount: String
    # you can use this to update the destination amount after create
    destination_amount: String
  ): TransferQuote

  # finalize transfer. Rate will automatically be set if getTransferQuote was not used
  finalizeTransfer(transfer_id: UUID!): UUID

  # required before incoming transfer can be initiated
  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
}