Borderless Docs
  • Get Started
    • Welcome to Borderless
    • Quick Start
  • About us
    • About us
      • Supported countries
  • Reference
    • API Reference
      • Authentication
      • Users
      • KYC
      • Rates
      • Orders
      • Webhooks
Powered by GitBook
On this page
  1. Get Started

Quick Start

PreviousWelcome to BorderlessNextAbout us

Last updated 1 year ago

Learn how to operate with our API. In this example, the process begins from zero and ends when a user makes a CAD (Canadian Dollar) payment, receiving it in PHP (Philippine peso).

Authenticate yourself

All your request must be authenticated, we will provide the required fields for this step.

Without authenticating yourself first, you won't be able to use our API.


Create a user

We need to know about your user existence.


Create a Form for the user, allowing him to complete the required information.

Before the new user can engage with us, we must verify their identity successfully.

About our KYC form

The user will encounter a form similar to this one and must provide all the necessary information:

After all the information has been provided and submitted, we will proceed to validate it.

Once we successfully validate it, the user will be notified.

If necessary, because we cannot validate the user's information on the first attempt, we will request it again.


Create the order

You will need to know the information required to create the order.

Now, You will create a rate with the amount and currency the user wants to send.

Now, the order can be created.

Once the user completes the payment with their bank, we will proceed to transfer the agreed-upon funds to the receiver's bank.


Please refer to our Webhooks reference to receive orders and KYC notifications. We will notify you when a user has successfully validated their identity and when an order has been paid and processed.

Webhooks

Get a form to register a user KYC

get
Authorizations
Path parameters
kycLevelstring · enumRequired

The KYC Level wanted for the KYC form instance

Possible values:
zonestring · enumRequired

The zone for the KYC form instance

