指定賬戶也稱為子賬戶,是代表您最終客戶的賬戶。如果您作為受規管的實體(RFXB、MSB 等)營運,我們預期您會對這些客戶執行自己的 KYC/盡職調查,並可能需要為每個客戶開立賬戶,在每個賬戶中進行託收、支付和兌換活動,而且這些賬戶可以持有多幣種錢包。
如果您作為不受規管的實體營運,您也可以使用子賬戶,我們 Currencycloud 與您的最終客戶直接建立關係,並且我們負責註冊/KYC 和子賬戶的創建。
使用子賬戶時,為存取和處理子賬戶上的任何活動,需要創建聯絡人。創建聯絡人後,on_behalf_of 參數應在子賬戶級別的交易事件(兌換、支付、交易、搜索)中使用。
本指南將考慮子賬戶的初始設定,以及受規管實體的基本兌換和支付用例。
先決條件
在存取任何 Currencycloud 端點之前,您需要進行身份驗證並獲取身份驗證令牌。請參閱身份驗證指南,以獲取有關啟動新 API 會話的說明。
為客戶開立子賬戶
第 1 步:創建子賬戶
在完成對最終客戶的 KYC 流程後,您將需要使用創建賬戶 /v2/accounts/create 端點在 Currencycloud 生態系統中創建一個子賬戶。成功請求與回應的示例如下:
POST /v2/accounts/create
| 參數名稱 | 參數類型 | 示例值 |
|---|---|---|
account_name |
表單資料 | Jimmy's Burritos |
legal_entity_type |
表單資料 | company |
street |
表單資料 | 123 Main Street |
city |
表單資料 | Denver |
country |
表單資料 | US |
postal_code |
表單資料 | 80209 |
your_reference |
表單資料 | 12345678 |
status |
表單資料 | enabled |
state_or_province |
表單資料 | CO |
identification_type |
表單資料 | incorporation_number |
identification_value |
表單資料 | 123456789 |
X-Auth-Token |
標頭 | ea6d13c7bc50feb46cf978d137bc01a2 |
回應:
{
"id":"53d15949-b1e9-4335-a4e4-56ae8adef95e",
"account_name":"Jimmy's Burritos",
"brand": "currencycloud",
"your_reference":"123456789",
"status": "enabled",
"street":"123 Main Street",
"city":"Denver",
"state_or_province":"CO",
"country":"US",
"postal_code":"80209",
"spread_table": "flat_0.00",
"legal_entity_type": "company",
"created_at":"2021-03-25T15:22:47.276+00:00",
"updated_at":"2021-03-25T15:22:47.275+00:00",
"identification_type": "incorporation_number",
"identification_value":"123456789",
"short_reference":"210325-03783",
"api_trading": true,
"online_trading": true,
"phone_trading": true,
"process_third_party_funds": false,
"settlement_type": "net",
"agent_or_reliance": false,
"terms_and_conditions_accepted": null
}
您將需要從回應有效負載中解析並保留上述示例中的賬戶 UUID (id) 參數。該值將用於下一次 API 調用,以在此特定子賬戶上創建聯絡人。
第 2 步:創建聯絡人
下一步是使用創建聯絡人 /v2/contacts/create 端點為您剛剛創建的新子賬戶創建聯絡人。創建附加到子賬戶的聯絡人,可讓您在子賬戶層級進行兌換、支付和報告活動。
請注意 login_id 必須是唯一的,如果沒有指定 login_id,則使用 email_address。
成功請求與回應有效負載的示例如下:
POST /v2/contacts/create
| 參數名稱 | 參數類型 | 示例值 |
|---|---|---|
account_id |
表單資料 | 53d15949-b1e9-4335-a4e4-56ae8adef95e |
first_name |
表單資料 | Eric |
last_name |
表單資料 | Johnson |
email_address |
表單資料 | eric@aol.com |
phone_number |
表單資料 | 99999999 |
your_reference |
表單資料 | 123456789 |
status |
表單資料 | enabled |
timezone |
表單資料 | 美國/紐約 |
date_of_birth |
表單資料 | 1993-01-01 |
X-Auth-Token |
標頭 | ea6d13c7bc50feb46cf978d137bc01a2 |
回應:
{
"login_id": "eric@aol.com",
"id": "ce404ead-1936-4f54-ac2a-b26ec03d5560",
"first_name":"Eric",
"last_name":"Johnson",
"account_id":"53d15949-b1e9-4335-a4e4-56ae8adef95e",
"account_name":"Jimmy's Burritos",
"status": "enabled",
"locale": "en",
"timezone":"America\/New_York",
"email_address": "eric@aol.com",
"mobile_phone_number": null,
"phone_number":"99999999",
"your_reference":"123456789",
"date_of_birth":"1993-01-01",
"created_at":"2021-03-25T15:45:22.325+00:00",
"updated_at":"2021-03-25T15:45:22.320+00:00"
}
您需要從上述回應有效負載示例中解析並獲取 id 參數。該值將用於後續 API 調用的 on_behalf_of 參數。
代表您的客戶進行兌換
第 1 步:代表您的客戶獲取報價
此基本流程假設子賬戶在多幣種賬戶中有可用資金。為了在我們的演示環境中進行測試,請與您的專門解決方案顧問合作,以便他們可以協助您將占位資金存入各個子賬戶錢包。
我們透過調用獲取詳細匯率 /v2/rates/detailed 端點,查看使用客戶英鎊餘額中的資金購買 10,000 歐元需要花費多少錢。
GET /v2/rates/detailed
| 參數名稱 | 參數類型 | 示例值 |
|---|---|---|
| buy_currency | 查詢字串 | EUR |
| sell_currency | 查詢字串 | GBP |
| amount | 查詢字串 | 10000.00 |
| fixed_side | 查詢字串 | buy |
| on_behalf_of | 查詢字串 | ce404ead-1936-4f54-ac2a-b26ec03d5560 |
| X-Auth-Token | 標頭 | ea6d13c7bc50feb46cf978d137bc01a2 |
成功後,回應有效負載將包含 Currencycloud 的報價詳細資訊以代表您的客戶進行兌換。以下示例顯示,您的客戶可以賣出 8037.00 英鎊來買入 10,000 歐元。請注意,報價僅供參考,必須預訂兌換才能鎖定匯率。
{
"settlement_cut_off_time":"2021-03-29T14:30:00Z",
"currency_pair":"EURGBP",
"client_buy_currency":"EUR",
"client_sell_currency":"GBP",
"client_buy_amount":"10000.00",
"client_sell_amount":"8037.00",
"fixed_side": "buy",
"client_rate":"0.8037",
"partner_rate": null,
"core_rate":"0.8037",
"deposit_required": false,
"deposit_amount":"0.0",
"deposit_currency":"GBP",
"mid_market_rate":"0.8036"
}
第 2 步:代表您的客戶進行兌換
如果您和您的客戶都對報價感到滿意,您可以透過調用創建兌換 /v2/conversions/create 端點來為您的客戶創建兌換。
您可以選擇(透過 unique_request_id 參數)提供冪等性密鑰。這有助於防止意外的重複兌換。
POST /v2/conversions/create
| 參數名稱 | 參數類型 | 示例值 |
|---|---|---|
| buy_currency | 表單資料 | EUR |
| sell_currency | 表單資料 | GBP |
| amount | 表單資料 | 10000.00 |
| fixed_side | 表單資料 | buy |
| reason | 表單資料 | 充值歐元餘額 |
| term_agreement | 表單資料 | true |
| on_behalf_of | 表單資料 | ce404ead-1936-4f54-ac2a-b26ec03d5560 |
| unique_request_id | 表單資料 | 5f022044-1277-4f7e-a68e-c68783647748 |
| X-Auth-Token | 標頭 | ea6d13c7bc50feb46cf978d137bc01a2 |
成功後,回應訊息的有效負載將包含針對客戶的 Currencycloud 指定子賬戶記錄的完整兌換詳細資料。回應示例:
{
"id":"0e716494-3688-499a-8391-38096582aad5",
"settlement_date":"2021-03-29T14:30:00+00:00",
"conversion_date":"2021-03-29T00:00:00+00:00",
"short_reference":"20210325-XPWDTQ",
"creator_contact_id": "ce404ead-1936-4f54-ac2a-b26ec03d5560",
"account_id":"53d15949-b1e9-4335-a4e4-56ae8adef95e",
"currency_pair":"EURGBP",
"status": "awaiting_funds",
"buy_currency":"EUR",
"sell_currency":"GBP",
"client_buy_amount":"10000.00",
"client_sell_amount":"8037.00",
"fixed_side": "buy",
"core_rate":"0.8037",
"partner_rate": "",
"partner_buy_amount":"0.00",
"partner_sell_amount":"0.00",
"client_rate":"0.8037",
"deposit_required": false,
"deposit_amount":"0.00",
"deposit_currency": "",
"deposit_status": "not_required",
"deposit_required_at": "",
"payment_ids": [],
"unallocated_funds":"10000.00",
"unique_request_id": null,
"created_at":"2021-03-25T20:53:47+00:00",
"updated_at":"2021-03-25T20:53:48+00:00",
"mid_market_rate":"0.8036"
}
只要子賬戶的英鎊餘額中的資金足以支付 client_sell_amount,此兌換就會在 settlement_date 自動結算。如有必要,請使用您的現金管理器充值您客戶的子賬戶英鎊餘額。
代表您的客戶發送付款
現在您已將資金兌換成歐元,您可以代表客戶向收款人進行支付。下一節將引導您在子賬戶層級添加收款人、查看賬戶餘額以及進行支付。
第 1 步:查看可用餘額
若要查找您客戶的貨幣錢包中有多少歐元,請調用獲取餘額 /v2/balances/{currency} 端點,傳遞 EUR 作為第三個 URI 路徑參數,並包含 on_behalf_of 作為查詢字串參數。
GET /v2/balances/EUR/?on_behalf_of=ce404ead-1936-4f54-ac2a-b26ec03d5560 X-Auth-Token: ea6d13c7bc50feb46cf978d137bc01a2
以下回應顯示您客戶的子賬戶持有 987,456.00 歐元。
回應:
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "a1c6c7dc-430c-438c-b7e2-60d33b517ab8",
"account_id":"53d15949-b1e9-4335-a4e4-56ae8adef95e",
"currency":"EUR",
"amount":"987456.00",
"created_at":"2021-03-25T21:17:08+00:00",
"updated_at":"2021-03-25T22:02:57+00:00"
}
另外,您也可以透過調用查找餘額 /v2/balances/find 端點來查看您的客戶持有的所有外幣餘額。同樣,您需要傳遞 on_behalf_of 作為查詢字串參數。
GET /v2/balances/find?on_behalf_of=ce404ead-1936-4f54-ac2a-b26ec03d5560 X-Auth-Token: ea6d13c7bc50feb46cf978d137bc01a2
以下回應顯示您的客戶在其 Currencycloud 子賬戶中持有 557,685.00 英鎊和 987,456.00 歐元。
{
"balances": [
{
"id": "a1c6c7dc-430c-438c-b7e2-60d33b517ab8",
"account_id":"53d15949-b1e9-4335-a4e4-56ae8adef95e",
"currency":"EUR",
"amount":"987456.00",
"created_at":"2021-03-25T21:17:08+00:00",
"updated_at":"2021-03-25T22:02:57+00:00"
},
{
"id": "e08bdda0-18b0-4425-aabe-2c3da28cca89",
"account_id":"53d15949-b1e9-4335-a4e4-56ae8adef95e",
"currency":"GBP",
"amount":"557685.00",
"created_at":"2021-03-25T21:18:22+00:00",
"updated_at":"2021-03-25T22:02:58+00:00"
}
],
"pagination": {
"total_entries":2,
"total_pages":1,
"current_page":1,
"per_page":25,
"previous_page": -1,
"next_page": -1,
"order": "created_at",
"order_asc_desc": "asc"
}
}
第 2 步:在子賬戶層級添加收款人
如果您是與 The Currency Cloud Limited 訂立合約的「贊助」或「財務管理」服務模式下的客戶,則您必須在創建收款人之前驗證收款人的賬戶詳細資料。
如果您和您的客戶知道所需的詳細資料,您就可以繼續透過創建收款人 /v2/beneficiaries/create 端點為收款人創建記錄。
POST /v2/beneficiaries/create
如果收款人已成功創建,則回應訊息將包含您客戶 Currencycloud 子賬戶中記錄的收款人完整詳細資料。請記錄收款人的唯一 ID (id)。下一步向收款人支付時您需要此 ID。
回應:
{
"id":"33bb1228-20fc-4569-b5b2-234c3fd9e492",
"bank_account_holder_name":"Joe Bob",
"name":"Joe Bob",
"email": null,
"payment_types": [
"regular"
],
"beneficiary_address": [],
"beneficiary_country":"DE",
"beneficiary_entity_type": null,
"beneficiary_company_name": null,
"beneficiary_first_name": null,
"beneficiary_last_name": null,
"beneficiary_city": null,
"beneficiary_postcode": null,
"beneficiary_state_or_province": null,
"beneficiary_date_of_birth": null,
"beneficiary_identification_type": null,
"beneficiary_identification_value": null,
"bank_country":"DE",
"bank_name":"TEST BANK NAME",
"bank_account_type": null,
"currency":"EUR",
"account_number": null,
"routing_code_type_1": null,
"routing_code_value_1": null,
"routing_code_type_2": null,
"routing_code_value_2": null,
"bic_swift":"COBADEFF",
"iban":"DE89370400440532013000",
"default_beneficiary": "false",
"creator_contact_id": "ce404ead-1936-4f54-ac2a-b26ec03d5560",
"bank_address": [
"TEST BANK ADDRESS",
" NOT USING EXTERNAL SERVICE",
" DEVELOPMENT ENVIRONMENT."
],
"created_at":"2021-03-25T22:52:30+00:00",
"updated_at":"2021-03-25T22:52:30+00:00",
"beneficiary_external_reference": null
}
第 3 步:代表您的客戶進行支付
透過調用創建支付 /v2/payments/create 端點來創建支付。您可以選擇(透過 unique_request_id 參數)提供冪等性密鑰。這有助於防止意外的重複支付。
POST /v2/payments/create
| 參數名稱 | 參數類型 | 示例值 |
|---|---|---|
| currency | 表單資料 | EUR |
| beneficiary_id | 表單資料 | 33bb1228-20fc-4569-b5b2-234c3fd9e492 |
| amount | 表單資料 | 10000 |
| reason | 表單資料 | 發票支付 |
| payment_type | 表單資料 | 常規 |
| reference | 表單資料 | 2021-014 |
| on_behalf_of | 表單資料 | ce404ead-1936-4f54-ac2a-b26ec03d5560 |
| unique_request_id | 表單資料 | 5f022044-1277-4f7e-a68e-c68783647748 |
| X-Auth-Token | 標頭 | ea6d13c7bc50feb46cf978d137bc01a2 |
如果支付成功排隊,回應有效負載將包含您客戶 Currencycloud 子賬戶中記錄的所有支付資訊。這並非表示支付已完成,只是表示已準備好進行處理。
回應:
{
"id":"33efe062-ead2-4781-81a7-72563475603f",
"amount":"10000.00",
"beneficiary_id":"33bb1228-20fc-4569-b5b2-234c3fd9e492",
"currency":"EUR",
"reference":"2021-014",
"reason":"Invoice Payment",
"status": "ready_to_send",
"creator_contact_id": "ce404ead-1936-4f54-ac2a-b26ec03d5560",
"payment_type": "regular",
"payment_date":"2021-03-29",
"transferred_at": "",
"authorisation_steps_required":"0",
"last_updater_contact_id": "ce404ead-1936-4f54-ac2a-b26ec03d5560",
"short_reference":"210326-0PC0TV750",
"conversion_id": null,
"failure_reason": "",
"payer_id":"45cc568d-a837-4538-b1d8-882a367c8d46",
"payer_details_source": "account",
"created_at":"2021-03-26T20:32:59+00:00",
"updated_at":"2021-03-26T20:32:59+00:00",
"payment_group_id": null,
"unique_request_id":"5f022044-1277-4f7e-a68e-c68783647748",
"failure_returned_amount":"0.00",
"ultimate_beneficiary_name": null,
"purpose_code": null,
"charge_type": null,
"fee_amount": null,
"fee_currency": null
}