banxa/php-sdk

Banxa Official PHP API SDK for partners

v1.0.4 2024-02-29 00:11 UTC

README

Banxa

Banxa official PHP SDK

GitHub Workflow Status Latest Version on Packagist

Table of Contents

General info

The Banxa SDK is a plug and play ready to go implementation to access our services.
It allows for a simple and fast integration.

Installation

Install the package via composer

composer require banxa/php-sdk 

Authentication

ApiKey and ApiSecret

While on-boarding with banxa, you will be provided with API keys and a subdomain ([partnername].banxa.com),
initially these will be for the sandbox environment. Once you are done testing the implementation, you will receive the credentials to use the production environment.

Dependencies

Usage

Banxa::create($subdomain, $apiKey, $apiSecret, $testMode)
Sandbox
$subdomain = 'partner';
$sandboxApiKey = 'xxx-xxx-xxx-xxx-xxx';
$sandboxApiSecret = 'xxxx-xxxx-xxxx-xxxx';
$testMode = true;
Banxa::create($subdomain, $sandboxApiKey, $sandboxApiSecret, $testMode)
Production
$subdomain = 'partner';
$apiKey = 'xxx-xxx-xxx-xxx-xxx';
$apiSecret = 'xxxx-xxxx-xxxx-xxxx';
Banxa::create($subdomain, $apiKey, $apiSecret)

Localisation

Countries

Global

Fetch all available countries

$banxa->getCountries()

Result Example

[
   [
       "country_code" => "AD",
       "country_name" => "Andora"
   ],
   [
       "country_code" => "AE",
       "country_name" => "United Arab Emirates"
   ],
]

US States

Fetch all available US States

$banxa->getUsStates()

Result Example

[
   [
       "state_code" => "AL",
       "state_name" => "Alabama"
   ],
   [
       "state_code" => "AK",
       "state_name" => "Alaska"
   ],
]

Currencies

Fiat

Buy order type

Fetch all available fiat currencies for buy order type.

$banxa->getBuyFiatCurrencies()

Sell order type

Fetch all available fiat currencies for sell order type.

$banxa->getSellFiatCurrencies()

Result Example

[
  [
      "fiat_code"   => "EUR",
      "fiat_name"   => "Euro",
      "fiat_symbol" => "",
  ],
  [
      "fiat_code"   => "GBP",
      "fiat_name"   => "British Pound Sterling",
      "fiat_symbol" => "£",
  ],
]
       

Crypto

Buy order type

Fetch all cryptocurrencies for buy order type.

$banxa->getBuyCryptoCurrencies()

Sell order type

Fetch all cryptocurrencies for sell-order type.

$banxa->getSellCryptoCurrencies()

Result Example

[
   [
       "coin_code"=> "BTC",
       "coin_name"=> "Bitcoin",
       "blockchains"=> [
           [
               "code"=> "BTC",
               "description"=> "Bitcoin",
               "is_default"=> true
           ]
       ]
   ],
   [
       "coin_code"=> "ETH",
       "coin_name"=> "Ethereum",
       "blockchains"=> [
           [
               "code"=> "ETH",
               "description"=> "Ethereum (ERC-20)",
               "is_default"=> true
           ],
           [
               "code"=> "MATIC",
               "description"=> "Polygon",
               "is_default"=> false
           ]
       ]
   ]
]

Payment Methods

Buy & Sell order type payment methods

Fetch all available payment providers for buy and sell order type

$banxa->getAllPaymentMethods()

Result Example

