Skip to main content

B2B Transfers

"B2B Transfer" is Transferring an Amount from one Merchant Account's Balance (sender) to another (receiver).

As this is an entirely Internal process the Amount will immediately become Booked in the Receiver's Balance.

B2B Transfer

1. Check Merchant Details

We can check the Merchant's Allowed (Min and Max) Balances by using the 1.5 Get Account Information method.

Check "Sender" Merchant's Balance Limits

Get Account Info Request

Path:

GET {baseURL}/account/MERCH-DE-1111?partnerReference=DEV-SVR001-DE_MERCHID-INT-01&programCode=ACMEPROG&accnoType=00&localDate=2019-12-31&localTime=235959

Header:

Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=

Get Account Info Response

Status Code:

200 (OK)

Header:

Content-Type: application/json
Accept-Language: en-US
{
"accno": "MERCHANT-DE-1111",
"externalAccountReference": "MERCHANT-DE-1111",
"title": 1,
"lastName": "Merchant 01",
"firstName": "Example",
"merchantName": "MERCHANT-DE-1111",
"addr1": "Leopoldstrasse 244",
"city": "Munich",
"countryCode": "DE",
"countryCode3": "DEU",
"countryName": "Germany",
"postCode": "80807",
"dob": "1990-12-31",
"emailAddress": "merch.de.1111@example.com",
"currCode": "EUR",
"accTypeName": "Merchant Account",
"accTypeCode": "MA",
"maximumAllowedBalance": 100000.00,
"minimumAllowedBalance": 00.00,
"statusCode": "ACTIVE",
"accFlowStatusCode": "APPROVEDFV",
"nationality": "DE",
"nationality3": "DEU",
"businessCompanyName": "ACME Corp GmbH",
"businessCompanyRegistrationCountryCode": "DE",
"businessCompanyRegistrationCountryCode3": "DEU",
"businessAddr1": "Leopoldstrasse 244",
"businessCity": "Munich",
"businessPostCode": "80807",
"businessCountryCode": "DE",
"businessCountryCode3": "DEU",
"accountCreationDate": "2020-09-18",
"accountValidUntil": "2999-12-31",
"programCode": "ACMEPROG",
"partnerReference": "DEV-SVR001-DE_MERCHID-INT-01",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "225959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}

From the values of "minimumAllowedBalance", "maximumAllowedBalance" and "currCode" we see the "MERCHANT-DE-1111" Account's Balance Limits are set form 0.00 EUR to 100000.00 EUR.

Check "Receiver" Merchant's Balance Limits

Get Account Info Request

Path:

GET {baseURL}/account/MERCH-DE-2222?partnerReference=DEV-SVR001-DE_MERCHID-INT-02&programCode=ACMEPROG&accnoType=00&localDate=2019-12-31&localTime=235959

Header:

Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=

Get Account Info Response

Status Code:

200 (OK)

Header:

Content-Type: application/json
Accept-Language: en-US
{
"accno": "MERCHANT-DE-2222",
"externalAccountReference": "MERCHANT-DE-2222",
"title": 1,
"lastName": "Merchant 02",
"firstName": "Example",
"merchantName": "MERCHANT-DE-2222",
"addr1": "Leopoldstrasse 244",
"city": "Munich",
"countryCode": "DE",
"countryCode3": "DEU",
"countryName": "Germany",
"postCode": "80807",
"dob": "1990-12-31",
"emailAddress": "merch.de.2222@example.com",
"currCode": "EUR",
"accTypeName": "Merchant Account",
"accTypeCode": "MA",
"maximumAllowedBalance": 50000.00,
"minimumAllowedBalance": 00.00,
"statusCode": "ACTIVE",
"accFlowStatusCode": "APPROVEDFV",
"nationality": "DE",
"nationality3": "DEU",
"businessCompanyName": "ACME Corp GmbH",
"businessCompanyRegistrationCountryCode": "DE",
"businessCompanyRegistrationCountryCode3": "DEU",
"businessAddr1": "Leopoldstrasse 244",
"businessCity": "Munich",
"businessPostCode": "80807",
"businessCountryCode": "DE",
"businessCountryCode3": "DEU",
"accountCreationDate": "2020-09-18",
"accountValidUntil": "2999-12-31",
"programCode": "ACMEPROG",
"partnerReference": "DEV-SVR001-DE_MERCHID-INT-02",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "225959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}

From the values of "minimumAllowedBalance", "maximumAllowedBalance" and "currCode" we see the "MERCHANT-DE-2222" Account's Balance Limits are set form 0.00 EUR to 50000.00 EUR.

We can check the Current Balances of both the "Sender" and "Receiver" Merchants by using 1.8 Balance Enquiry.

Check "Sender" Merchant's Current Balance

Balance Enquiry Request

Path:

GET {baseURL}/account/MERCH-DE-1111/balance?partnerReference=DEV-SVR001-DE_MERCHID-INT-01&programCode=ACMEPROG&accnoType=00&localDate=2019-12-31&localTime=235959

Header:

Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=

Balance Enquiry Response

Status Code:

200 (OK)

Header:

Content-Type: application/json
Accept-Language: en-US
{
"accno": "MERCHANT-DE-1111",
"psBal": 0.00,
"avlBal": 50.00,
"bkBal": 50.00,
"blkAmt": 0.00,
"currCode": "EUR",
"programCode": "ACMEPROG",
"partnerReference": "DEV-SVR001-DE_MERCHID-INT-01",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "225959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}

The value of "avlBal" shows the "MERCHANT-DE-1111" Account currently has 50.00 EUR as Available Balance.

Check "Receiver" Merchant's Current Balance

Balance Enquiry Request

Path:

GET {baseURL}/account/MERCH-DE-2222/balance?partnerReference=DEV-SVR001-DE_MERCHID-INT-02&programCode=ACMEPROG&accnoType=00&localDate=2019-12-31&localTime=235959

Header:

Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=

Balance Enquiry Response

Status Code:

200 (OK)

Header:

Content-Type: application/json
Accept-Language: en-US
{
"accno": "MERCHANT-DE-2222",
"psBal": 0.00,
"avlBal": 0.00,
"bkBal": 0.00,
"blkAmt": 0.00,
"currCode": "EUR",
"programCode": "ACMEPROG",
"partnerReference": "DEV-SVR001-DE_MERCHID-INT-02",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "225959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}

The value of "avlBal" shows the "MERCHANT-DE-2222" Account currently has an Empty Account Balance.

2. Create a "B2B Transaction"

Using 1.121 KC-Debit Account we transfer 10.00 EUR from the "MERCH-DE-1111" Merchant to "MERCH-DE-2222".

info

For "B2B Transfers" we must use 1.121 KC-Debit Account without the "depositReference" parameter

KC-Debit Account Request

Path:

PUT {baseURL}/payment/kc-debitAccount

Header:

Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=
{
"partnerReference": "DEV-SVR001-DE_MERCHID-INT-KCB2B001",
"merchantProgramCode": "ACMEPROG",
"merchantAccno": "MERCHANT-DE-2222",
"programAccno": "1234567890",
"accno": "MERCHANT-DE-1111",
"accnoType": "00",
"paymentAmount": 10.00,
"paymentCurrCode": "EUR",
"paymentUsage": "Merch-2-Merch Transfer",
"useDifferentBillingAddress": false,
"localDate": "2019-12-31",
"localTime": "235959"
}

KC-Debit Account Response

Status Code:

200 (OK)

Header:

Content-Type: application/json
Accept-Language: en-US
{
"uniqueReference": "a1B2c3D4e5F6g7H8i9J0",
"accno": "MERCHANT-DE-1111",
"programAccno": "1234567890",
"merchantAccno": "MERCHANT-DE-2222",
"merchantProgramCode": "ACMEPROG"
"paymentAmount": 10.00,
"paymentCurrCode": "EUR",
"paymentUsage": "Merch-2-Merch Transfer",
"fxRate": 1.0,
"statusCode": "SETTLED",
"partnerReference": "DEV-SVR001-DE_MERCHID-INT-KCB2B001",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "225959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}

The response contains the transaction reference of the "B2B Transfer" in "uniqueReference" and the "statusCode" with value "SETTLED" indicates the amount was successfully Booked in the Receiver Account's Current Balance.

If we call 1.8 Balance Enquiry again it's response will confirm the "MERCH-DE-1111" Account has 40.00 EUR left in it's Current Balance and the "MERCH-DE-2222" Account now has an Available Balance of 10.00 EUR.

3. Refund a "B2B Transaction"

Refunds of "B2B Transfers", like the "B2B Transfers" themselves, are entirely Internal and immediately become Booked.

B2B refunds

Refunding a "B2B Transfer" Transaction

Refunds of "B2B Transfers", similar to Refunds of Guest Payments or Technical Account Payments, can either Refund the Full Amount of the "B2B Transfer" or only a Partial Amount. This can be done via the 1.16 KC-Refund API method.

info

As this refund will be entirely Internal the "refundType" must be used with the value "0". Please refer to the "Refund Type" Lookup section for a full list of codes and descriptions.


- Full Amount Refund

- Partial Amount Refund


Full Amount Refund

KC-Refund Request

Path:

POST {baseURL}/payment/a1B2c3D4e5F6g7H8i9J0/kc-refund

Header:

Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=
{
"partnerReference": "DEV-SVR001-DE_MERCH-B2B-REFUND-001",
"refundType": 0,
"paymentUsage": "Full Amount B2B Refund",
"localDate": "2019-12-31",
"localTime": "235959"
}
KC-Refund Response

Status Code:

200 (OK)

Header:

Content-Type: application/json
Accept-Language: en-US
{
"uniqueReference": "z0Y9x8W7v6U5t4S3r2Q1",
"accno": "MERCHANT-DE-1111",
"statusCode": "SETTLED",
"partnerReference": "DEV-SVR001-DE_MERCH-B2B-REFUND-001",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "225959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}

If we call 1.8 Balance Enquiry again it's response will confirm the Current Balances of the "MERCH-DE-1111" and "MERCH-DE-2222" Accounts have reverted back to their original values, before the "B2B Transfer" was created.

Partial Amount Refund

info

To perform a Refund for a Partial Amount the "refundAmount" must be specified (less then the payment amount). Refund transactions inherit the currency of the original transaction.

KC-Refund Request

Path:

POST {baseURL}/payment/a1B2c3D4e5F6g7H8i9J0/kc-refund

Header:

Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=
{
"partnerReference": "DEV-SVR001-DE_MERCH-B2B-REFUND-002",
"refundType": 0,
"refundAmount": 5.00,
"paymentUsage": "Partial Amount B2B Refund",
"localDate": "2019-12-31",
"localTime": "235959"
}
KC-Refund Response

Status Code:

200 (OK)

Header:

Content-Type: application/json
Accept-Language: en-US
{
"uniqueReference": "z0Y9x8W7v6U5t4S3r2Q1",
"accno": "MERCHANT-DE-1111",
"statusCode": "SETTLED",
"partnerReference": "DEV-SVR001-DE_MERCH-B2B-REFUND-002",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "225959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}

If we call 1.8 Balance Enquiry again it's response will show the "MERCH-DE-1111" Account has 45.00 EUR in it's Current Balance and the "MERCH-DE-2222" Account has 5.00 EUR after the Partial Refund of the "B2B Transfer".

info

Multiple "Partial Amount Refunds" can be made, up to the Full Amount of the "B2B Transaction".