> ## Documentation Index
> Fetch the complete documentation index at: https://developer.gcashier.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Transfer | B2B

> Create an international transfer from an enterprise sender to an enterprise receiver. Submit full company details for both parties along with the `bizFlow` obtained from sp1306.

<Note>
  **B2B** (Business-to-Business): both sender (`senderObject.bizMode = B`) and receiver (`receiverObject.bizMode = B`) are enterprises.
  English company names and addresses must match the regex: `^[a-zA-Z0-9\s.,!?:;'"()\[\]{}/*\\-]+$`
</Note>

***

```
POST https://{baseUrl}/api/sp1307
```

### Request Parameters

<ParamField body="merOrderNo" type="string" required>
  Your unique merchant order number. Must be consistent with the value used in sp1306. Max 32 characters.
</ParamField>

<ParamField body="infoObject" type="object" required>
  Transfer settings and callback configuration.

  <Expandable title="infoObject fields">
    <ParamField body="feeDirection" type="string" required>
      Fee arrangement. Required when `settlementNetwork` is `SWIFT`.

      * `OUR` — sender bears all fees.
      * `SHA` — each party bears their own bank fees.
      * `BEN` — receiver bears all fees.
    </ParamField>

    <ParamField body="tradeComments" type="string">
      Optional transfer remarks. Max 255 characters.
    </ParamField>

    <ParamField body="callbackUrl" type="string" required>
      Your HTTPS callback URL to receive the sp3302 webhook with the final transfer result. Max 255 characters.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="senderObject" type="object" required>
  Enterprise sender's company and address information.

  <Expandable title="senderObject fields">
    <ParamField body="senderId" type="string">
      Pre-registered sender ID. If provided, skip all company fields below.
    </ParamField>

    <ParamField body="bizMode" type="string" required>
      Business mode. Must be `B` for enterprise.
    </ParamField>

    <ParamField body="bankCountry" type="string" required>
      ISO 3166-1 alpha-2 country code of the sender's bank. Also used as the source-of-funds country.
    </ParamField>

    <ParamField body="registerCountry" type="string" required>
      Country where the company is registered.
    </ParamField>

    <ParamField body="companyName" type="string" required>
      Company name. Allowed characters: `^[a-zA-Z0-9\s.,!?:;'"()\[\]{}/*\\-]+$`
    </ParamField>

    <ParamField body="companyRegisterNo" type="string" required>
      Company registration certificate number.
    </ParamField>

    <ParamField body="companyIssueDate" type="string" required>
      Certificate issue date. Format: `YYYY-MM-DD`.
    </ParamField>

    <ParamField body="companyExpiryDate" type="string" required>
      Certificate expiry date. Format: `YYYY-MM-DD`.
    </ParamField>

    <ParamField body="businessLicenseImg" type="string">
      Business license image. Required when `bankCountry` is `CN`.
    </ParamField>

    <ParamField body="registerCertImg" type="string">
      Business registration certificate image. Required when `bankCountry` is `HK`.
    </ParamField>

    <ParamField body="incorporateCertImg" type="string">
      Certificate of incorporation image. Required when `bankCountry` is non-CN. Also required when `bankCountry` is `HK`.
    </ParamField>

    <ParamField body="emailNo" type="string">
      Company email address (optional).
    </ParamField>

    <ParamField body="phoneAreaCode" type="string">
      Phone area code (optional). Must be provided together with `phoneNo` or both must be empty. See the phone code dictionary.
    </ParamField>

    <ParamField body="phoneNo" type="string">
      Phone number (optional). Must be provided together with `phoneAreaCode` or both must be empty.
    </ParamField>

    <ParamField body="businessNature" type="string" required>
      businessNature.
    </ParamField>

    <ParamField body="addressCountry" type="string" required>
      Country of business address. See the country dictionary.
    </ParamField>

    <ParamField body="addressProvince" type="string" required>
      State or province. Use the English name for non-CN countries. Use the province/city code for CN. See the dictionary.
    </ParamField>

    <ParamField body="addressCity" type="string" required>
      City.
    </ParamField>

    <ParamField body="addressLine" type="string" required>
      Street address. Allowed characters: `^[a-zA-Z0-9\s.,!?:;'"()\[\]{}/*\\-]+$`
    </ParamField>

    <ParamField body="postCode" type="string" required>
      Postal code.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="receiverObject" type="object" required>
  Enterprise receiver's bank account and company information.

  <Expandable title="receiverObject fields">
    <ParamField body="receiverId" type="string">
      Pre-registered receiver ID. If provided, skip all company fields below.
    </ParamField>

    <ParamField body="payoutMethod" type="string" required>
      Payment method. For `SWIFT`, the default is `WIRE`. For `LOCAL`, see the payment method data dictionary.
    </ParamField>

    <ParamField body="bizMode" type="string" required>
      Business mode. Must be `B` for enterprise.
    </ParamField>

    <ParamField body="accountNo" type="string" required>
      Bank account number.
    </ParamField>

    <ParamField body="bankCode" type="string">
      Bank code. Rules:

      * For `LOCAL`: required when `payoutMethod` is not `WECHAT` or `ALIPAY`. Also required when `bankCountry` is `CN`, `BR`, or `IN` (in which case `branchCode` is also required).
      * For `SWIFT`: not required (use `bankName` instead).
    </ParamField>

    <ParamField body="bankName" type="string">
      Bank name.
    </ParamField>

    <ParamField body="branchCode" type="string">
      Branch code.
    </ParamField>

    <ParamField body="proxyBankName" type="string">
      Correspondent bank name. Optional, `SWIFT` only. Either provide all three proxy bank fields or none.
    </ParamField>

    <ParamField body="proxyBankAddress" type="string">
      Correspondent bank address. Optional, `SWIFT` only.
    </ParamField>

    <ParamField body="proxyBankSwiftCode" type="string">
      Correspondent bank SWIFT code. Optional, `SWIFT` only.
    </ParamField>

    <ParamField body="swiftCode" type="string">
      SWIFT/BIC code of the receiver's bank. Required when `settlementNetwork` is `SWIFT`.
    </ParamField>

    <ParamField body="registerCountry" type="string" required>
      Country where the receiver's company is registered.
    </ParamField>

    <ParamField body="companyName" type="string" required>
      Company name.
    </ParamField>

    <ParamField body="businessLicenseImg" type="string">
      Business license image (optional). Applicable for CN.
    </ParamField>

    <ParamField body="registerCertImg" type="string">
      Business registration certificate image (optional). Applicable for HK.
    </ParamField>

    <ParamField body="incorporateCertImg" type="string">
      Certificate of incorporation image (optional). Applicable for non-CN and HK.
    </ParamField>

    <ParamField body="emailNo" type="string">
      Company email address (optional).
    </ParamField>

    <ParamField body="phoneAreaCode" type="string">
      Phone area code. Required when `bankCountry` is `BR`, `KR`, `MA`, or `IN`. See the phone code dictionary.
    </ParamField>

    <ParamField body="phoneNo" type="string">
      Phone number (optional).
    </ParamField>

    <ParamField body="addressCountry" type="string" required>
      Country of business address. See the country dictionary.
    </ParamField>

    <ParamField body="addressProvince" type="string" required>
      State or province. Use the English name for non-CN countries. Use the province/city code for CN. See the dictionary.
    </ParamField>

    <ParamField body="addressCity" type="string" required>
      City.
    </ParamField>

    <ParamField body="addressLine" type="string" required>
      Street address.
    </ParamField>

    <ParamField body="postCode" type="string">
      Postal code (optional).
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="complianceObject" type="object" required>
  Compliance and purpose information.

  <Expandable title="complianceObject fields">
    <ParamField body="fundSource" type="string" required>
      Source of funds for the sender (enterprise). Use `01` (company funds).
    </ParamField>

    <ParamField body="purpose" type="string" required>
      Transfer purpose code. See the purpose data dictionary.
    </ParamField>

    <ParamField body="relationship" type="string">
      Relationship between sender and receiver (optional).
    </ParamField>

    <ParamField body="proofDocuments" type="array">
      Supporting transaction documents (optional). Maximum 5 items.
    </ParamField>
  </Expandable>