[
  [
       "id"               => 6036,
       "paymentType"      => "WORLDPAYCREDIT",
       "name"             => "Visa/Mastercard",
       "description"      => "Conveniently buy digital currency using your personal VISA or MasterCard.",
       "logo_url"         => "https://partner.banxa.com/images/payment-providers/worlpaycredit.png",
       "status"           => "ACTIVE",
       "supported_agents" => [
           [
               "os"      => "ios",
               "browser" => "safari"
           ],
           [
               "os"      => "macos",
               "browser" => "safari"
           ],
           [
               "os"      => "ipados",
               "browser" => "safari"
           ]
       ],
       "type"             => "FIAT_TO_CRYPTO",
       "supported_fiat"   => [
           "AED",
       ],
       "transaction_fees" => [
           [
               "fiat_code" => "AED",
               "coin_code" => "BTC",
               "fees"      => [
                   [
                       "name"   => "surcharge",
                       "amount" => 3,
                       "type"   => "fixed"
                   ]
               ]
           ],
       ]
   ],
   [
       "id"               => 6036,
       "paymentType"      => "WORLDPAYAPPLE",
       "name"             => "Apple Pay",
       "description"      => "Conveniently buy digital currency using your Apple Pay wallet.",
       "logo_url"         => "https://partner.banxa.com/images/payment-providers/apple-pay.png",
       "status"           => "ACTIVE",
       "supported_agents" => [
           [
               "os"      => "ios",
               "browser" => "safari"
           ],
           [
               "os"      => "macos",
               "browser" => "safari"
           ],
           [
               "os"      => "ipados",
               "browser" => "safari"
           ]
       ],
       "type"             => "CRYPTO_TO_FIAT",
       "supported_fiat"   => [
           "AED",
       ],
       "transaction_fees" => [
           [
               "fiat_code" => "AED",
               "coin_code" => "BTC",
               "fees"      => [
                   [
                       "name"   => "surcharge",
                       "amount" => 3,
                       "type"   => "fixed"
                   ]
               ]
           ],
       ]
   ]
];

Buy order type payment methods

Fetch all available payment providers for buy order type

$banxa->getBuyPaymentMethods($fiatCode, $coinCode)

Result Example

[
   "id"               => 6036,
   "paymentType"      => "WORLDPAYAPPLE",
   "name"             => "Apple Pay",
   "description"      => "Conveniently buy digital currency using your Apple Pay wallet.",
   "logo_url"         => "https://partner.banxa.com/images/payment-providers/apple-pay.png",
   "status"           => "ACTIVE",
   "supported_agents" => [
       [
           "os"      => "ios",
           "browser" => "safari"
       ],
       [
           "os"      => "macos",
           "browser" => "safari"
       ],
       [
           "os"      => "ipados",
           "browser" => "safari"
       ]
   ],
   "type"             => "FIAT_TO_CRYPTO",
   "supported_fiat"   => [
       "AED",
   ],
   "transaction_fees" => [
       [
           "fiat_code" => "AED",
           "coin_code" => "BTC",
           "fees"      => [
               [
                   "name"   => "surcharge",
                   "amount" => 3,
                   "type"   => "fixed"
               ]
           ]
       ],
   ]
]

Sell order type payment methods

Fetch all available payment methods for sell order type

$banxa->getSellPaymentMethods($coinCode, $fiatCode)

Result Example

[
   "id"               => 6036,
   "paymentType"      => "DIRECTCREDIT",
   "name"             => "Bank Transfer",
   "description"      => "Sell digital currency to us and have the value directly credited to your bank account",
   "logo_url"         => "https://partner.banxa.com/images/payment-providers/directcredit.png",
   "status"           => "ACTIVE",
   "supported_agents" => [
       [
           "os"      => "ios",
           "browser" => "safari"
       ],
       [
           "os"      => "macos",
           "browser" => "safari"
       ],
       [
           "os"      => "ipados",
           "browser" => "safari"
       ]
   ],
   "type"             => "CRYPTO_TO_FIAT",
   "supported_fiat"   => [
       "AED",
   ],
   "transaction_fees" => [
       [
           "fiat_code" => "AED",
           "coin_code" => "BTC",
           "fees"      => [
               [
                   "name"   => "surcharge",
                   "amount" => 3,
                   "type"   => "fixed"
               ]
           ]
       ],
   ]
]

Prices

Get prices for Payment Methods to obtain a payment method id for each specific fiat.

Buy order types pricing

Fetch all available prices for buy order type

$banxa->getAllBuyPrices(
    $fiatCode,
    $coinCode,
    $fiatAmount,
    $blockchain
)

Result Example

