Sending Anchor Onboarding

This section aims to help Sending Anchors (capable of initiating cross-border payments) to onboard with Bitso's Receiving Anchor services; it presents the following items:

Requirements

Sending Anchors must comply with the following:

  • It is a legal requirement that the Sending Anchors' Legal Entity goes through Bitso's regular business onboarding and KYC.
  • Sending Anchors must have a Money Services Business (MSB) or equivalent license to comply with Anti-Money Laundering and Counter-Terrorism Financing (AML/CTF) requirements.
  • Sending Anchors must provide Bitso with their Omnibus Stellar Public Key so that Bitso can include it in an allowlist. The service uses this key for authentication in production (public net). Only anchors included in the allowlist can use Bitso's Receiving Anchor services. In non-production environments, the service does not make use of an allowlist.
  • To use the services in production, Sending Anchors must finish their KYC process and sign a legal agreement for using Bitso's Stellar Anchor services.

Important Information

Take the following into consideration when using Bitso's Receiving Anchor services:

  • Bitso's Anchor URLs are as follows:
  • Refunds for failed transactions might happen. The service returns them to the Stellar account that sent the on-chain assets. Additionally, it updates the transaction status accordingly, along with the refund transaction ID and memo. Bitso auto-generates the refund memo.
  • Currently, conversions have fixed fees at 1.5%. The provided exchange rates include the fee cost. No discrimination is in place yet.
  • Creating quotes is optional. The service supports the following types:
    • Indicative Quotes: Sending Anchors may –or may not– request conversion rates through the SEP-38/get-prices endpoint before sending transactions. Notice that these are indicative prices of available off-chain assets in exchange for a Stellar asset and vice versa; the actual exchange price is calculated at conversion time as soon as the funds from a user arrive.
    • Firm Quotes: Sending Anchors must request conversion quotes for a pair of Stellar and off-chain assets through the SEP-38/post-quote endpoint before sending transactions. Be aware of the following factors when using firm quotes:
      • They have an expiration time, and within this period, the service must send and confirm the transaction on the blockchain, run it through our Circle partner, and process it on Bitso's backend. As a result, end users have a shorter quote expiration time available than the one APIs usually provide. Quotes expire in 15 seconds.
      • If Bitso receives Stellar-blockchain transactions after the quote expires, the conversion likely fails and is refunded.
  • Bitso's Receiving Anchor services do not require sending and receiving users to be onboarded Bitso account holders.

KYC Fields

Sending Anchors are responsible for the sender and recipient users' KYC process. Bitso's Receiving Anchor services require the KYC fields listed below to register sender and recipient users. For receiving users, the fields change according to their country of residence, and the service currently supports paying out transfers in Mexico, Colombia, and Argentina.

Sending User

Customer Type: sending_user

{
    "status": "NEEDS_INFO",
    "fields": {
        "id_country_code": {
            "description": "country issuing passport or photo ID as ISO 3166-1 alpha-3 code",
            "type": "string",
            "optional": false
        },
        "id_number": {
            "description": "Passport or ID number",
            "type": "string",
            "optional": false
        },
        "address": {
            "description": "Entire address (country, state, postal code, street address, etc...) as a multi-line string",
            "type": "string",
            "optional": false
        },
        "email_address": {
            "description": "Email address",
            "type": "string",
            "optional": false
        },
        "address_country_code": {
            "description": "country code for current address",
            "type": "string",
            "optional": false
        },
        "birth_date": {
            "description": "Date of birth, e.g. 1976-07-04",
            "type": "date",
            "optional": false
        },
        "birth_place": {
            "description": "Place of birth (city, state, country; as on passport)",
            "type": "string",
            "optional": true
        },
        "last_name": {
            "description": "Family or last name",
            "type": "string",
            "optional": false
        },
        "id_type": {
            "description": "Government issued ID",
            "type": "string",
            "optional": false,
            "choices": [
                "Passport",
                "Drivers License",
                "State ID"
            ]
        },
        "first_name": {
            "description": "Given or first name",
            "type": "string",
            "optional": false
        }
    }
}

Receiving Users

The Customer Type for the different jurisdictions supported is as follows:

  • Mexico: receiving_user
  • Colombia: receiving_user_col
  • Argentina: receiving_user_arg
{
    "status": "NEEDS_INFO",
    "fields": {
        "email_address": {
            "description": "Email address",
            "type": "string",
            "optional": false
        },
        "clabe_number": {
            "description": "Bank account number for Mexico",
            "type": "string",
            "optional": false
        },
        "last_name": {
            "description": "Family or last name",
            "type": "string",
            "optional": false
        },
        "first_name": {
            "description": "Given or first name",
            "type": "string",
            "optional": false
        }
    }
}
{
    "status": "NEEDS_INFO",
    "fields": {
        "bank_account_number": {
            "description": "Number identifying bank account",
            "type": "string",
            "optional": false
        },
        "bank_number": {
            "description": "Number identifying bank in national banking system (routing number in US)",
            "type": "string",
            "optional": false
        },
        "id_number": {
            "description": "Passport or ID number",
            "type": "string",
            "optional": false
        },
        "email_address": {
            "description": "Email address",
            "type": "string",
            "optional": false
        },
        "last_name": {
            "description": "Family or last name",
            "type": "string",
            "optional": false
        },
        "id_type": {
            "description": "Government issued ID",
            "type": "string",
            "optional": false,
            "choices": [
                "CC",
                "CE",
                "NIT",
                "PASS"
            ]
        },
        "bank_account_type": {
            "description": "Bank Account Type",
            "type": "string",
            "optional": false
        },
        "first_name": {
            "description": "Given or first name",
            "type": "string",
            "optional": false
        }
    }
}
{
    "status": "NEEDS_INFO",
    "fields": {
        "email_address": {
            "description": "Email address",
            "type": "string",
            "optional": false
        },
        "cbu_number": {
            "description": "Bank account number for Argentina, could hold a cbu or a cvu",
            "type": "string",
            "optional": false
        },
        "last_name": {
            "description": "Family or last name",
            "type": "string",
            "optional": false
        },
        "first_name": {
            "description": "Given or first name",
            "type": "string",
            "optional": false
        }
    }
}