> ## 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 | C2C

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

<Note>
  **C2C** (Consumer-to-Consumer): both sender (`senderObject.bizMode = C`) and receiver (`receiverObject.bizMode = C`) are individuals.
  English names and addresses must match the regex: `^[a-zA-Z0-9\s.,!?:;'"()\[\]{}/*\\-]+$`
  Chinese names and addresses must match the regex: `^[\u4e00-\u9fff·\s\d()（）\-—&·.,、]+$`
</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>
  Individual sender's identity and address information.

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

    <ParamField body="bizMode" type="string" required>
      Business mode. Must be `C` for individual.
    </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="idType" type="string" required>
      ID document type. `01` = National ID card, `02` = Passport.
    </ParamField>

    <ParamField body="idNumber" type="string" required>
      ID document number.
    </ParamField>

    <ParamField body="frontCertImg" type="string" required>
      National emblem side of the ID card, or passport photo page (passport has one image only).
    </ParamField>

    <ParamField body="backCertImg" type="string" required>
      Portrait side of the ID card. Required when `idType` is `01`.
    </ParamField>

    <ParamField body="idExpiryStart" type="string" required>
      ID validity start date. Format: `YYYY-MM-DD`.
    </ParamField>

    <ParamField body="idExpiryEnd" type="string" required>
      ID validity end date. Format: `YYYY-MM-DD`.
    </ParamField>

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

    <ParamField body="lastName" type="string" required>
      English last name.
    </ParamField>

    <ParamField body="birthDate" type="string" required>
      Date of birth. Format: `YYYY-MM-DD`.
    </ParamField>

    <ParamField body="placeOfBirth" type="string" required>
      Place of birth. See the country dictionary.
    </ParamField>

    <ParamField body="nationality" type="string" required>
      Nationality. See the country dictionary.
    </ParamField>

    <ParamField body="gender" type="string" required>
      Gender. `M` = Male, `F` = Female, `X` = Other.
    </ParamField>

    <ParamField body="emailNo" type="string">
      Personal 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="addressCountry" type="string" required>
      Country of residence. 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>

    <ParamField body="occupation" type="string">
      Occupation (optional). See the occupation dictionary.
    </ParamField>
  </Expandable>
</ParamField>

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

  <Expandable title="receiverObject fields">
    <ParamField body="receiverId" type="string">
      Pre-registered receiver ID. If provided, skip all individual 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 `C` for individual.
    </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="idType" type="string" required>
      ID document type. `01` = National ID card, `02` = Passport.
    </ParamField>

    <ParamField body="idNumber" type="string" required>
      ID document number.
    </ParamField>

    <ParamField body="frontCertImg" type="string">
      National emblem side of the ID card, or passport photo page.
    </ParamField>

    <ParamField body="backCertImg" type="string">
      Portrait side of the ID card. Required when `idType` is `01`.
    </ParamField>

    <ParamField body="firstName" type="string" required>
      Given name. For `LOCAL` transfers to CN in CNY, use the Chinese name; otherwise use the same format as the sender.
    </ParamField>

    <ParamField body="lastName" type="string" required>
      English last name.
    </ParamField>

    <ParamField body="birthDate" type="string" required>
      Date of birth. Format: `YYYY-MM-DD`.
    </ParamField>

    <ParamField body="placeOfBirth" type="string" required>
      Place of birth. See the country dictionary.
    </ParamField>

    <ParamField body="nationality" type="string" required>
      Nationality. See the country dictionary.
    </ParamField>

    <ParamField body="gender" type="string" required>
      Gender. `M` = Male, `F` = Female, `X` = Other.
    </ParamField>

    <ParamField body="emailNo" type="string">
      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 residence. 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">
      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 (individual). Use `02` (personal 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": "335621309488900",
    "infoObject": {
      "feeDirection": "SHA",
      "tradeComments": "Family support",
      "callbackUrl": "https://yourplatform.com/callback/transfer"
    },
    "senderObject": {
      "bizMode": "C",
      "bankCountry": "CN",
      "idType": "01",
      "idNumber": "110101199001011234",
      "frontCertImg": "https://example.com/id-front.jpg",
      "backCertImg": "https://example.com/id-back.jpg",
      "idExpiryStart": "2020-01-01",
      "idExpiryEnd": "2030-01-01",
      "firstName": "San",
      "lastName": "Zhang",
      "birthDate": "1990-01-01",
      "placeOfBirth": "CN",
      "nationality": "CN",
      "gender": "M",
      "addressCountry": "CN",
      "addressProvince": "110000",
      "addressCity": "Beijing",
      "addressLine": "No.1 Changan Street"
    },
    "receiverObject": {
      "bizMode": "C",
      "payoutMethod": "WIRE",
      "accountNo": "123456789",
      "bankName": "BANK OF AMERICA",
      "swiftCode": "BOFAUS3N",
      "idType": "02",
      "idNumber": "A12345678",
      "frontCertImg": "https://example.com/passport.jpg",
      "backCertImg": "",
      "firstName": "John",
      "lastName": "Smith",
      "birthDate": "1985-05-15",
      "placeOfBirth": "US",
      "nationality": "US",
      "gender": "M",
      "addressCountry": "US",
      "addressProvince": "California",
      "addressCity": "Los Angeles",
      "addressLine": "123 Main St"
    },
    "complianceObject": {
      "fundSource": "02",
      "purpose": "45"
    }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "merOrderNo": "335621309488900",
    "senderAmount": {
      "currency": "CNY",
      "amount": "712.50"
    },
    "receiverAmount": {
      "currency": "USD",
      "amount": "100.00",
      "bankCountry": "US"
    },
    "infoObject": {
      "bizFlow": "21875022415083500099",
      "senderId": "a1b2c3d4e5f6",
      "receiverId": "f6e5d4c3b2a1",
      "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`) |