[
    "spot_price" => "1.07",
    "prices" => [
        [
            "payment_method_id" => 6047,
            "type" => "FIAT_TO_CRYPTO",
            "spot_price_fee" => "0.00",
            "spot_price_including_fee" => "1.07",
            "coin_amount" => "93.84000000",
            "coin_code" => "USDT",
            "fiat_amount" => "100.00",
            "fiat_code" => "USD",
            "fee_amount" => "0.00",
            "network_fee" => "2.37"
        ],
        [
            "payment_method_id" => 6058,
            "type" => "FIAT_TO_CRYPTO",
            "spot_price_fee" => "0.00",
            "spot_price_including_fee" => "1.09",
            "coin_amount" => "93.84000000",
            "coin_code" => "USDT",
            "fiat_amount" => "100.00",
            "fiat_code" => "USD",
            "fee_amount" => "0.00",
            "network_fee" => "2.37"
        ]
    ]
]

Buy order type pricing

Fetch single price for buy order type for a specific payment method

$banxa->getBuyPrice(
    $fiatCode,
    $coinCode,
    $fiatAmount,
    $paymentMethodId,
    $blockchain
)

Result Example

[
    "payment_method_id" => 6058,
    "type" => "FIAT_TO_CRYPTO",
    "spot_price_fee" => "0.00",
    "spot_price_including_fee" => "1.09",
    "coin_amount" => "93.84000000",
    "coin_code" => "USDT",
    "fiat_amount" => "100.00",
    "fiat_code" => "USD",
    "fee_amount" => "0.00",
    "network_fee" => "2.37"
]

Sell order types pricing

Fetch all available prices for sell order type

$banxa->getAllSellPrices(
  $coinCode, 
  $fiatCode, 
  $coinAmount
)

Result Example

[
    "spot_price" => "1.07",
    "prices" => [
        [
            "payment_method_id" => 6045,
            "type" => "CRYPTO_TO_FIAT",
            "spot_price_fee" => "0.00",
            "spot_price_including_fee" => "32500.00",
            "coin_amount" => "0.02000000",
            "coin_code" => "BTC",
            "fiat_amount" => "100.00",
            "fiat_code" => "AUD",
            "fee_amount" => "0.00",
            "network_fee" => "0.00"
        ],
        [
            "payment_method_id" => 6046,
            "type" => "CRYPTO_TO_FIAT",
            "spot_price_fee" => "0.00",
            "spot_price_including_fee" => "32500.00",
            "coin_amount" => "0.04000000",
            "coin_code" => "BTC",
            "fiat_amount" => "650.00",
            "fiat_code" => "AUD",
            "fee_amount" => "0.00",
            "network_fee" => "0.00"
        ],
    ]
]

Sell order type pricing

Fetch single price for buy order type for a specific payment method

$banxa->getSellPrice(
  $coinCode, 
  $fiatCode, 
  $coinAmount, 
  $paymentMethodId
)

Result Example

[
    "payment_method_id" => 6033,
    "type" => "CRYPTO_TO_FIAT",
    "spot_price_fee" => "0.00",
    "spot_price_including_fee" => "1.09",
    "coin_amount" => "93.84000000",
    "coin_code" => "USDT",
    "fiat_amount" => "100.00",
    "fiat_code" => "USD",
    "fee_amount" => "0.00",
    "network_fee" => "2.37"
]

Orders

Retrieving orders

Fetch orders

Fetch all orders within a specific time range. (paginated)

$banxa->getOrders(
  $startDate, 
  $endDate, 
  $statuses, 
  $perPage, 
  $page, 
  $accountReference
)

Result Example