Possible values:
Responses
200
HTML response with the KYC form, used by a user to register their KYC
401
Unauthorized
500
Internal server error
get
GET /kyc/register/{kycLevel}/{zone} HTTP/1.1
Host: 
Authorization: Bearer JWT
Accept: */*

No content

  • Authenticate yourself
  • All your request must be authenticated, we will provide the required fields for this step.
  • POSTObtain your token before start interacting with our API
  • Create a user
  • We need to know about your user existence.
  • POSTCreate a new User
  • Create a Form for the user, allowing him to complete the required information.
  • GETGet a form to register a user KYC
  • About our KYC form
  • Create the order
  • You will need to know the information required to create the order.
  • GETFind order requirements
  • Now, You will create a rate with the amount and currency the user wants to send.
  • POSTCreate a Rate
  • Now, the order can be created.
  • POSTCreate a new Order

Obtain your token before start interacting with our API

post
Body
accessIdstringRequired

Your private access identification

Example: 13lk24jk14j
secretIdstringRequired

Your private access secret identification

Example: A13IAKSPTOLXM1
merchantIdnumberRequired

Your ID

Example: 123
externalClientIdstringOptional

User external client ID

Example: ABCD
Responses
200
Your access token, required to do requests
application/json
500
Internal server error
post
POST /auth HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 97

{
  "accessId": "13lk24jk14j",
  "secretId": "A13IAKSPTOLXM1",
  "merchantId": 123,
  "externalClientId": "ABCD"
}
{
  "accessToken": "=12039124JUKASKNAUJRWRHRNA",
  "expiresIn": 3600,
  "tokenType": "Bearer"
}

Create a new User

post
Authorizations
Body
firstNamestringRequired

User first name

Example: John
lastNamestringRequired

User last name

Example: Doe
emailstringRequired

User email

Example: johndoe@example.com
addressstringRequired

User address

Example: Harcourt 4567
citystringRequired

User city

Example: Toronto
stateProvincestringRequired

User state/province

Example: Ontario
countryCodestringRequired

User ISO 3166 country code

Example: CAN
postalCodestringRequired

User postal code

Example: M4C
Responses
200
Created user
application/json
401
Unauthorized
500
Internal server error
post
POST /user HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 175

{
  "firstName": "John",
  "lastName": "Doe",
  "email": "johndoe@example.com",
  "address": "Harcourt 4567",
  "city": "Toronto",
  "stateProvince": "Ontario",
  "countryCode": "CAN",
  "postalCode": "M4C"
}
{
  "externalClientId": "ABC-123",
  "id": 1
}

Find order requirements

get
Authorizations
Body
sendFiatstring · enumRequired

FIAT currency user wants to send

Example: CADPossible values:
receiveFiatstring · enumRequired

FIAT currency that will be received

Example: PHPPossible values:
Responses
200
Required fields to create an order
application/json
401
Unauthorized
500
Internal server error
get
GET /order/intent HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 38

{
  "sendFiat": "CAD",
  "receiveFiat": "PHP"
}
{
  "rateCode": "A valid rate code provided by the app",
  "senderDetails": {
    "personDetails": {
      "emailAddress": {
        "description": "Email address"
      },
      "firstName": {
        "description": "Family or last name"
      },
      "lastName": {
        "description": "Given or first name"
      },
      "address": {
        "description": "Entire address (country, state, postal code, street address, etc...) as a multi-line string"
      },
      "country": {
        "description": "Name of country"
      },
      "city": {
        "description": "Name of city/town"
      },
      "stateOrProvince": {
        "description": "Name of state/province/region/prefecture"
      },
      "idCountryCode": {
        "description": "Country issuing passport or photo ID as ISO 3166-1 alpha-3 code"
      },
      "postalCode": {
        "description": "Postal or other code identifying user's locale"
      }
    },
    "financialDetails": {
      "bankAccountNumber": {
        "description": "Number identifying bank account"
      },
      "bankCode": {
        "description": "Bank code to determine which bank the funds will arrive at"
      },
      "holderName": {
        "description": "Bank account holder name"
      }
    },
    "orderDetails": {
      "purpose": {
        "description": "Purpose or reason for this transaction"
      },
      "relationshipWithBeneficiary": {
        "description": "Relationship with beneficiary"
      },
      "method": {
        "description": "Method of payment: PAY-TO-ACCOUNT-REAL-TIME or PAY-TO-ACCOUNT-NON-REAL-TIME "
      }
    }
  },
  "receiverDetails": {
    "personDetails": {
      "emailAddress": {
        "description": "Email address"
      },
      "firstName": {
        "description": "Family or last name"
      },
      "lastName": {
        "description": "Given or first name"
      },
      "address": {
        "description": "Entire address (country, state, postal code, street address, etc...) as a multi-line string"
      },
      "country": {
        "description": "Name of country"
      },
      "city": {
        "description": "Name of city/town"
      },
      "stateOrProvince": {
        "description": "Name of state/province/region/prefecture"
      },
      "idCountryCode": {
        "description": "Country issuing passport or photo ID as ISO 3166-1 alpha-3 code"
      },
      "postalCode": {
        "description": "Postal or other code identifying user's locale"
      }
    },
    "financialDetails": {
      "bankAccountNumber": {
        "description": "Number identifying bank account"
      },
      "bankCode": {
        "description": "Bank code to determine which bank the funds will arrive at"
      },
      "holderName": {
        "description": "Bank account holder name"
      }
    },
    "orderDetails": {
      "purpose": {
        "description": "Purpose or reason for this transaction"
      },
      "relationshipWithBeneficiary": {
        "description": "Relationship with beneficiary"
      },
      "method": {
        "description": "Method of payment: PAY-TO-ACCOUNT-REAL-TIME or PAY-TO-ACCOUNT-NON-REAL-TIME "
      }
    }
  }
}

Create a Rate

post
Authorizations
Body
fiatInstring · enumRequired

The FIAT currency to be sent by the user

Example: CADPossible values:
fiatOutstring · enumRequired

The FIAT currency to be received

Example: PHPPossible values:
amountInnumberRequired

The Amount of fiatIn to be sent by the user

Example: 100
Responses
200
The created rate
application/json
401
Unauthorized
500
Internal server error
post
POST /rates HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 47

{
  "fiatIn": "CAD",
  "fiatOut": "PHP",
  "amountIn": 100
}
{
  "fiatIn": "CAD",
  "fiatOut": "PHP",
  "amountIn": 100,
  "amountOut": 100,
  "rate": 1,
  "code": "APIWQRQWKZXV",
  "expirationDate": "2024-04-15T12:37:34.794Z"
}

Create a new Order

post
Authorizations
Body
rateCodestringRequired

The Rate code that contains the currencies and amounts of the order

Example: AHOQWIRTZXV12
senderDetailsall ofRequired

Details of the sender

receiverDetailsall ofRequired

Details of the Receiver

Responses
200
The created Order
application/json
401
Unauthorized
500
Internal server error
post
POST /order HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 1040

{
  "rateCode": "AHOQWIRTZXV12",
  "senderDetails": {
    "personDetails": {
      "firstName": "John",
      "lastName": "Doe",
      "address": "123 Main Street",
      "city": "Toronto",
      "stateOrProvince": "Ontario",
      "idCountryCode": "CAN",
      "country": "Canada",
      "postalCode": "18934"
    },
    "financialDetails": {
      "bankCountryId": "CAN",
      "bankName": "BBVA",
      "holderName": "John Doe",
      "bankRoutingNumber": "123-45678",
      "bankAccountNumber": "3456789",
      "achCode": "ACH",
      "swiftBicCode": "SWIFT"
    },
    "orderDetails": {
      "purpose": "Gift",
      "relationshipWithBeneficiary": "Colleague",
      "method": "PAY-TO-ACCOUNT-REAL-TIME"
    }
  },
  "receiverDetails": {
    "personDetails": {
      "firstName": "John",
      "lastName": "Doe",
      "address": "123 Main Street",
      "city": "Toronto",
      "stateOrProvince": "Ontario",
      "idCountryCode": "CAN",
      "country": "Canada",
      "postalCode": "18934"
    },
    "financialDetails": {
      "bankCountryId": "CAN",
      "bankName": "BBVA",
      "holderName": "John Doe",
      "bankRoutingNumber": "123-45678",
      "bankAccountNumber": "3456789",
      "achCode": "ACH",
      "swiftBicCode": "SWIFT"
    },
    "orderDetails": {
      "purpose": "Gift",
      "relationshipWithBeneficiary": "Colleague",
      "method": "PAY-TO-ACCOUNT-REAL-TIME"
    }
  }
}
{
  "id": 1,
  "userId": 1,
  "amountIn": 100,
  "amountOut": 100,
  "fiatIn": "CAD",
  "fiatOut": "PHP",
  "serviceFee": 10,
  "status": "PENDING USER"
}