</ParamField>

### Response Body

<ResponseField name="merOrderNo" type="string">
  Echo of your merchant order number.
</ResponseField>

<ResponseField name="senderAmount" type="object">
  Sender amount and currency information.

  <Expandable title="senderAmount fields">
    <ResponseField name="currency" type="string">
      Sender's currency code (ISO 4217).
    </ResponseField>

    <ResponseField name="amount" type="string">
      Sender's amount. Two decimal places, format: `999999.99`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="receiverAmount" type="object">
  Receiver amount, currency, and bank country information.

  <Expandable title="receiverAmount fields">
    <ResponseField name="currency" type="string">
      Receiver's currency code (ISO 4217).
    </ResponseField>

    <ResponseField name="amount" type="string">
      Receiver's amount. Two decimal places, format: `999999.99`.
    </ResponseField>

    <ResponseField name="bankCountry" type="string">
      ISO 3166-1 alpha-2 country code of the receiver's bank.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="infoObject" type="object">
  Transfer status and reference information.

  <Expandable title="infoObject fields">
    <ResponseField name="bizFlow" type="string">
      System business flow number. Consistent with the value returned by sp1306. Retain this for reconciliation.
    </ResponseField>

    <ResponseField name="senderId" type="string">
      Sender's registered ID. Present once the transfer is successfully confirmed.
    </ResponseField>

    <ResponseField name="receiverId" type="string">
      Receiver's registered ID. Present once the transfer is successfully confirmed.
    </ResponseField>

    <ResponseField name="settlementNetwork" type="string">
      Settlement network used: `LOCAL` or `SWIFT`.
    </ResponseField>

    <ResponseField name="rate" type="string">
      Exchange rate applied to this transfer.
    </ResponseField>

    <ResponseField name="status" type="string">
      Current order status. Initial value is `PROCESS` (processing). The final result (`SUCC` or `FAIL`) is delivered asynchronously via the sp3302 webhook.
    </ResponseField>

    <ResponseField name="code" type="string">
      Transaction response code.
    </ResponseField>

    <ResponseField name="message" type="string">
      Transaction response message.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```json Request theme={null}
  {
    "merOrderNo": "335621309488901",
    "infoObject": {
      "feeDirection": "OUR",
      "tradeComments": "Service payment",
      "callbackUrl": "https://yourplatform.com/callback/transfer"
    },
    "senderObject": {
      "bizMode": "B",
      "bankCountry": "CN",
      "registerCountry": "CN",
      "companyName": "Acme Trading Co Ltd",
      "companyRegisterNo": "91110000123456789X",
      "companyIssueDate": "2015-03-01",
      "companyExpiryDate": "2035-03-01",
      "businessLicenseImg": "https://example.com/license.jpg",
      "addressCountry": "CN",
      "addressProvince": "110000",
      "addressCity": "Beijing",
      "addressLine": "No.88 Business Avenue"
    },
    "receiverObject": {
      "bizMode": "B",
      "payoutMethod": "WIRE",
      "accountNo": "987654321",
      "bankName": "JPMORGAN CHASE BANK",
      "swiftCode": "CHASUS33",
      "registerCountry": "US",
      "companyName": "Global Supply Inc",
      "addressCountry": "US",
      "addressProvince": "New York",
      "addressCity": "New York",
      "addressLine": "500 Fifth Avenue"
    },
    "complianceObject": {
      "fundSource": "01",
      "purpose": "36"
    }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "merOrderNo": "335621309488901",
    "senderAmount": {
      "currency": "CNY",
      "amount": "71250.00"
    },
    "receiverAmount": {
      "currency": "USD",
      "amount": "10000.00",
      "bankCountry": "US"
    },
    "infoObject": {
      "bizFlow": "21875022415083500100",
      "senderId": "2606261153232500001100",
      "receiverId": "40206062616072300019",
      "settlementNetwork": "SWIFT",
      "rate": "7.1250",
      "status": "PROCESS",
      "code": "S00001",
      "message": "Processing"
    }
  }
  ```
</ResponseExample>

***

## Sandbox Testing

In the sandbox environment, the final transfer result is determined by the **last digit of the submitted amount**:

| Last digit | Simulated result                 |
| ---------- | -------------------------------- |
| 0 – 3      | Success (`SUCC`)                 |
| 4 – 6      | Rejected (`FAIL`)                |
| 7 – 9      | No action (remains in `PROCESS`) |