[
    [
        "id"                  => "e7f3d4e436c8925af84a391f317aaa6e",
        "account_id"          => "ebfef819583ff4573e6db307abd9c126",
        "account_reference"   => "banxa-account",
        "order_type"          => "CRYPTO-BUY",
        "ref"                 => 501903,
        "country"             => "AU",
        "fiat_code"           => "AUD",
        "fiat_amount"         => 100,
        "coin_code"           => "BTC",
        "coin_amount"         => 0.00704583,
        "wallet_address"      => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "wallet_address_tag"  => null,
        "fee"                 => 0,
        "fee_tax"             => 0,
        "payment_fee"         => 2.14,
        "payment_fee_tax"     => 0.19,
        "commission"          => 0,
        "tx_hash"             => "sync-tx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "tx_confirms"         => 10,
        "created_date"        => "01-Jul-2022",
        "created_at"          => "01-Jul-2022 07:51:18",
        "payment_type"        => "WorldPay Credit Card",
        "status"              => "complete",
        "completed_at"        => "01-Jul-2022 07:55:19",
        "merchant_fee"        => 0,
        "merchant_commission" => 0,
        "meta_data"           => null,
        "blockchain"          => [
        "code"        => "BTC",
        "description" => "Bitcoin"
        ]
   ],
   [
        "id"                  => "b719377e3541921297ebef33016fb068",
        "account_id"          => "ebfef819583ff4573e6db307abd9c126",
        "account_reference"   => "banxa-account",
        "order_type"          => "CRYPTO-BUY",
        "ref"                 => 501902,
        "country"             => "AU",
        "fiat_code"           => "AUD",
        "fiat_amount"         => 320,
        "coin_code"           => "BTC",
        "coin_amount"         => 0.02255405,
        "wallet_address"      => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "wallet_address_tag"  => null,
        "fee"                 => 0,
        "fee_tax"             => 0,
        "payment_fee"         => 6.83,
        "payment_fee_tax"     => 0.62,
        "commission"          => 0,
        "tx_hash"             => "sync-tx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "tx_confirms"         => 10,
        "created_date"        => "01-Jul-2022",
        "created_at"          => "01-Jul-2022 07:51:18",
        "payment_type"        => "WorldPay Credit Card",
        "status"              => "complete",
        "completed_at"        => "01-Jul-2022 07:55:19",
        "merchant_fee"        => 0,
        "merchant_commission" => 0,
        "meta_data"           => null,
        "blockchain"          => [
            "code"        => "BTC",
            "description" => "Bitcoin"
        ]
   ]
]

Fetch order

Fetch single order

$banxa->getOrder($orderId);

Result Example

[
    "id"                  => "b719377e3541921297ebef33016fb068",
    "account_id"          => "ebfef819583ff4573e6db307abd9c126",
    "account_reference"   => "banxa-account",
    "order_type"          => "CRYPTO-BUY",
    "ref"                 => 501902,
    "country"             => "AU",
    "fiat_code"           => "AUD",
    "fiat_amount"         => 320,
    "coin_code"           => "BTC",
    "coin_amount"         => 0.02255405,
    "wallet_address"      => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "wallet_address_tag"  => null,
    "fee"                 => 0,
    "fee_tax"             => 0,
    "payment_fee"         => 6.83,
    "payment_fee_tax"     => 0.62,
    "commission"          => 0,
    "tx_hash"             => "sync-tx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "tx_confirms"         => 10,
    "created_date"        => "01-Jul-2022",
    "created_at"          => "01-Jul-2022 07:51:18",
    "payment_type"        => "WorldPay Credit Card",
    "status"              => "complete",
    "completed_at"        => "01-Jul-2022 07:55:19",
    "merchant_fee"        => 0,
    "merchant_commission" => 0,
    "meta_data"           => null,
    "blockchain"          => [
        "code"        => "BTC",
        "description" => "Bitcoin"
    ]
]

Creating orders

Allows your customer to create a buy or sell crypto order with Banxa. Upon success, the response will contain a checkout URL which will be unique for the order. The customer will be redirected to this URL to complete the checkout process, which will expire after 1 minute if a redirect does not occur.

When creating an order you will be required to create a BuyOrderTransaction/SellOrderTransaction/NftBuyOrderTransaction object. This object will allow you to create a transaction using a fiat amount, coin amount, or if you require both, you can specify your own amount using the createDynamic method, this will depend on your business use case.

Creating a buy order

$banxa->createBuyOrder(
  $buyOrderTransaction,
  $returnUrlOnSuccess,
  $returnUrlOnFailure,
  $returnUrlOnCancelled,
  $metadata,
  $readOnlyAmounts,
  $iframeRefererDomain,
  $optionalOrderParameters
);

BuyOrderTransaction using Fiat as base amount

$buyOrderTransaction = BuyOrderTransaction::createFromFiatAmount(
      $accountReference, 
      $fiatCode, 
      $coinCode, 
      $fiatAmount, 
      $walletAddress, 
      $paymentMethodId
  );

BuyOrderTransaction using Coin as base amount

 $buyOrderTransaction = BuyOrderTransaction::createFromCoinAmount(
      $accountReference, 
      $fiatCode, 
      $coinCode, 
      $coinAmount, 
      $walletAddress, 
      $paymentMethodId
 );

BuyOrderTransaction using dynamic sourceAmount or targetAmount

When using BuyOrderTransaction::createDynamic you will need to specify $source(Fiat), $target(Coin), and either $sourceAmount or $targetAmount

  $buyOrderTransaction = BuyOrderTransaction::createDynamic(
      $accountReference, 
      $source, 
      $target, 
      $sourceAmount, 
      $targetAmount, 
      $walletAddress, 
      $refundAddress, 
      $paymentMethodId, 
      $blockchain, 
      $walletAddressTag
  );

optionalOrderParameters

  $optionalOrderParameters = optionalOrderParameters::create(
      $sourceAddress, 
      $sourceAddressTag, 
      $email, 
      $mobile, 
  );

Buy order full example

$buyOrderTransaction = BuyOrderTransaction::createFromFiatAmount($accountReference, $fiatCode, $coinCode, $fiatAmount, $walletAddress, $paymentMethodId, $blockchain, $walletAddressTag);// From Fiat Amount
$buyOrderTransaction = BuyOrderTransaction::createFromCoinAmount($accountReference, $fiatCode, $coinCode, $coinAmount, $walletAddress, $paymentMethodId, $blockchain, $walletAddressTag);// From Coin Amount
$buyOrderTransaction = BuyOrderTransaction::createDynamic($accountReference, $source, $target, $sourceAmount, null, $walletAddress, null, $paymentMethodId, $blockchain, $walletAddressTag); // Dynamic
$buyOrderTransaction = BuyOrderTransaction::createDynamic($accountReference, $source, $target, null, $targetAmount, $walletAddress, null, $paymentMethodId, $blockchain, $walletAddressTag); // Dynamic
$optionalOrderParameters = OptionalOrderParameters::create($sourceAddress, $sourceAddressTag, $email, $mobile);
$banxa->createBuyOrder(
    $buyOrderTransaction,
    $returnUrlOnSuccess,
    $returnUrlOnFailure,
    $returnUrlOnCancelled,
    $metadata,
    $readOnlyAmounts,
    $iframeRefererDomain,
    $optionalOrderParameters
);

Result Example

[
   "id"                => "b890df4aee4583a25ca8da17eb863c81",
   "account_id"        => "3ec8d3c67617af11d84a18931c4e369d",
   "account_reference" => "banxa-test-01",
   "order_type"        => "CRYPTO-BUY",
   "fiat_code"         => "AUD",
   "fiat_amount"       => 1,
   "coin_code"         => "BTC",
   "wallet_address"    => "1LbQ1WNTsm1Nzj1hbh3WDCbEim1oUg5rfi",
   "blockchain"        => [
       "id"          => 1,
       "code"        => "BTC",
       "description" => "Bitcoin"
   ],
   "created_at"        => "17-Aug-2022 00:09:03",
   "checkout_url"      => "https://your-return-url"
]

Creating a NFT buy order

$banxa->createNftBuyOrder(
    $nftBuyOrderTransaction,
    $nftData,
    $returnUrlOnSuccess,
    $returnUrlOnFailure,
    $returnUrlOnCancelled,
    $iframeRefererDomain
);

NftBuyOrderTransaction

$nftBuyOrderTransaction = NftBuyOrderTransaction::create(
    $accountReference,
    $fiatCode,
    $coinCode,
    $fiatAmount,
    $walletAddress,
    $paymentMethodId = null,
    $blockchain = null,
    $walletAddressTag = null
);

NftData

$nftData = NftData::create(
    $purchaseReference, 
    $nft, 
    $metaData
);

Nft

$nft = Nft::create(
    $name, 
    $collection, 
    $nftMedia,
);

Create VideoNftMedia

  $nftMedia = VideoNftMedia::create($link);

Create ImageNftMedia

  $nftMedia = ImageNftMedia::create($link);

Nft buy order full example

$nftBuyOrderTransaction = NftBuyOrderTransaction::create(
     $accountReference, 
     $fiatCode, 
     $coinCode, 
     $fiatAmount, 
     $walletAddress, 
     $paymentMethodId, 
     $blockchain, 
     $walletAddressTag
);


$nftMedia = ImageNftMedia::create($link); // OR $nftMedia = VideoNftMedia::create($link)


$nft = Nft::create(
    $name, 
    $collection, 
    $nftMedia,
);

$nftData = NftData::create(
    $purchaseReference, 
    $nft, 
    $metaData
);

$banxa->createNftBuyOrder(
    $nftBuyOrderTransaction,
    $nftData,
    $returnUrlOnSuccess,
    $returnUrlOnFailure,
    $returnUrlOnCancelled,
    $iframeRefererDomain,
);

Result Example

[
   "id"                => "b890df4aee4583a25ca8da17eb863c81",
   "account_id"        => "3ec8d3c67617af11d84a18931c4e369d",
   "account_reference" => "Banxa-Testing-01",
   "order_type"        => "NFT-BUY",
   "blockchain"        => [
       "id"          => 1,
       "code"        => "ETH",
       "description" => "Ethereum (ERC-20)"
   ],
   "created_at"        => "17-Aug-2022 00:09:03",
   "checkout_url"      => "https://your-return-url"
]

Creating a Sell order

$banxa->createSellOrder(
   $sellOrderTransaction,
   $returnUrlOnSuccess,
   $returnUrlOnFailure,
   $returnUrlOnCancelled,
   $metadata,
   $readOnlyAmounts,
   $iframeRefererDomain,
   $optionalOrderParameters,
)

SellOrderTransaction using Fiat as base amount

$sellOrderTransaction = SellOrderTransaction::createFromFiatAmount(
      $accountReference, 
      $fiatCode, 
      $coinCode, 
      $fiatAmount, 
      $refundAddress, 
      $paymentMethodId,
      $blockchain,
      $walletAddressTag,
);

sellOrderTransaction using Coin as base amount

$sellOrderTransaction = SellOrderTransaction::createFromCoinAmount(
      $accountReference, 
      $fiatCode, 
      $coinCode, 
      $coinAmount, 
      $refundAddress, 
      $paymentMethodId,
      $blockchain,
      $walletAddressTag,
 );

sellOrderTransaction using dynamic sourceAmount or targetAmount

When using SellOrderTransaction::createDynamic you will need to specify $source(Coin), $target(Fiat), and either $sourceAmount or $targetAmount

$sellOrderTransaction = SellOrderTransaction::createDynamic(
      $accountReference, 
      $source, 
      $target, 
      $sourceAmount, 
      $targetAmount, 
      $walletAddress, 
      $refundAddress, 
      $paymentMethodId, 
      $blockchain, 
      $walletAddressTag
 );

optionalOrderParameters

  $optionalOrderParameters = optionalOrderParameters::create(
      $sourceAddress, 
      $sourceAddressTag, 
      $email, 
      $mobile, 
  );

Sell order full example

$sellOrderTransaction = SellOrderTransaction::createFromFiatAmount($accountReference, $fiatCode, $coinCode, $fiatAmount, $refundAddress, $paymentMethodId, $blockchain, $walletAddressTag);// From Fiat Amount
$sellOrderTransaction = SellOrderTransaction::createFromCoinAmount($accountReference, $fiatCode, $coinCode, $coinAmount, $refundAddress, $paymentMethodId, $blockchain, $walletAddressTag);// From Coin Amount
$sellOrderTransaction = SellOrderTransaction::createDynamic($accountReference, $source, $target, $sourceAmount, null, null, $refundAddress, $paymentMethodId, $blockchain, $walletAddressTag); // Dynamic
$sellOrderTransaction = SellOrderTransaction::createDynamic($accountReference, $source, $target, null, $targetAmount, null, $refundAddress, $paymentMethodId, $blockchain, $walletAddressTag); // Dynamic
$optionalOrderParameters = OptionalOrderParameters::create($sourceAddress, $sourceAddressTag, $email, $mobile);
$banxa->createSellOrder(
    $sellOrderTransaction,
    $returnUrlOnSuccess,
    $returnUrlOnFailure,
    $returnUrlOnCancelled,
    $metadata,
    $readOnlyAmounts,
    $iframeRefererDomain,
    $optionalOrderParameters,
);

Result Example

[
   "id"                => "b890df4aee4583a25ca8da17eb863c81",
   "account_id"        => "3ec8d3c67617af11d84a18931c4e369d",
   "account_reference" => "banxa-test-01",
   "order_type"        => "CRYPTO-SELL",
   "fiat_code"         => "AUD",
   "fiat_amount"       => 1,
   "coin_code"         => "BTC",
   "wallet_address"    => "1LbQ1WNTsm1Nzj1hbh3WDCbEim1oUg5rfi",
   "blockchain"        => [
       "id"          => 1,
       "code"        => "BTC",
       "description" => "Bitcoin"
   ],
   "created_at"        => "17-Aug-2022 00:09:03",
   "checkout_url"      => "https://your-return-url"

]

Confirm sell order

Once the coin amount transfer for a Sell Order has been executed,
Banxa must be notified by sending a request to this endpoint with transaction hash, source and destination wallet address details.

$banxa->confirmSellOrder(
      $orderId,
      $txHash,
      $sourceAddress,
      $destinationAddress,
      $sourceAddressTag,
      $destinationAddressTag
)

Result Example

[
    "id"                  => "ee94a43403fb608f341dd5c4c899b846",
    "account_id"          => "d6e7ab2b8f638bed61dc0ac5bec37d4d",
    "account_reference"   => "banxa-account",
    "order_type"          => "CRYPTO-SELL",
    "payment_type"        => "CLEARJCNSELLFP",
    "ref"                 => 507000,
    "fiat_code"           => "AUD",
    "fiat_amount"         => 100,
    "coin_code"           => "BTC",
    "coin_amount"         => 0.00286436,
    "wallet_address"      => null,
    "wallet_address_tag"  => null,
    "fee"                 => 9.1,
    "fee_tax"             => 0,
    "payment_fee"         => 0,
    "payment_fee_tax"     => 0,
    "commission"          => 0.1,
    "tx_hash"             => null,
    "tx_confirms"         => 0,
    "created_date"        => "01-Jul-2022",
    "created_at"          => "01-Jul-2022 07:51:18",
    "status"              => "in progress",
    "completed_at"        => null,
    "merchant_fee"        => 6.54,
    "merchant_commission" => 0.05,
    "meta_data"           => null,
    "blockchain"          => [
        "id"          => 1,
        "code"        => "BTC",
        "description" => "Bitcoin"
    ]
]

Identity

Create Identity

Allows you to share customer details with Banxa before an Order is created.
This reduces the need for customers to re-submit personal details and upload KYC documentation during the Banxa checkout flow.
Detailed guide on how to implement this API can be found here. You can also find Testing information here

$banxa->createIdentity(
   $identitySharingCollection,
   $customerDetails,
   $residentialAddress
   $customerIdentity,
   $identityDocumentCollection,
)
IdentitySharingCollection
 IdentitySharingCollection::create($kycProviders)
IdentitySharingProvider
 IdentitySharingProvider::create($provider, $token)
CustomerDetail
$customerDetail = CustomerDetail::create($accountReference, $mobileNumber, $emailAddress);
ResidentialAddress
$residentialAddress = ResidentialAddress::create($country, $addressLine, $suburb, $postCode, $state);
CustomerIdentity
 $customerIdentity = CustomerIdentity::create($givenName, $surname, $dateOfBirth);
IdentityDocumentCollection
IdentityDocument
 IdentityDocument::create($documentType, $imageLinks, $documentNumber)

Full Example

$kycProviders = [
    IdentitySharingProvider::create($provider, $token),
    IdentitySharingProvider::create($provider, $token),
];

$documents = [
    IdentityDocument::create($documentType, $imageLinks, $documentNumber),
    IdentityDocument::create($documentType, $imageLinks),
];

$identitySharingCollection = IdentitySharingCollection::create($kycProviders);
$customerDetail = CustomerDetail::create($accountReference, $mobileNumber, $emailAddress);
$residentialAddress = ResidentialAddress::create($country, $addressLine, $suburb, $postCode, $state);
$customerIdentity = CustomerIdentity::create($givenName, $surname, $dateOfBirth);
$identityDocumentCollection = IdentityDocumentCollection::create($documents);

$banxa->createIdentity(
    $identitySharingCollection,
    $customerDetail,
    $residentialAddress,
    $customerIdentity,
    $identityDocumentCollection
);

Result Example

[
    "account_id"        => "28d517af407a0566204acd75e3a8e5b7",
    "account_reference" => "test001001"
]