# PayMe API Documentation ## Marketplaces & Platforms - [Merchant Default URLs](https://docs-staging.payme.io/marketplaces-and-platforms/overview/merchant-default-urls): Upon creating your Merchant account with us, you will be required to provide a few default URLs for various calls. More examples can be found further in the documentation. # Merchant Default URLs Upon creating your Merchant account with us, you will be required to provide a few default URLs for various calls. More examples can be found further in the documentation. | Environment | URL | | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Callback URL | Used for server-to-server responses regarding calls made to our API. These will be x-www-form-urlencoded formatted POST requests to the URL. | | Return URL | IFRAME users only - We will redirect the customer to this URL after the sale is paid successfully. This is usually the success page. Those will be GET requests with parameters. | - [Apple Pay](https://docs-staging.payme.io/marketplaces-and-platforms/payments/apple-pay): The payment method is limited to be used in the following devices manufactured by Apple: # Apple Pay The payment method is limited to be used in the following devices manufactured by Apple: **iOS Devices** | **Mac OS Devices** --|-- Safari browser , on an Apple Pay-enabled iOS device | Safari browser on a Macbook Pro with Touch ID or a Mac model 2012 or later paired to a compatible iOS/Apple Watch with handoff enabled. In order to be able to accept Apple Pay payments on your website, first contact PayMe Partners partners@payme.io to start integration process. Then you will need to complete the following steps: 1. Adding the file to your website, under the proper folder (Explained in [Step 1](#step-1-domain-verification)). 2. Signing up your website to Apple Pay via [/api/vas-enable](https://docs-staging.payme.io/payments/apple-pay/post-vas-enable-apple-pay) request. 3. Logging in to a [Testing iCloud account](#step-3-add-apple-icloud-account-and-testing-cards). (The account credentials will be provided by PayMe) 4. Use our API to [generate a new payment using Apple Pay](https://docs-staging.payme.io/payments/apple-pay/post-generate-sale-apple-pay). 5. Test your integration (Explained in [step 5](#step-5-test-your-integration)) ### Devices supported for Sandbox Testing You can use the following devices for testing in sandbox: - iPhone 6 or later - iPad mini 3 or later - iPad Air 2 - iPad Pro - Apple Watch **Please note that you can not use Mac device for testing.** ## Step 1: Domain Verification The first step in the process of accepting Apple Pay on your webiste will be to register your domains. You will need to register both top-level domains and sub-domains serperately. Top-level domain example: `www.payme.io` Sub-domain example: `www.marketplace.payme.io` ### Hosting the Apple Pay's domain verification file on your server Host the file at `/.well-known/apple-developer-merchantid-domain-association` on your domain(s) that will display the Apple Pay button. >Apple Pay can be tested in Production environment only. ### File to Host Create a text file with the following text, then add it to the `.well-known` folder under the name `apple-developer-merchantid-domain-association`. Make sure the folder is public, save the file without .txt ending. ```json 7B227073704964223A2230384641324636393342433744413942333336423031373431303038333532374133413243354339343039354142463539333535363042443944434639333032222C2276657273696F6E223A312C22637265617465644F6E223A313632383030303737393730352C227369676E6174757265223A223330383030363039326138363438383666373064303130373032613038303330383030323031303133313066333030643036303936303836343830313635303330343032303130353030333038303036303932613836343838366637306430313037303130303030613038303330383230336533333038323033383861303033303230313032303230383463333034313439353139643534333633303061303630383261383634386365336430343033303233303761333132653330326330363033353530343033306332353431373037303663363532303431373037303663363936333631373436393666366532303439366537343635363737323631373436393666366532303433343132303264323034373333333132363330323430363033353530343062306331643431373037303663363532303433363537323734363936363639363336313734363936663665323034313735373436383666373236393734373933313133333031313036303335353034306130633061343137303730366336353230343936653633326533313062333030393036303335353034303631333032353535333330316531373064333133393330333533313338333033313333333233353337356131373064333233343330333533313336333033313333333233353337356133303566333132353330323330363033353530343033306331633635363336333264373336643730326436323732366636623635373232643733363936373665356635353433333432643530353234663434333131343330313230363033353530343062306330623639346635333230353337393733373436353664373333313133333031313036303335353034306130633061343137303730366336353230343936653633326533313062333030393036303335353034303631333032353535333330353933303133303630373261383634386365336430323031303630383261383634386365336430333031303730333432303030346332313537376564656264366337623232313866363864643730393061313231386463376230626436663263323833643834363039356439346166346135343131623833343230656438313166333430376538333333316631633534633366376562333232306436626164356434656666343932383938393365376330663133613338323032313133303832303230643330306330363033353531643133303130316666303430323330303033303166303630333535316432333034313833303136383031343233663234396334346639336534656632376536633466363238366333666132626266643265346233303435303630383262303630313035303530373031303130343339333033373330333530363038326230363031303530353037333030313836323936383734373437303361326632663666363337333730326536313730373036633635326536333666366432663666363337333730333033343264363137303730366336353631363936333631333333303332333038323031316430363033353531643230303438323031313433303832303131303330383230313063303630393261383634383836663736333634303530313330383166653330383163333036303832623036303130353035303730323032333038316236306338316233353236353663363936313665363336353230366636653230373436383639373332303633363537323734363936363639363336313734363532303632373932303631366537393230373036313732373437393230363137333733373536643635373332303631363336333635373037343631366536333635323036663636323037343638363532303734363836353665323036313730373036633639363336313632366336353230373337343631366536343631373236343230373436353732366437333230363136653634323036333666366536343639373436393666366537333230366636363230373537333635326332303633363537323734363936363639363336313734363532303730366636633639363337393230363136653634323036333635373237343639363636393633363137343639366636653230373037323631363337343639363336353230373337343631373436353664363536653734373332653330333630363038326230363031303530353037303230313136326136383734373437303361326632663737373737373265363137303730366336353265363336663664326636333635373237343639363636393633363137343635363137353734363836663732363937343739326633303334303630333535316431663034326433303262333032396130323761303235383632333638373437343730336132663266363337323663326536313730373036633635326536333666366432663631373037303663363536313639363336313333326536333732366333303164303630333535316430653034313630343134393435376462366664353734383138363839383937363266376535373835303765373962353832343330306530363033353531643066303130316666303430343033303230373830333030663036303932613836343838366637363336343036316430343032303530303330306130363038326138363438636533643034303330323033343930303330343630323231303062653039353731666537316531653733356235356535616661636234633732666562343435663330313835323232633732353130303262363165626436663535303232313030643138623335306135646436646436656231373436303335623131656232636538376366613365366166366362643833383038393064633832636464616136333330383230326565333038323032373561303033303230313032303230383439366432666266336139386461393733303061303630383261383634386365336430343033303233303637333131623330313930363033353530343033306331323431373037303663363532303532366636663734323034333431323032643230343733333331323633303234303630333535303430623063316434313730373036633635323034333635373237343639363636393633363137343639366636653230343137353734363836663732363937343739333131333330313130363033353530343061306330613431373037303663363532303439366536333265333130623330303930363033353530343036313330323535353333303165313730643331333433303335333033363332333333343336333333303561313730643332333933303335333033363332333333343336333333303561333037613331326533303263303630333535303430333063323534313730373036633635323034313730373036633639363336313734363936663665323034393665373436353637373236313734363936663665323034333431323032643230343733333331323633303234303630333535303430623063316434313730373036633635323034333635373237343639363636393633363137343639366636653230343137353734363836663732363937343739333131333330313130363033353530343061306330613431373037303663363532303439366536333265333130623330303930363033353530343036313330323535353333303539333031333036303732613836343863653364303230313036303832613836343863653364303330313037303334323030303466303137313138343139643736343835643531613565323538313037373665383830613265666465376261653464653038646663346239336531333335366435363635623335616532326430393737363064323234653762626130386664373631376365383863623736626236363730626563386538323938346666353434356133383166373330383166343330343630363038326230363031303530353037303130313034336133303338333033363036303832623036303130353035303733303031383632613638373437343730336132663266366636333733373032653631373037303663363532653633366636643266366636333733373033303334326436313730373036633635373236663666373436333631363733333330316430363033353531643065303431363034313432336632343963343466393365346566323765366334663632383663336661326262666432653462333030663036303335353164313330313031666630343035333030333031303166663330316630363033353531643233303431383330313638303134626262306465613135383333383839616134386139396465626562646562616664616362323461623330333730363033353531643166303433303330326533303263613032616130323838363236363837343734373033613266326636333732366332653631373037303663363532653633366636643266363137303730366336353732366636663734363336313637333332653633373236633330306530363033353531643066303130316666303430343033303230313036333031303036306132613836343838366637363336343036303230653034303230353030333030613036303832613836343863653364303430333032303336373030333036343032333033616366373238333531313639396231383666623335633335366361363262666634313765646439306637353464613238656265663139633831356534326237383966383938663739623539396639386435343130643866396465396332666530323330333232646435343432316230613330353737366335646633333833623930363766643137376332633231366439363466633637323639383231323666353466383761376431623939636239623039383932313631303639393066303939323164303030303331383230313863333038323031383830323031303133303831383633303761333132653330326330363033353530343033306332353431373037303663363532303431373037303663363936333631373436393666366532303439366537343635363737323631373436393666366532303433343132303264323034373333333132363330323430363033353530343062306331643431373037303663363532303433363537323734363936363639363336313734363936663665323034313735373436383666373236393734373933313133333031313036303335353034306130633061343137303730366336353230343936653633326533313062333030393036303335353034303631333032353535333032303834633330343134393531396435343336333030643036303936303836343830313635303330343032303130353030613038313935333031383036303932613836343838366637306430313039303333313062303630393261383634383836663730643031303730313330316330363039326138363438383666373064303130393035333130663137306433323331333033383330333333313334333233363331333935613330326130363039326138363438383666373064303130393334333131643330316233303064303630393630383634383031363530333034303230313035303061313061303630383261383634386365336430343033303233303266303630393261383634383836663730643031303930343331323230343230343532666263656430373962393232386666393763353931643362326432323364633239376139383561376338376235613337393836653438653736626133373330306130363038326138363438636533643034303330323034343733303435303232303165336531373939663330343731633339366166626635316463346637643035333239303139393734326163373836383634353133646462383464343835383030323231303065656463653563356138313661623366666263323664613830623637383064646261313933313538323261393839656330396264306665386136623766326134303030303030303030303030227D ``` **When completing your testing process, you will need to exchange the sandbox file with the production file.** ## Step 2: Enabling the Apple Pay Payment Method By using the [VAS-Enable API request](https://docs-staging.payme.io/payments/apple-pay/post-vas-enable-apple-pay), you will need to register your websites to PayMe's system. ```json { "payme_client_key": "payme_partner_key", "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "vas_data": { "websites": [ "payme.io", "marketplace.payme.io" ] }, "language": "en" } ``` A successful response will be 200 and includes a payload in the form of: ```json { "status_code": 0, "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "vas_description": "Payments Account", "vas_type": "AlternativePaymentMethod", "vas_api_key": "", "vas_is_active": true, "vas_payer_type": 2, "vas_price_currency": "ILS", "vas_price_setup_fixed": 0, "vas_price_periodic_fixed": 0, "vas_price_periodic_variable": "0.00", "vas_price_usage_fixed": 0, "vas_price_usage_variable": "0.00", "vas_market_fee": null, "vas_period": 1, "vas_data": { "websites": [ "test5.paymeservice.com" ] } } ``` A failed response will be 500 and includes a payload in the form of: ```json { "status_code": 1, "status_error_details": "The service was not activated", "status_additional_info": null, "status_error_code": 720 } ``` ## Step 3: Add Apple iCloud account and Testing Cards > **Testing iCloud account will be provided by PayMe.** You can find credit cards for testing purposes [Test Cards and Payment Methods](https://docs-staging.payme.io/payments/introduction/test-cards-and-payment-methods#apple-pay-testing-information). ## Step 4: Add and Present the Apple Pay Button Before you can start _Apple Payment_ you have to create an _Apple Sale_, which will be paid by your customer. > > **Apple sale** - You will need to generate a new sale using the API `generate-sale` method presented in our documentation [Generate Sale with Apple Pay](https://docs-staging.payme.io/payments/apple-pay/post-generate-sale-apple-pay) and briefly below. > _Request_ ```raw POST https://.payme.io/api/generate-sale Content-Type: application/json PayMe-Public-Key: 9ec*****-****-****-****-*********881 { "seller_payme_id":"MPL14950-********-********-HMWATSBQ", "sale_price":"1000", "currency":"ILS", "product_name": "Test", "installments":"1", "sale_payment_method": "apple-pay", "language": "en" } ``` ```json http { "method": "post", "url": "https://.payme.io/api/generate-sale", "headers": { "Content-Type": "application/json" }, "body": { "seller_payme_id":"MPL90012-90012EXM-EXAMPLE0-EXAMPLE9", "sale_price":"1000", "currency":"ILS", "product_name": "Test", "installments":"1", "sale_payment_method": "apple-pay", "language": "en" } } ``` _Response_ ```json { "status_code": 0, "sale_url": "https://.payme.io/sale/generate/SALE1645-********-********-F2DUVUQI", "payme_sale_id": "SALE1645-********-********-F2DUVUQI", "payme_sale_code": 1027305, "price": 1000, "transaction_id": "", "currency": "ILS", "sale_payment_method": "apple-pay" } ``` After a successful sale creation, please save the `payme_sale_id` value from the response you receive for future usage. ### Add libraries For security reasons Apple allows to use Apple Pay only with their hosted library. It means you should add it before PayMe integration library. ```html ... ``` This will allow you to use `PayMe` global object later ### Check if the client's system supports Apple Pay > **Rule of thumb** > > You must check Apple Payment availability for your client! > In order check if a payment thorough Apple Pay is available for your client we provide two helper methods: 1. `PayMe.isApplePayAvailable()` 2. `PayMe.isSupportsApplePayVersion()` Also you can check what version of Apple Payment API you are using in `PayMe.applePayApiVersion` **If the client's environment has no support for Apple Payments, please do not show Apple Pay button** (described in the following step). ```javascript if(PayMe.isApplePayAvailable()){ console.log('ApplePay available'); } else { console.log('ApplePay unavailable'); } if(PayMe.isSupportsApplePayVersion()) { console.log('ApplePay version ' + PayMe.applePayApiVersion + ' supported'); } else { console.log('This ApplePay version is not supported'); } ``` ### “Fast and Simple”: Pay with Apple button Please follow the [**Buttons and Marks**](https://developer.apple.com/design/human-interface-guidelines/apple-pay/overview/buttons-and-marks/) article in the Apple official website. ```html ``` Please pay attention on the `id` and `locale` attribute. You will need `id` or `class` or other CSS selector to tell integration library how to find _Pay Button_. The `locale` is a custom attribute, one of many which let you [customize Apple Pay Button appearance](https://developer.apple.com/documentation/apple_pay_on_the_web/applepaybuttonstyle). If your use case is not meet this type of implementation you can provide any CSS selector (even for non existing DOM element) and follow [***“Manual”: Initiate Payment manually approach***](#manual-initiate-payment-manually) ### Initialization After implementing the certificate file, update PayMe Partners partners@payme.io to verify your domain was approved by apple, and to provide your Merchant API key. ```javascript ... // This is the Merchant API key (Test API key in this case) var apiKey = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'; ... ``` Second, you must obtain integration **instance** for the merchant ```javascript var apiKey = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'; // There is optional configuration object with testMode: true // because we are using the API key from the test server PayMe.create(apiKey, { testMode: true }) .then(function (instance) { // Here we can work with successfully initialized // integration instance - Integration Manager ... }) .catch(function(error) { // Here you can handle instantiation error ... }); ... ``` #### Initialization settings Property | Default value | Available values | Description ----------------- | :--------------: | :-----------------: | ------------- `testMode` | false | true / false | `Test mode` - used to control in which environment payment will be processed Next step - to initialize integration type and get corresponding manager > **Note** > > Integration Manager **instance** also can be used for [Hosted Fields](LINK_TO_HF) integration ### ApplePay sale Using initialized integration manager you need to use earlier created Sale to create Apple Sale. Just call `.appleSale(...)` method and get back _AppleSale_. We will use it to initiate Payment Flow and be notified on progress. ```html ... ... ``` ### Allow user to Start payment Because of security reasons you can't just start Apple Payment flow, only user action (click or tap Apple Pay Button) can trigger this flow. Because of that you must initiate this for your user with `.letsRock(...)` method with Apple Pay Button selector. Or you should check [***“Manual”: Initiate Payment manually***](#manual-initiate-payment-manually) section for additional options. ```html ... ... ``` #### Interaction Facade Highly likely, you will need to receive information of the status of your payment to build your own user experience, _Apple Sale_ provides this option by defining plain configuration object for `.letsRock(...)` method. ```javascript var config = { // Required payButtonSelector: '#pay-with-apple-pay', // Optional canceled: function(){ console.log('AppleSale cancelled'); }, // Optional validated: function(err) { if(!!err){ console.error('AppleSale validation error '+err.message); } else { console.log('AppleSale validated successfully'); } }, // Optional paymentCompleted: function (err, sale) { if(!!err){ console.error('AppleSale failed ' + err.message); } else { console.log('Sale Payed' + JSON.stringify(sale, null, 2)); } }, }; ``` #### Interaction Facade Property | Default value | Available values | Description ----------------- |:-------------:|:------------------------:| ------------- `payButtonSelector` | _none_ | _any valid CSS selector_ | Selector to find _Apple Pay Button_ on the page `canceled` | () => {} | _callback function_ | This function will be called on _Apple Sale_ cancellation `validated` | () => {} | _callback function_ | This function will be called after _Apple Sale_ validated by the user `paymentCompleted` | () => {} | _callback function_ | This function will on _Apple Sale_ completion with the result This facade will allow you to register your callbacks and handle changes in your application. ### “Manual”: Initiate Payment manually Sometimes you will need to use our integration library to solve some tricky edge case and you can not provide *Pay Button* on your page to be picked by the library. This require to provide alternative way to kick-off Apple payment flow programmatically. We are letting you todo that by calling `startPayment()` function for the prepared ApplePay sale. Lets review a technical meaning by adapting example from Allow user to Start payment ```html ... ... ``` > **Only user action can initiate Apple Payment flow!** > > >As a reminder we would like to repeat the limitation from Apple: > >***You can not just start Apple Payment flow with startPayment() function, only user action (click or tap on the DOM node) can trigger this flow.*** > >It means even if you will try to postMessage from iFrame using `setTimeout()` in hope to catch it on the host page, >this case will be detected by Apple and will end up with error ***"Must create a new ApplePaySession from a user gesture handler"*** >([Creating an Apple Pay Session | Apple Developer Documentation](https://developer.apple.com/documentation/apple_pay_on_the_web/apple_pay_js_api/creating_an_apple_pay_session)) As code listing shows, we just defined argument for the `letsRock.then(...)` callback with name `startPaymentFn` (you can give it any name). This argument is a synchronous function, you can use it as an event handler for your implementation., like we did in our example. ## Step 5: Test your integration To verify the ingeration works as expected: 1. Add our test page under your domain. For example: `{your domain}/apple-pay-test.html` see page below. 2. Fill merchant.paymeproduction under merchantIdentifier 3. Enter your apiKey under publickKey 4. Generate sale as described in step 4 and enter the sale id received 5. Start interaction - will initiate the payment flow with apple pay Test Page: ![test page.png](<../../assets/images/test page.png>) ```json Example Bootstrap implementation
 










```



## Errors and Reasons

Your responsibility is to handle possible errors related to the Apple Pay. We provide a limited list of logical errors to help you easily identify and handle mistakes or show localized descriptions for your users.
Below, you will be ale to find  detailed information and hints for you to help your end-users.

##### 1. NOT_SUPPORTED_DEVICE (`no-supported:apple-pay-not-available-for-device`) and NO_APPLE_PAY (`no-supported:apple-pay-jsapi-not-available`)
> **A context**
>
> Apple Payment can work only in Safari Browsers on Apple Devices.
>
> Before you can offer your clients this payment method, you have to check is it possible to execute
> Apple Payment on the client device. To do this check we are providing special helper-methods
> (`PayMe.isApplePayAvailable()` and `PayMe.isSupportsApplePayVersion()`). But there is possible situation
> when you ignored this check and tried to create _AppleSale_. In case of unsupported environment
> you will receive this error
>

**Reason**

Attempt to create _AppleSale_ on unsupported environment (not an Apple Browser, not an Apple Device)

**Possible Solutions**

1. You must use `PayMe.isApplePayAvailable()` and `PayMe.isSupportsApplePayVersion()` before _Apple Sale_ creation
   and fallback to the alternative logic in case of negative result.





##### 2. NOT_SUPPORTED_VERSION (`no-supported:apple-pay-version-not-supported`)
> **A context**
>
> Our integration library is based on the official Apple Pay JSAPI. The official library offers
> different integration versions. We use v4 to cover as many devices as possible.
>

**Reason**

Attempt to create _AppleSale_ on environment which is not supported by the current version of Apple Payment

**Possible Solutions**

1. Unfortunately, we have no solution for this situation (_TODO - discuss this_);




##### 3. VALIDATION_NO_NETWORKS (`validation-error:no-supported-networks`)
> **A context**
>
> Each of our merchants has limited set of supported Credit Card Brands aka Networks.
> These networks will be checked before start of Apple Payment.
>

**Reason**

Current merchant has no Networks supported by Apple

**Possible Solutions**

1. Please reach our support service to solve this issue.




##### 4. VALIDATION_NO_NETWORKS (`validation-error:no-supported-networks`)
> **A context**
>
> Each of our merchants has limited set of supported Credit Card Brands aka Networks.
> These networks will be checked before the Apple Pay flow starts.
>

**Reason**

Current merchant has no Networks supported by Apple

**Possible Solutions**

1. Please reach our support service to solve this issue.




##### 5. INVALID_CFG_PARAM (`validation:unknown-configuration-parameter`)
> **A context**
>
> To start Apple Payment Flow you must provide simple config data.
>

**Reason**

Invalid configuration provided for `letsRock(...)` method

**Possible Solutions**

1. Please check what was provided as config data




##### 6. INVALID_VALIDATED_CB (`validation:invalid-type-for-validated-callback`) and INVALID_CANCELLED_CB (`validation:invalid-type-for-cancelled-callback`) end INVALID_COMPLETED_CB (`validation:invalid-type-for-payment-completed-callback`)
> **A context**
>
> To let your code know about status of Apple Sale we let you provide
> callback functions. These functions will be called by the integration on status change.
>

**Reason**

Invalid configuration provided for `letsRock(...)` method

**Possible Solutions**

1. Please check what is callback provided as part of config data




##### 7. NOT_A_FUNCTION (`validation:argument-is-not-a-function`)
> **A context**
>
> According to previous sections you must provide a callback functions if you interested to be
> notified on Apple Sale state change
>

**Reason**

Provided not function but something else as a callback(s)

**Possible Solutions**

1. Please check what provided as part of config data







#### Error messages localization

To keep the integration in place, we are not providing any translation possibilities in favor of mnemonic messages. It means our error
messages will look to user too technical. To make them human-readable you have to transform it to messages you want



```javascript
var translatedMessages = {
  'not-found:apple-pay-button-not-found': 'Unable to find Pay button on your page',
  'no-supported:apple-pay-not-available-for-device': 'This device does not support Apple Pay',
  'no-supported:apple-pay-jsapi-not-available': 'This device does not support Apple Pay',
  'no-supported:apple-pay-version-not-supported': 'This device does not support current Apple Pay API version',
  // Other errors ...
};

// Other code...

// Run Apple Payment
sale.letsRock(config).catch(function (err) {
  // Getting translated human-readable error message
  const hriMessage = translatedMessages[err.message];
  alert(hriMessage);
});

// Other code...

```

For your convenience, we gathered all of the possible error-messages in to the Hash inside _PayMe_ global object, it means
instead of doing the following:



```javascript
var translatedMessages = {
  'not-found:apple-pay-button-not-found': 'Unable to find Pay button on your page',
  'no-supported:apple-pay-not-available-for-device': 'This device does not support Apple Pay',
  'no-supported:apple-pay-jsapi-not-available': 'This device does not support Apple Pay',
  'no-supported:apple-pay-version-not-supported': 'This device does not support current Apple Pay API version',
  // Other errors ...
};
```

A better option would be to do the following:



```javascript
// Doing shortcut, for convenience
var messages = PayMe.ERR_MESSAGES;

// Defining hri messages
var translatedMessages = {
  // Errors related to the client environment
  [messages.NO_PAY_BUTTON]: 'Unable to find Pay button on your page',
  [messages.NOT_SUPPORTED_DEVICE]: 'This device does not support Apple Pay',
  [messages.NO_APPLE_PAY]: 'This device does not support Apple Pay',
  [messages.NOT_SUPPORTED_VERSION]: 'This device does not support current Apple Pay API version',

  // Technical errors (ideally should not occur on production)
  [messages.VALIDATION_NO_NETWORKS]: 'There are no supported Credit Card networks for this seller',
  [messages.INVALID_VALIDATED_CB]: 'There is incorrect sale Validatied callback provided by the implementer',
  [messages.INVALID_CANCELLED_CB]: 'There is incorrect sale Cancelled callback provided by the implementer',
  [messages.INVALID_COMPLETED_CB]: 'There is incorrect sale Completed callback provided by the implementer',
  [messages.INVALID_CFG_PARAM]: 'Implementer provided invaid configuration paramener',
  [messages.NOT_A_FUNCTION]: 'This is not a function!'
};
```

## Apple Pay Impelementation using iFrame
If you are willing to implement the apple pay button using an iframe, please get in touch with our integration team for further information.

- [Apple Pay - Full Flow Control](https://docs-staging.payme.io/marketplaces-and-platforms/payments/apple-pay-full-flow-control): The payment method is limited to be used in the following devices manufactured by Apple:

# Apple Pay Full Flow Control

The payment method is limited to be used in the following devices manufactured by Apple:

| **iOS Devices**                                     | **Mac OS Devices**                                                                                                                      |
| --------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| Safari browser , on an Apple Pay-enabled iOS device | Safari browser on a Macbook Pro with Touch ID or a Mac model 2012 or later paired to a compatible iOS/Apple Watch with handoff enabled. |

In order to be able to accept Apple Pay payments on your website, you will need to complete the following steps:

1. Adding the file to your website, under the proper folder (Explained in [Step 1](#step-1-domain-verification)).
2. Signing up your website to Apple Pay via [/api/vas-enable](https://docs-staging.payme.io/payments/apple-pay/post-vas-enable-apple-pay) request.
3. Logging in to a [Testing iCloud account](#step-3-add-apple-icloud-account-and-testing-cards). (The account credentials will be provided by PayMe)
4. Use our API to [generate a new payment using Apple Pay](https://docs-staging.payme.io/payments/apple-pay/post-generate-sale-apple-pay).

### Devices supported for Sandbox Testing

You can use the following devices for testing in sandbox:

- iPhone 6 or later
- iPad mini 3 or later
- iPad Air 2
- iPad Pro
- Apple Watch

**Please note that you can not use Mac device for testing.**

## Step 1: Domain Verification

The first step in the process of accepting Apple Pay on your webiste will be to register your domains. You will need to register both top-level domains and sub-domains serperately.

Top-level domain example: `www.payme.io`

Sub-domain example: `www.marketplace.payme.io`

### Hosting the Apple Pay's domain verification file on your server

Host the file at `/.well-known/apple-developer-merchantid-domain-association` on your domain(s) that will display the Apple Pay button.

> Sandbox and Live environments files Will be provided by your PayMe integrator.

**When completing your testing process, you will need to exchange the sandbox file with the production file.**

## Step 2: Enabling the Apple Pay Payment Method

By using the [VAS-Enable API request](https://docs-staging.payme.io/payments/apple-pay/post-vas-enable-apple-pay), you will need to register your websites to PayMe's system.

```json
{
  "payme_client_key": "payme_partner_key",
  "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567",
  "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567",
  "vas_data": {
      "websites": [
      "payme.io", "marketplace.payme.io"
      ]
  },
  "language": "en"
}
```

A successful response will be 200 and includes a payload in the form of:

```json
{
    "status_code": 0,
    "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567",
    "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567",
    "vas_description": "Payments Account",
    "vas_type": "AlternativePaymentMethod",
    "vas_api_key": "",
    "vas_is_active": true,
    "vas_payer_type": 2,
    "vas_price_currency": "ILS",
    "vas_price_setup_fixed": 0,
    "vas_price_periodic_fixed": 0,
    "vas_price_periodic_variable": "0.00",
    "vas_price_usage_fixed": 0,
    "vas_price_usage_variable": "0.00",
    "vas_market_fee": null,
    "vas_period": 1,
    "vas_data": {
        "websites": [
            "test5.paymeservice.com"
        ]
    }
}
```

A failed response will be 500 and includes a payload in the form of:

```json
{
    "status_code": 1,
    "status_error_details": "The service was not activated",
    "status_additional_info": null,
    "status_error_code": 720
}
```

## Step 3: Add Apple iCloud account and Testing Cards

> **Testing iCloud account will be provided by PayMe.**

You can find credit cards for testing purposes [Test Cards and Payment Methods](https://docs-staging.payme.io/payments/introduction/test-cards-and-payment-methods#apple-pay-testing-information).

## Step 4: Add and Present the Apple Pay Button

Before you can start _Apple Payment_ you have to create an _Apple Sale_, which will be paid by your customer.

> **Apple sale** - You will need to generate a new sale using the API `generate-sale` method presented in our documentation [Generate Sale with Apple Pay](https://docs-staging.payme.io/payments/apple-pay/post-generate-sale-apple-pay) and briefly below.

_Request_

```raw
POST https://.payme.io/api/generate-sale
Content-Type: application/json
PayMe-Public-Key: 9ec*****-****-****-****-*********881

{
  "seller_payme_id":"MPL14950-********-********-HMWATSBQ",
  "sale_price":"1000",
  "currency":"ILS",
  "product_name": "Test",
  "installments":"1",
  "sale_payment_method": "apple-pay",
  "language": "en"
}
```

```json http
{
  "method": "post",
  "url": "https://.payme.io/api/generate-sale",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
  "seller_payme_id":"MPL90012-90012EXM-EXAMPLE0-EXAMPLE9",
  "sale_price":"1000",
  "currency":"ILS",
  "product_name": "Test",
  "installments":"1",
  "sale_payment_method": "apple-pay",
  "language": "en"
  }
}
```

_Response_

```json
{
    "status_code": 0,
    "sale_url": "https://.payme.io/sale/generate/SALE1645-********-********-F2DUVUQI",
    "payme_sale_id": "SALE1645-********-********-F2DUVUQI",
    "payme_sale_code": 1027305,
    "price": 1000,
    "transaction_id": "",
    "currency": "ILS",
    "sale_payment_method": "apple-pay"
}
```

After a successful sale creation, please save the `payme_sale_id` value from the response you receive for future usage.

### Add libraries

For security reasons Apple allows to use Apple Pay only with their hosted library. It means you
should add it before PayMe integration library.

```html lineNumbers



  
  
  
  
  
  
  


...

```

This will allow you to use `PayMe` global object later

### Check if the client's system supports Apple Pay

> **Rule of thumb**
>
> You must check Apple Payment availability for your client!

In order check if a payment thorough Apple Pay is available for your client we provide two helper methods:

1. `PayMe.isApplePayAvailable()`
2. `PayMe.isSupportsApplePayVersion()`

Also you can check what version of Apple Payment API you are using in `PayMe.applePayApiVersion`

**If the client's environment has no support for Apple Payments, please do not show Apple Pay button** (described in the following step).

```javascript title="Integrator must check availability before start" lineNumbers
if(PayMe.isApplePayAvailable()){
  console.log('ApplePay available');
} else {
  console.log('ApplePay unavailable');
}

if(PayMe.isSupportsApplePayVersion()) {
  console.log('ApplePay version ' + PayMe.applePayApiVersion + ' supported');
} else {
  console.log('This ApplePay version is not supported');
}
```

### “Fast and Simple”: Pay with Apple button

Please follow the [**Buttons and Marks**](https://developer.apple.com/design/human-interface-guidelines/apple-pay/overview/buttons-and-marks/) article in the Apple official website.

```html lineNumbers




  

  
  
  
  



    
    
    

    
    


```

Please pay attention on the `id` and `locale` attribute. You will need `id` or `class` or other CSS selector
to tell integration library how to find _Pay Button_. The `locale` is a custom attribute, one of many which
let you [customize Apple Pay Button appearance](https://developer.apple.com/documentation/apple_pay_on_the_web/applepaybuttonstyle).
If your use case is not meet this type of implementation you can provide any CSS selector (even for non existing DOM element) and
follow [_**“Manual”: Initiate Payment manually approach**_](manual-initiate-payment-manually)

### Initialization

You must get and provide your Merchant API key from Settings page in the dashboard.

```javascript
...
// This is the Merchant API key (Test API key in this case)
var apiKey = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
...
```

Second, you must obtain integration **instance** for the merchant

```javascript lineNumbers
var apiKey = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';

// There is optional configuration object with testMode: true
// because we are using the API key from the test server
PayMe.create(apiKey, { testMode: true })
    .then(function (instance) {
    
      // Here we can work with successfully initialized
      // integration instance - Integration Manager
       ...
    })
    .catch(function(error) {
      // Here you can handle instantiation error
      ...
    });
    
...
```

#### Initialization settings

| Property   | Default value | Available values | Description                                                                  |
| ---------- | :-----------: | :--------------: | ---------------------------------------------------------------------------- |
| `testMode` |     false     |   true / false   | `Test mode` - used to control in which environment payment will be processed |

Next step - to initialize integration type and get corresponding manager

> **Note**
>
> Integration Manager **instance** also can be used for [Hosted Fields](LINK_TO_HF) integration

### ApplePay sale

Using initialized integration manager you need to use earlier created Sale to create Apple Sale.
Just call `.appleSale(...)` method and get back _AppleSale_. We will use it to initiate Payment Flow
and be notified on progress.

```html lineNumbers

    
        
        ...
    
    
        
        ...
        

        
        
    
    
```

### Allow user to Start payment

Because of security reasons you can't just start Apple Payment flow, only user action
(click or tap Apple Pay Button) can trigger this flow. Because of that you must initiate
this for your user with `.letsRock(...)` method with Apple Pay Button selector.
Or you should check [_**“Manual”: Initiate Payment manually**_](#manual-initiate-payment-manually)  section for additional options.

```html lineNumbers

    
        
        ...
    
    
        
        ...
        

        
        
    

```

#### Interaction Facade

Highly likely, you will need to receive information of the status of your payment to
build your own  user experience, _Apple Sale_ provides this option by defining plain configuration
object for `.letsRock(...)` method.

```javascript lineNumbers
var config = {
  
  // Required
  payButtonSelector: '#pay-with-apple-pay',
  
  // Optional
  canceled: function(){
    console.log('AppleSale cancelled');
  },
  
  // Optional
  validated: function(err) {
    if(!!err){
      console.error('AppleSale validation error '+err.message);
    } else {
      console.log('AppleSale validated successfully');
    }
  },
  
  // Optional
  paymentCompleted: function (err, sale) {
    if(!!err){
      console.error('AppleSale failed ' + err.message);
    } else {
      console.log('Sale Payed' + JSON.stringify(sale, null, 2));
    }
  },
};
```

#### Interaction Facade

| Property            | Default value |     Available values     | Description                                                           |
| ------------------- | :-----------: | :----------------------: | --------------------------------------------------------------------- |
| `payButtonSelector` |     _none_    | _any valid CSS selector_ | Selector to find _Apple Pay Button_ on the page                       |
| `canceled`          |    () => {}   |    _callback function_   | This function will be called on _Apple Sale_ cancellation             |
| `validated`         |    () => {}   |    _callback function_   | This function will be called after _Apple Sale_ validated by the user |
| `paymentCompleted`  |    () => {}   |    _callback function_   | This function will on _Apple Sale_ completion with the result         |

This facade will allow you to register your callbacks and handle changes in your application.

### “Manual”: Initiate Payment manually

Sometimes you will need to use our integration library to solve some tricky edge case and you can not provide
_Pay Button_ on your page to be picked by the library. This require to provide alternative way to kick-off Apple
payment flow programmatically. We are letting you todo that by calling `startPayment()` function for the prepared ApplePay sale.

Lets review a technical meaning by adapting example from Allow user to Start payment

```html

    
        
        ...
    
    
        ...
        
        
    

```

> **Only user action can initiate Apple Payment flow!**
>
> As a reminder we would like to repeat the limitation from Apple:
>
> _**You can not just start Apple Payment flow with startPayment() function, only user action (click or tap on the DOM node) can trigger this flow.**_
>
> It means even if you will try to postMessage from iFrame using `setTimeout()` in hope to catch it on the host page,
> this case will be detected by Apple and will end up with error _**"Must create a new ApplePaySession from a user gesture handler"**_
> ([Creating an Apple Pay Session | Apple Developer Documentation](https://developer.apple.com/documentation/apple_pay_on_the_web/apple_pay_js_api/creating_an_apple_pay_session))

As code listing shows, we just defined argument for the `letsRock.then(...)` callback with name `startPaymentFn`
(you can give it any name). This argument is a synchronous function, you can use it as an event handler for
your implementation., like we did in our example.

## Errors and Reasons

Your responsibility is to handle possible errors related to the Apple Pay. We provide a limited list of logical errors to help you easily identify and handle mistakes or show localized descriptions for your users.
Below, you will be ale to find  detailed information and hints for you to help your end-users.

##### 1. NOT_SUPPORTED_DEVICE (`no-supported:apple-pay-not-available-for-device`) and NO_APPLE_PAY (`no-supported:apple-pay-jsapi-not-available`)

> **A context**
>
> Apple Payment can work only in Safari Browsers on Apple Devices.
>
> Before you can offer your clients this payment method, you have to check is it possible to execute
> Apple Payment on the client device. To do this check we are providing special helper-methods
> (`PayMe.isApplePayAvailable()` and `PayMe.isSupportsApplePayVersion()`). But there is possible situation
> when you ignored this check and tried to create _AppleSale_. In case of unsupported environment
> you will receive this error

**Reason**

Attempt to create _AppleSale_ on unsupported environment (not an Apple Browser, not an Apple Device)

**Possible Solutions**

1. You must use `PayMe.isApplePayAvailable()` and `PayMe.isSupportsApplePayVersion()` before _Apple Sale_ creation
   and fallback to the alternative logic in case of negative result.

##### 2. NOT_SUPPORTED_VERSION (`no-supported:apple-pay-version-not-supported`)

> **A context**
>
> Our integration library is based on the official Apple Pay JSAPI. The official library offers
> different integration versions. We use v4 to cover as many devices as possible.

**Reason**

Attempt to create _AppleSale_ on environment which is not supported by the current version of Apple Payment

**Possible Solutions**

1. Unfortunately, we have no solution for this situation (_TODO - discuss this_);

##### 3. VALIDATION_NO_NETWORKS (`validation-error:no-supported-networks`)

> **A context**
>
> Each of our merchants has limited set of supported Credit Card Brands aka Networks.
> These networks will be checked before start of Apple Payment.

**Reason**

Current merchant has no Networks supported by Apple

**Possible Solutions**

1. Please reach our support service to solve this issue.

##### 4. VALIDATION_NO_NETWORKS (`validation-error:no-supported-networks`)

> **A context**
>
> Each of our merchants has limited set of supported Credit Card Brands aka Networks.
> These networks will be checked before the Apple Pay flow starts.

**Reason**

Current merchant has no Networks supported by Apple

**Possible Solutions**

1. Please reach our support service to solve this issue.

##### 5. INVALID_CFG_PARAM (`validation:unknown-configuration-parameter`)

> **A context**
>
> To start Apple Payment Flow you must provide simple config data.

**Reason**

Invalid configuration provided for `letsRock(...)` method

**Possible Solutions**

1. Please check what was provided as config data

##### 6. INVALID_VALIDATED_CB (`validation:invalid-type-for-validated-callback`) and INVALID_CANCELLED_CB (`validation:invalid-type-for-cancelled-callback`) end INVALID_COMPLETED_CB (`validation:invalid-type-for-payment-completed-callback`)

> **A context**
>
> To let your code know about status of Apple Sale we let you provide
> callback functions. These functions will be called by the integration on status change.

**Reason**

Invalid configuration provided for `letsRock(...)` method

**Possible Solutions**

1. Please check what is callback provided as part of config data

##### 7. NOT_A_FUNCTION (`validation:argument-is-not-a-function`)

> **A context**
>
> According to previous sections you must provide a callback functions if you interested to be
> notified on Apple Sale state change

**Reason**

Provided not function but something else as a callback(s)

**Possible Solutions**

1. Please check what provided as part of config data

#### Error messages localization

To keep the integration in place, we are not providing any translation possibilities in favor of mnemonic messages. It means our error
messages will look to user too technical. To make them human-readable you have to transform it to messages you want

```javascript lineNumbers
var translatedMessages = {
  'not-found:apple-pay-button-not-found': 'Unable to find Pay button on your page',
  'no-supported:apple-pay-not-available-for-device': 'This device does not support Apple Pay',
  'no-supported:apple-pay-jsapi-not-available': 'This device does not support Apple Pay',
  'no-supported:apple-pay-version-not-supported': 'This device does not support current Apple Pay API version',
  // Other errors ...
};

// Other code...

// Run Apple Payment
sale.letsRock(config).catch(function (err) {
  // Getting translated human-readable error message
  const hriMessage = translatedMessages[err.message];
  alert(hriMessage);
});

// Other code...

```

For your convenience, we gathered all of the possible error-messages in to the Hash inside _PayMe_ global object, it means
instead of doing the following:

```javascript lineNumbers
var translatedMessages = {
  'not-found:apple-pay-button-not-found': 'Unable to find Pay button on your page',
  'no-supported:apple-pay-not-available-for-device': 'This device does not support Apple Pay',
  'no-supported:apple-pay-jsapi-not-available': 'This device does not support Apple Pay',
  'no-supported:apple-pay-version-not-supported': 'This device does not support current Apple Pay API version',
  // Other errors ...
};
```

A better option would be to do the following:

```javascript lineNumbers
// Doing shortcut, for convenience
var messages = PayMe.ERR_MESSAGES;

// Defining hri messages
var translatedMessages = {
  // Errors related to the client environment
  [messages.NO_PAY_BUTTON]: 'Unable to find Pay button on your page',
  [messages.NOT_SUPPORTED_DEVICE]: 'This device does not support Apple Pay',
  [messages.NO_APPLE_PAY]: 'This device does not support Apple Pay',
  [messages.NOT_SUPPORTED_VERSION]: 'This device does not support current Apple Pay API version',

  // Technical errors (ideally should not occur on production)
  [messages.VALIDATION_NO_NETWORKS]: 'There are no supported Credit Card networks for this seller',
  [messages.INVALID_VALIDATED_CB]: 'There is incorrect sale Validatied callback provided by the implementer',
  [messages.INVALID_CANCELLED_CB]: 'There is incorrect sale Cancelled callback provided by the implementer',
  [messages.INVALID_COMPLETED_CB]: 'There is incorrect sale Completed callback provided by the implementer',
  [messages.INVALID_CFG_PARAM]: 'Implementer provided invaid configuration paramener',
  [messages.NOT_A_FUNCTION]: 'This is not a function!'
};
```

## Full Flow Control

Some use cases may require fully granular control on `AppleSale` verification and initiation. To make it possible we provide method to create API using `.manual()`

> `.manual()` This method will create a manual API request to manage newly created PayMe `AppleSale`
>
> - `.verify()` - `AppleSale` data verification before initialization
>
> - `.preparePayment(sale)` - This is a factory to initialize and configure AppleSale. This factory will return startPaymentFn() which should be invoked from _**a user gesture handler**_

### Example

```html

    
        
        ...
    
    
        ...
        
        
    

```

- [Google Pay](https://docs-staging.payme.io/marketplaces-and-platforms/payments/google-pay): Google Pay™ allows your customers to pay quickly and securely using payment methods saved in their Google Account. Google Pay is fully compatible with PayMe’s products and features: You can use it for traditional payments and multi payments page.

# Google Pay

Google Pay™ allows your customers to pay quickly and securely using payment methods saved in their Google Account. 


Google Pay is fully compatible with PayMe’s products and features: You can use it for traditional payments and multi payments page.

In order to be able to accept Google Pay payments on your website, first contact PayMe Partners partners@payme.io to start the integration process.

We support VISA, Mastercard, American Express, Discover and JCB card networks with the Google Pay API. If you're missing one of these in your PayMe account, you can reach out our team to add the missing network at support@payme.io. 



PayMe handles all the technical complexity - you just need to create a sale and redirect customers to our payment page.



## Prerequisites
- Active PayMe merchant account
- Google Pay VAS (Value Added Service) enabled in your account
- HTTPS-enabled website (required for Google Pay)

## Google Pay terms
By integrating Google Pay, you must adhere to the [Google Pay and Wallet API's Acceptable Use Policy](https://payments.developers.google.com/terms/aup) and accept Google’s [terms of service](https://payments.developers.google.com/terms/sellertos)

## How it works
1. Create a Sale: Generate a Google Pay sale using PayMe API
2. Redirect Customer: Send customer to PayMe payment page
3. Customer Pays: Customer completes payment using Google Pay
4. Get Results: Receive payment confirmation via webhook or redirect

## Step 1: Enable Google Pay Payment Method
By using the [VAS-Enable API request](https://docs-staging.payme.io/payments/apple-pay/post-vas-enable-apple-pay), 
you will need to register to PayMe's Google Pay service.

API call payload:
```json
{
  "payme_client_key": "payme_partner_key",
  "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567",
  "vas_payme_id": "VASLDEMO-GOOGLEPAY-VASLDEMO-1234567",
  "language": "en"
}
```

A successful response will be 200 and includes a payload in the form of:
```json
{
    "status_code": 0,
    "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567",
    "vas_payme_id": "VASLDEMO-GOOGLEPAY-VASLDEMO-1234567",
    "vas_description": "Payments Account",
    "vas_type": "AlternativePaymentMethod",
    "vas_api_key": "",
    "vas_is_active": true,
    "vas_payer_type": 2,
    "vas_price_currency": "ILS",
    "vas_price_setup_fixed": 0,
    "vas_price_periodic_fixed": 0,
    "vas_price_periodic_variable": "0.00",
    "vas_price_usage_fixed": 0,
    "vas_price_usage_variable": "0.00",
    "vas_market_fee": null,
    "vas_period": 1,
}
```

A failed response will be 500 and includes a payload in the form of:
```json
{
    "status_code": 1,
    "status_error_details": "The service was not activated",
    "status_additional_info": null,
    "status_error_code": 720
}

```

## Step 2: Create a Google Pay Sale
Before you can start Google Pay Payment you have to create a Google Pay Sale, which will be paid by your customer.


Use the PayMe API to create a sale with `sale_payment_method`: `google-pay`:


`POST https://.payme.io/api/generate-sale`

```json
POST /api/generate-sale
Content-Type: application/json

{
  "seller_payme_id": "MPL14950-XXXXXXXX-XXXXXXXX-HMWATSBQ",
  "sale_price": "1000",
  "currency": "ILS",
  "product_name": "Test Product",
  "installments": "1",
  "sale_payment_method": "google-pay",
  "sale_type": "sale",
  "language": "en"
}

```

Response:
```json
{
    "status_code": 0,
    "sale_url": "https://.payme.io/sale/generate/SALE1645-********-********-F2DUVUQI",
    "payme_sale_id": "SALE1645-********-********-F2DUVUQI",
    "payme_sale_code": 1027305,
    "price": 1000,
    "transaction_id": "",
    "currency": "ILS",
    "sale_payment_method": "google-pay"
}
```
After a successful sale creation, please save the `payme_sale_id` value from the response you received for future usage.


## Step 3: Add and Present the Google Pay Button
>The button should be shown only after availability checks pass.



You must use the official Google Pay logo and button assets in compliance with [Google Pay Android brand guidelines](https://developers.google.com/pay/api/android/guides/brand-guidelines) and [Google Pay web brand guidelines](https://developers.google.com/pay/api/web/guides/brand-guidelines), without modifications to the Google Pay asset colors, proportions, or appearance. 

### 3.1 Add PayMe SDK Library
``


 The SDK URL can switch between production and staging: `https://cdn.paymeservice.com/hf/v1/hostedfields.js` or `https://cdn.payme.io/hf/v1/hostedfields-staging.js`.

### 3.2 Add Google Pay Mount Point
`
` ### 3.3 Check Availability Before Showing the Button ```json const isGooglePayAvailable = await PayMe.isGooglePayAvailable(testMode); if (!isGooglePayAvailable) { // hide payment section or show fallback return; } ``` ### 3.4 Initialize PayMe and Create Google Sale Manager ```json const instance = await PayMe.create(apiKey, { testMode: testMode }); const googleSale = instance.googleSale({ saleGuid: paymeSaleId, debugFn: function(message) { console.log('[PayMe Debug]', message); } }); ``` ### 3.5 Bind the Button and Start Interaction ```json const interactionConfig = { payButtonSelector: '#pay-with-google-pay', buttonType: 'buy', buttonColor: 'default', canceled: function() { console.log('Payment cancelled by user'); }, paymentCompleted: function(err, sale) { if (err) { console.error('Payment failed:', err.message); } else { console.log('Payment completed:', sale); } } }; await googleSale.letsRock(interactionConfig); ``` **Important**: do not expose Google Pay UI when `isGooglePayAvailable` is false. Always provide fallback payment options. ## Step 4: Payment Processing The payment will be done by the buyer's card saved in his Google Pay wallet. * 3D secure service will not be required in the payment flow on mobile web or native apps due to Google card encryption. In other scenarios we will initiate a 3D Secure service to authenticate the buyer. PayMe will redirect the customer back to your `success_url` or `error_url` based on the payment result. ## Step 5: Test Your Integration 1. Configure defaults: server URL, partner key, seller PayMe ID, and public key. 2. Optionally enable `test_mode` and staging SDK URL. 3. Generate a Google Pay sale from `/generate-sale-form` using the Google Pay button. 4. Confirm availability check passes and Google Pay button appears. 5. Complete payment and verify `paymentCompleted` callback returns sale details. 6. Validate error and cancel flows using the wrapper log panel. ### Troubleshooting Issue | Likely Cause | Action ---------|----------|--------- Google Pay button does not appear | `PayMe.isGooglePayAvailable(testMode)` returned false | Check browser/device support and keep fallback payment methods enabled. Initialization fails | Invalid or missing public API key | Verify `public_key` in defaults and use the key for the selected environment. Sale errors on backend | Invalid payload or seller configuration | Verify MPL, sale fields, and that Google Pay VAS is activated for the seller. ### Complete Reference Snippet (Client Side) ```javascript
``` - [Bank transfer](https://docs-staging.payme.io/marketplaces-and-platforms/payments/bank-transfer): How to take a bank-transfer payment: create a pending bank transfer, wait for the callback, and treat `PAID` as funds received. # Bank-transfer ### General 1. POST /pending-bank-transfer and get a synchronous response with `"pending_transaction_id"` `"origin_payme_id"` , `"sale_status": "RECEIVED"` and relevant bank details 2. Wait for a callback notification to the provided `"sale_callback_url"` URL. 3. On "sale_status": `"PAID"` - funds are transferred to the merchant account and fees are charged. ![flow.png](https://docs-staging.payme.io/marketplaces-and-platforms/_files/PcDpe1jQFR8.png) | ENVIRONMENT | URL | | ----------- | ---------------------------------------------------- | | Sandbox | | | Production | | ### pending-bank-transfer #### POST Request ``` { "payme_client_key": "your partner client id here", "origin_payme_id": "Keep empty if 1st time, if 2nd time user - add MPL here", "target_payme_id":"Your seller account MPL - this is where you will get your money to ", "sale_price":1000000, "currency":"ILS", "product_name":"Cellular phone", "external_transaction_id":"12345", "sale_callback_url":"https://webhook.site/12346", "seller_email":"buyer@company.com", "seller_phone":"0500000007", "seller_merchant_name": "company name ltd", "seller_description": "An online store which specializes in rubber ducks", "seller_site_url": "www.babyduck22s.com", "seller_inc_code":"515123456", "seller_first_name":"אביב", "seller_last_name":"אברהם", "seller_social_id":"763438645", "seller_bank_code ": 54, "seller_bank_branch": 132, "seller_bank_account_number": "123456", "seller_address_city": "Tel Aviv", "seller_address_street": "Rothschild", "seller_address_street_number": "1", "seller_address_country": "IL", "risk": true, "data":{ }, "test":true, "seller_id": null, "seller_birthdate": null, "seller_social_id_issued": null, "seller_gender": null, "seller_contact_email": null, "seller_contact_phone": null, "seller_person_business_type": null, "seller_inc": null, "seller_retail_type": null, "market_fee": null } ``` ❗ \*seller_bank_account_number - PayMe will expect the transfer to arrive from the origin bank account and will use this infomration to automatically match the payments. in case money is trnasfered from a different account - expect longer time to process the transaction. #### Reponse 200 ``` { "origin_payme_id": "MPL1XXXXXXXX", "pending_transaction_id": "fcfbb481-94d0-421b-95f8-689610766491", "external_transaction_id": "12345", "status": "RECEIVED", "bank_transfer_details": { "bank_name": "בנק הפועלים", "bank_code": "12", "bank_branch":"778", "bank_account_number": "86684", "reference": "772012" } } ``` ❗ \*reference - A unique reference code to identify the bank transfer. Instruct your customer to include this code in the reference field of their bank transfer. Transfers without reference will take longer time to reconcile due to manual processes. *Origin_payme_id - Save this MPL for any future additioanl request from the same buyer. 500 in case of error or data not sufficient #### Callback Once the sale is paid successfully (PAID), we will notify the marketplace with the sale details with a POST to the callback URL. ``` { "pending_transaction_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "external_transaction_id": "132456", "status": "PAID", "status_details": "", "sale_price": 10000, "currency": "ILS", "sale_paid_date": "1970-01-20T05:05:51.972Z", "seller_merchant_name": "company name ltd", "seller_email": "buyer@company.com", "seller_inc_code": "515123456" } ``` ### Risk sale approved "status": "PAID", "status_details": "Risk approved", ### Risk sale rejected No callback ### Get-sales You can retrieve data on different sales processed by your sellers using this endpoint. ### Handling under and over-payments Due to low volume of unmatched transactions, Expect manual notifications to your account email address. ### Cancel-sale You can only cancel-sale if the status of the sale is ‘RECEIVED’ #### POST Request - [Israeli Direct Debit](https://docs-staging.payme.io/marketplaces-and-platforms/payments/israeli-direct-debit): In order to create a direct debit mandate for Israeli customers, you can use our generate-sale API endpoint to complete the two actions of: 1. Generating a mandate request. 2. Generating a new payment request. # Israeli Direct Debit In order to create a direct debit mandate for Israeli customers, you can use our generate-sale API endpoint to complete the two actions of: 1. Generating a mandate request. 2. Generating a new payment request. ### Generating a new bank authorization #### Prerequisits 1. Activating the service via vas-enable endpoint or the app marketplace. The solution is based on our iFrame, where the following details will be collected: 1. Account type (Invididual/Company/Non-Profit/etc) 2. Account Owner Name 3. Account Owner Social ID/Business Code 4. Email Address 5. Phone Number 6. Bank 7. Bank Branch 8. Bank Account Number 9. Signature In order to create a new bank authorization request, you will need to initiate the following request: ``` POST https://.payme.io/api/generate-sale { "seller_payme_id": "MPLTEST", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "sale_payment_method": "il-direct-debit", "sale_type": "token" } ``` Please note that all fields are mandatory even though no actual charge will be captured for this type of sale. The response will include a URL for our iframe for the user to insert the details: ``` { "status_code": 0, "sale_url": "https://sandbox.payme.io/sale/generate/SALEGUID", "payme_sale_id": "SALEGUID", "payme_sale_code": 123456, "price": 100, "transaction_id": "", "currency": "ILS", "sale_payment_method": "il-direct-debit" } ``` Once the bank authorization request was successfully created, the token for the buyer will remain inactive until we receive an official update from the bank that the authorization was successfully created and the account can be charged - this process can take up to 7 work days. ### Creating a new payment request using the Israeli Direct Debit Payment Method In order to create a new payment request using the IL DD, you will need to use our generate-sale API in the following form: ``` { "seller_payme_id": "MPLTEST", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_payment_method": "il-direct-debit", "sale_type": "sale", "buyer_key": "BUYER1234" } ``` If the charging request was succesful, you will receive the following response: ``` { "status_code": 1, "payme_status": "success", "status_error_code": null, "payme_sale_id": "SALEGUID", "payme_sale_code": 1088759, "sale_created": "2022-07-03 08:52:16", "payme_sale_status": "pending", "sale_status": "initial", "currency": "ILS", "transaction_id": "", "is_token_sale": false, "price": 1000, "payme_signature": "signatureID", "sale_deferred_months": null, "payme_transaction_id": "TRANGUID", "payme_transaction_total": "1000", "payme_transaction_card_brand": "PrivateLabel", "payme_transaction_auth_number": null, "payme_transaction_voucher": null, "payme_transaction_emv_uid": null, "payme_transaction_acquirer": null, "payme_transaction_auth_source": null, "payme_transaction_card_issuer": null, "payme_transaction_credit_type": null, "buyer_name": "Ran Tester", "buyer_email": "TestTest@paymeservice.com", "buyer_phone": "05222222", "buyer_card_mask": null, "buyer_card_exp": null, "buyer_card_is_foreign": false, "buyer_social_id": "123456789", "installments": 1, "transaction_first_payment": "1000", "transaction_periodical_payment": 0, "sale_paid_date": "2022-07-03 08:54:10", "sale_release_date": null, "sale_3ds": false } ``` In this phase, the payment request will go through a process of validation with the related bank. The approval will be received after 8 calendar days - a decline will be received earlier than that. Both approval and declines can be communicated using our callback system. #### Authorization Cancellations and Revokes The bank is eligible to revoke an authorization at any point of time - this means that once an authorization is revoked, PayMe will update the token to be inactive and you won't be able to use it for new payments anymore. The update can be communicated using our callback system to your designated URL. - [Point Of Sale](https://docs-staging.payme.io/marketplaces-and-platforms/payments/point-of-sale): A POS system allows your business to accept payments from customers and keep track of sales. It sounds simple enough, but the setup can work in different ways, depending on whether you sell online, have a physical storefront, or both. ## Point Of Sale ### What is a POS and How does a POS system work at a small business? A POS system allows your business to accept payments from customers and keep track of sales. It sounds simple enough, but the setup can work in different ways, depending on whether you sell online, have a physical storefront, or both. A point-of-sale system used to refer to the cash register at a store. Today, modern POS systems are entirely digital, which means you can check out a customer wherever you are. All you need is a POS app and an internet-enabled device, such as a tablet or phone. ### How do you setup your Point-Of-Sale Device? Our POS solution is based on a simple setup process, that includes the following steps: 1. *Activating the service* - using [VAS Enable](https://docs-staging.payme.io/payments/point-of-sale-pos/post-vas-enable#1st-step) command to our API. 2. *New terminal* and device requests are generated - this process can take up to 5 business days. 3. *Pairing the device* - will be completed by PayMe - a callback will be sent to the partner with the device ID - this ID is critical in order to create new payment requests specificing the device as a part of the API request to [Sales endpoint](https://docs-staging.payme.io/payments/point-of-sale-pos/post-payment). The callback with the device ID will include both POS (device) ID and MPL for identification. 4. *Physical Devliery* - The Device shipping date will be scheduled by the Shipping company and the seller - Once the device is received, it will be immidiately ready for action with the switching on action. ### Payment Processing In the moment the device is received by the seller, it is immidiately ready to process payments. The request for new payments is initiated by our *sales* API endpoint, using the following request: ``` { "seller_payme_id": "string", "product_name": "string", "sale_price": 0, "currency": "USD", "transaction_id": "string", "sale_callback_url": "string", "payment": { "method": "pos", "pos_id": "string" }, "customer": { "name": "string", "email": "string", "phone": "string", "zip_code": "string", "social_id": "string" }, "language": "he" } ``` Bear in mind that without a POS ID you will not be able to send the payment request to the device. The sale will be then sent to the device. ## Flow of Payment #### 1. The Payment is sent to the device after using `Sales` API Endpoint ![image.png](https://docs-staging.payme.io/marketplaces-and-platforms/_files/wql9AovEPpE.png) ![image.png](https://docs-staging.payme.io/marketplaces-and-platforms/_files/UX8FGAfVcFo.png) #### 2. The Payment is then paid by the buyer ![image.png](https://docs-staging.payme.io/marketplaces-and-platforms/_files/q4trw0Af1bw.png) #### 3. Pending Approval from the Credit Company ![image.png](https://docs-staging.payme.io/marketplaces-and-platforms/_files/ZRLRGnlC0cE.png) #### 4. Payment confirmed ![image.png](https://docs-staging.payme.io/marketplaces-and-platforms/_files/dnyClwzqPbY.png) #### 5. Payment is deposited ![image.png](https://docs-staging.payme.io/marketplaces-and-platforms/_files/GvNGRyvai2g.png) #### 6.. Final Confirmation ![image.png](https://docs-staging.payme.io/marketplaces-and-platforms/_files/TusLBf0j87k.png) Once the payment is confirmed, the sale and transaction status will be updated to `sale_status = completed` and `transaction_status = validated` and can be accessed via `get-transactions` or `get-sales` API endpoints to further information fetching. - [Multi Payment Page](https://docs-staging.payme.io/marketplaces-and-platforms/payments/multi-payment-page): Also known as “Template Sale”. Enables payments on a single sale link, by multiple buyers. For example, you will be able to generate a single sale and share its payment link on any social network site to allow multiple customers to pay on their own. Every payment will create a new sale with a different ID. Creation of a template sale should be done by adding the `sale_type="template"` attribute to the request: # Template Payment Page Also known as “Template Sale”. Enables payments on a single sale link, by multiple buyers. For example, you will be able to generate a single sale and share its payment link on any social network site to allow multiple customers to pay on their own. Every payment will create a new sale with a different ID. Creation of a template sale should be done by adding the `sale_type="template"` attribute to the request: Attribute| Description ---|--- `sale_type` | = template, creates a new sale as a template. The template sale link does not expire. ### Payment Capabilities You can find all the payment capabilities [Pay Sale](https://docs-staging.payme.io/payments/direct-api/post-pay-sale). - [Multi Capture](https://docs-staging.payme.io/marketplaces-and-platforms/payments/multi-capture): The guide will be a run-through the process of using our Multi-Capture logic for card payments. # Multi-Capture - Credit Cards The guide will be a run-through the process of using our Multi-Capture logic for card payments. In order to initiate the process, you'll need to make sure the following prerequists: 1. Atleast 2 users from the same marketplace (partner account) 2. Credit card in hand for the authorization flow. ### 1st Step - Authorization In the 1st step, you will need to create a new payment intent using our APIs: 1. `generate-sale` 2. `sales` (Combination of both generate + pay sale actions) #### Requests Examples `generate-sale` - `https://.payme.io/api/generate-sale` ``` { "seller_payme_id": "MPL90011-90011EXM-EXAMPLE0-EXAMPLE9", "sale_price": "100", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_type": "authorize" "sale_payment_method": "credit-card" } ``` `sales` / `generate-sale` with `buyer_key` - `https://.payme.io/api/sales` ``` { "seller_payme_id": "680DABCB-TESTMPL-384516B5-16B55EBE", "product_name": "Verfication test", "sale_price": 500, "currency": "ILS", "payment": { "method": "credit-card", "card_number": "1234567891011121", "card_expiry": "1224", "card_cvv": "123" }, "customer": { "name": "First Name", "email": "test@example.com", "phone": "+15417543010", "social_id": "123456782", "zip_code": "1234567" } } ``` #### Expected Response `generate-sale` response example: ``` { "status_code": 0, "sale_url": "https://.payme.io/sale/generate/SALEGUID", "payme_sale_id": "SALEGUID", "payme_sale_code": sale_id, "price": 100, "transaction_id": "", "currency": "ILS", "sale_payment_method": "credit-card" } ``` `sales` response example: ``` { "status_code": 0, "payme_status": "success", "status_error_code": 0, "payme_sale_id": "SALEGUID", "payme_sale_code": 1185468, "sale_created": "2022-11-27 18:29:06", "payme_sale_status": "completed", "sale_status": "completed", "currency": "USD", "transaction_id": "", "is_token_sale": false, "price": 500, "payme_signature": "SIGNATUREID", "sale_description": "Shirt", "sale_deferred_months": null, "payme_transaction_id": "TRANGUID", "payme_transaction_total": "500", "payme_transaction_card_brand": "Visa", "payme_transaction_auth_number": "AUTHNO.", "payme_transaction_voucher": "VOUCHERNO.", "payme_transaction_emv_uid": null, "payme_transaction_acquirer": "PayMe", "payme_transaction_auth_source": "VoiceMail", "payme_transaction_card_issuer": "Visa", "payme_transaction_credit_type": "RegularCredit", "buyer_name": "First Name", "buyer_email": "test@example.com", "buyer_phone": "+15417543010", "buyer_card_mask": "458045******4580", "buyer_card_exp": "1224", "buyer_card_is_foreign": false, "buyer_social_id": "123456782", "installments": 1, "transaction_first_payment": "500", "transaction_periodical_payment": 0, "transaction_arn": null, "sale_paid_date": "2022-11-27 18:29:06", "sale_release_date": null, "sale_3ds": false, "redirect_url": null } ``` ### 2nd Step - Multi Capturing In order to use our multi-capture feature, you'll need to create new payment intents using either of the methods described in step 1, with an additonal unique parameters: Parameter Name | Parameter Type | Parameter Description ---|---|--- `sale_type` | string | The new sale type for capturing the authorize - `multi-capture`. `origin_sale_id` | string | The original sale GUID (ID) that was received when completing the authorization action. You can use the following methods: `generate-sale` request example: ``` { "seller_payme_id": "MPL15130-TESTMPL-DEMOTEST-DEMOTEST", "sale_price": "100", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_type": "multi-capture", "origin_sale_id": "SALEGUID", "sale_payment_method": "credit-card" } ``` `sales` request example: ``` { "seller_payme_id": "680DABCB-TESTMPL-384516B5-16B55EBE", "product_name": "Verfication test", "sale_price": 500, "currency": "ILS", "origin_sale_id": "SALEGUID", "sale_type": "multi-capture" "payment": { "method": "credit-card" }, "customer": { "name": "First Name", "email": "test@example.com", "phone": "+15417543010", "social_id": "123456782", "zip_code": "1234567" } } ``` ### Response Example ``` { "status_code": 0, "payme_sale_id": "SALE1669-DEMODEMO-DEMODEMO-D4XZCQSV", "payme_sale_code": 123456, "price": 10000, "transaction_id": "", "currency": "ILS", "sale_payment_method": "credit-card", "redirect_url": null, "transaction_cc_auth_number": "123456", "payme_transaction_auth_number": "123456", "sale_status": "completed", "payme_status": "success", "status_error_code": 0, "sale_created": "2022-11-30 09:58:26", "payme_sale_status": "completed", "is_token_sale": false, "payme_signature": null, "sale_description": "Shirt", "sale_deferred_months": null } ``` ### Errors Handling - [Multi Capture Paypal](https://docs-staging.payme.io/marketplaces-and-platforms/payments/multi-capture-paypal): The guide will be a run-through the process of using our Multi-Capture logic for Paypal payments. # Multi-Capture - PayPal The guide will be a run-through the process of using our Multi-Capture logic for Paypal payments. In order to initiate the process, you'll need to make sure the following prerequists: 1. Paypal enabled MPL in our platform. 2. Paypal account in hand for the authorization flow. ### 1st Step - Authorization In the 1st step, you will need to create a new payment intent using our APIs: 1. `generate-sale` 2. `sales` (Combination of both generate + pay sale actions) #### Requests Examples `generate-sale` - `https://.payme.io/api/generate-sale` ``` { "seller_payme_id": "MPL90011-90011EXM-EXAMPLE0-EXAMPLE9", "sale_price": "100", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_type": "authorize" "sale_payment_method": "paypal" } ``` `sales` / `generate-sale` with `buyer_key` - `https://.payme.io/api/sales` ``` { "seller_payme_id": "680DABCB-TESTMPL-384516B5-16B55EBE", "product_name": "Verfication test", "sale_price": 500, "currency": "ILS", "payment": { "method": "paypal", "card_number": "1234567891011121", "card_expiry": "1224", "card_cvv": "123" }, "customer": { "name": "First Name", "email": "test@example.com", "phone": "+15417543010", "social_id": "123456782", "zip_code": "1234567" } } ``` #### Expected Response `generate-sale` response example: ``` { "status_code": 0, "sale_url": "https://.payme.io/sale/generate/SALEGUID", "payme_sale_id": "SALEGUID", "payme_sale_code": sale_id, "price": 100, "transaction_id": "", "currency": "ILS", "sale_payment_method": "paypal" } ``` `sales` callback example: ``` { "status_code": 0, "payme_status": "success", "status_error_code": 0, "payme_sale_id": "SALEGUID", "payme_sale_code": 1185468, "sale_created": "2022-11-27 18:29:06", "payme_sale_status": "completed", "sale_status": "completed", "currency": "USD", "transaction_id": "", "is_token_sale": false, "price": 500, "payme_signature": "SIGNATUREID", "sale_description": "Shirt", "sale_deferred_months": null, "payme_transaction_id": "TRANGUID", "payme_transaction_total": "500", "payme_transaction_card_brand": "Visa", "payme_transaction_auth_number": "AUTHNO.", "payme_transaction_voucher": "VOUCHERNO.", "payme_transaction_emv_uid": null, "payme_transaction_acquirer": "PayMe", "payme_transaction_auth_source": "paypal", "payme_transaction_card_issuer": "Visa", "payme_transaction_credit_type": "RegularCredit", "buyer_name": "First Name", "buyer_email": "test@example.com", "buyer_phone": "+15417543010", "buyer_card_mask": "458045******4580", "buyer_card_exp": "1224", "buyer_card_is_foreign": false, "buyer_social_id": "123456782", "installments": 1, "transaction_first_payment": "500", "transaction_periodical_payment": 0, "transaction_arn": null, "sale_paid_date": "2022-11-27 18:29:06", "sale_release_date": null, "sale_3ds": false, "redirect_url": null } ``` ### 2nd Step - Multi Capturing In order to use our multi-capture feature, you'll need to create new payment intents using either of the methods described in step 1, with an additonal unique parameters: Parameter Name | Parameter Type | Parameter Description ---|---|--- `sale_type` | string | The new sale type for capturing the authorize - `multi-capture`. `origin_sale_id` | string | The original sale GUID (ID) that was received when completing the authorization action. You can use the following methods: `generate-sale` request example: ``` { "seller_payme_id": "MPL15130-TESTMPL-DEMOTEST-DEMOTEST", "sale_price": "100", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_type": "multi-capture", "origin_sale_id": "SALEGUID", "sale_payment_method": "paypal" } ``` `sales` request example: ``` { "seller_payme_id": "680DABCB-TESTMPL-384516B5-16B55EBE", "product_name": "Verfication test", "sale_price": 500, "currency": "ILS", "origin_sale_id": "SALEGUID", "sale_type": "multi-capture" "payment": { "method": "paypal" }, "customer": { "name": "First Name", "email": "test@example.com", "phone": "+15417543010", "social_id": "123456782", "zip_code": "1234567" } } ``` ### Callback Example ``` { "status_code": 0, "payme_sale_id": "SALE1669-DEMODEMO-DEMODEMO-D4XZCQSV", "payme_sale_code": 123456, "price": 10000, "transaction_id": "", "currency": "ILS", "sale_payment_method": "credit-card", "redirect_url": null, "transaction_cc_auth_number": "123456", "payme_transaction_auth_number": "123456", "sale_status": "completed", "payme_status": "success", "status_error_code": 0, "sale_created": "2022-11-30 09:58:26", "payme_sale_status": "completed", "is_token_sale": false, "payme_signature": null, "sale_description": "Shirt", "sale_deferred_months": null } ``` - [Capture sale](https://docs-staging.payme.io/marketplaces-and-platforms/payments/capture-sale): Also known as “Pre-Authorization”. The requested amount gets reserved (blocked) on the credit card of the buyer for up to 168 hours. A following Capture request will trigger the actual settlement of the funds. Please note that attempting to Capture after the allowed period of time (168 hours) will result in an error. # Capture Sale (Authorization) Also known as “Pre-Authorization”. The requested amount gets reserved (blocked) on the credit card of the buyer for up to 168 hours. A following Capture request will trigger the actual settlement of the funds. Please note that attempting to Capture after the allowed period of time (168 hours) will result in an error. ### Importante Notes * Authorization can be fully executed or partially **executed only once**. * In order to authorize a payment, the sale should be generated with the `sale_type="authorize"` parameter, and the returned IFRAME displayed to the buyer for credit card information filling. Attribute |Description ---|--- `sale_type` |= authorize, creates a new sale as authorization. The authorization is reserved for up to 168 hours `payme_sale_id `|`XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX` Our unique sale ID `sale_price `|`10000` Capturing sale final price. It can be lower or equal to the original price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 `installments` |`1` (required, number) - Amount of installments for the sale. ### Process Flow 1. Create a sale with [`generate-sale`](https://docs-staging.payme.io/payments/direct-api/post-pay-sale) according to the special attributes in the table above. 2. Once the sale is created, you will get a `sale_url` for the payment page and a unique `payme_sale_code`. 3. After the buyer insert the payment details and pay for the sale, you will receive a callback to the dedicated callback URL you entered in the `generate-sale` request. 4. To execute the sale, use the [`capture-sale`](https://docs-staging.payme.io/marketplaces-and-platforms/payments/capture-sale) request, with the amount you charge. If you want to cancele the authorization, you need to void the sale using [`refund-sale`](https://docs-staging.payme.io/payments/post-sale-actions/post-refund-sale). ### Payment Capabilities You can find all the payment capabilities [Pay Sale](https://docs-staging.payme.io/payments/direct-api/post-pay-sale). - [Create Payment With Buyer Key (Token)](https://docs-staging.payme.io/marketplaces-and-platforms/payments/create-payment-with-buyer-key-token): Allows for token capture upon the buyer's payment (submission of payment details). # Create Payment With Buyer Key (Token) Allows for token capture upon the buyer's payment (submission of payment details). Attribute |Description ---|--- `sale_type` |= token, once the buyer completes the payment, you will receive a callback containing a token known as the "buyer_key." `sale_callback_url `| URL address for receiving the callback. ### Process Flow 1. Create a sale with [`generate-sale`](https://docs-staging.payme.io/payments/direct-api/post-pay-sale) according to the special attributes in the table above. 2. Once the sale is created, you will get a `sale_url` for the payment page and a unique `payme_sale_code`. 3. After the buyer insert the payment details and pay for the sale, you will receive a callback to the dedicated callback URL you entered in the `generate-sale` request. The callback contains the `buyer_key`, which is the token. ### Payment Capabilities You can find all the payment capabilities [Pay Sale](https://docs-staging.payme.io/payments/direct-api/post-pay-sale). - [How to create subscription](https://docs-staging.payme.io/marketplaces-and-platforms/payments/how-to-create-subscription): Diagram of the steps to create a recurring subscription payment with PayMe. # How to create a subscription ![image.png](../../assets/images/image.png) - [3D Secure Guide](https://docs-staging.payme.io/marketplaces-and-platforms/3d-secure/3d-secure-guide): 3-D Secure is a protocol designated to redurce fradulant transactions and protect merchants from losing the funds for those transactions. The name refers to the "three domains" which interact using the protocol: the merchant/acquirer domain, the issuer domain, and the interoperability domain. Our API is designed to allow platforms to offer a full payment solution as part of their product.Using the API you can allow sellers accept 3DSecure authorizations for credit card payments. ## Introduction - 3D Secure 3-D Secure is a protocol designated to redurce fradulant transactions and protect merchants from losing the funds for those transactions. The name refers to the "three domains" which interact using the protocol: the merchant/acquirer domain, the issuer domain, and the interoperability domain. Our API is designed to allow platforms to offer a full payment solution as part of their product. Using the API you can allow sellers accept 3DSecure authorizations for credit card payments. Requirements | Key | Description | | ---------------------- | ------------------------------------------------------------------------------------------------------------------- | | PayMe-Public-Key | Merchant's public key, must be sent in the HEADER of /api/sales/{payme_sale_id}/3ds requests | | PayMe-Merchant-Ke | Merchant's unique ID (seller_payme_id), must be sent in the HEADER of api/sales/{payme_sale_id}/3ds/{hash} requests | | Active 3DSecure module | The seller must have an active 3DSecure module in his PayMe account | | Credit card details | Mapped to payment input | | Cardholder details | Mapped to customer input | ## 3DSecure General Flow The flow is built with a few steps to allow multiple integration types. It is important to be familiar with the whole flow to be able to understand the customer experience. ## Generating a Regular SaleGenerating the sale with our Ganerate-Sale API endpoint. Please notice that the flow ends in a redirect that will return the 3DSecure result hash. This URL will be configured in the sale_return_url, the same way we set in regular payments. More info at step Retrieve 3DSecure Hash. ## Initialize 3DSecure Request Right after we genereiting the sale, we are initializing a secured payment attempt. A successful response contains a redirect_url attribute that you should redirect the customer to. An error can caused when the 3DSecure provider cannot handle the credit card. This function should be sent from you frontend, thus required a public key authenication. ## Open the 3DSecure Page - Card Issuer Interacation When the user get redirected, we are generating a custom authorization page according to the card issuer. The issuer may authenticate the attempt in verious ways, like: - SMS code verification - A secret code - Activate from private application ## Retrieve 3DSecure Hash As the buyer complete the authorization, he got redirect back from the card issuer page, and we want to get again to the flow (as the previous redirects was asyncronous), so we can continue the flow by showing message according to the result status, and use the result to compelete the payment page using the 3DSecure Parameters. We are going to do this by with a hash, that we are goint to resolve in the next step There are 2 way to achieve this step: ## JavaScript Window\.postMessage In case we open the redirect in an iframe, we can create a postMessage Listener in our parent page that will handle the result. The Listener will get a JSON serialized object, with 2 attributes: type: "3DSecure Hash" and hash: "S0ME-R4ND0M-H4SH" The Listener also may close the payment page if you want. For example: ```js // Called sometime after postMessage is called function receiveMessage(event) { // Do we trust the sender of this message? if (event.origin !== "https://preprod.paymeservice.com") return; data = JSON.parse(event.data) if (data.type !== "3DSecure Hash") { return; } // TODO: Great! now its time to think again... request "api/sales/{guid}/3ds/" + data.hash // TODO: Failed? show error message. success? try pay with 3 parameters console.log("myPaymentPage", event); pay3DS(resolve3DS(data.hash)); } window.addEventListener("message", receiveMessage, false); ``` ## GET parameter in the sale_redirect_url The 3dsecure hash will be returned at the 3ds GET parameter, with all other sale return parameters (can be found at success redirects)In cases that PayMe gets no sale_return_url or parent.callback3DSecure function, we will pop up an alert message that something was missing. ## Resolve Secured Hash Got the 3DSecure hash? Great, now we want to check if the attempt was successful, or has it failed and we should start the flow again with Initialize 3DSecure Request. You implement this step by the Resolve Secured Hash API. This API should be called from your backend as we are using a private key! A successful HTTP code for this function means the hash was not damaged. To check if the attempt was successful or not, we should check the status_code paramter.A successful message will contain the payme_sale_id and three parameters which will identify this transaction as 3DSecure. These values are the ECI, the CAVV and the XID. Now we can proceed with the payment itself. ## Pay! Now we have the three parameters of the 3DSecure authorization, which in most cases will be sent to the Acquirer/Gateway as-is, without any modifications. ## Special ECI Handling These are the available ECI values: | ECI Value | Card Schema | Definition | | --------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 00 | MasterCard | Authentication is unsuccessful or not attempted. The credit card is either a non-3D card or card issuing bank does not handle it as a 3D transaction. | | 01 | MasterCard | 3D card authentication is unsuccessful. Either cardholder or card issuing bank is not 3D enrolled/ready. | | 02 | MasterCard | 3D card authentication is successful. Both cardholder and card issuing bank are 3D enabled. | | 05 | Visa, American Express, JCB | 3D card authentication is successful. Both cardholder and card issuing bank are 3D enabled. | | 06 | Visa, American Express, JCB | 3D card authentication is unsuccessful. Either cardholder or card issuing bank is not 3D enrolled/ready. | | 07 | Visa, American Express, JCB | Authentication is unsuccessful or not attempted. The credit card is either a non-3D card or card issuing bank does not handle it as a 3D transaction. Some Acquirers/Gateways have different translation for the ECI parameter values, we recommend contacting your Acquirer/Gateway for more details. | CreditGuard is one of such gateways, which requires translating the ECI values in case of MasterCard brands, you can find the mapping below: | PayMe value | CreditGuard value | | ----------- | ------------------- | | 00 | 7 | | 01 | 6 | | 02 | 5 | | Other | Keep original value | ## Create a sale with dynamic 3DS This option will require the seller the signup to the 3DS service before he will be able to process transactions with 3DS. When the seller is approved, as part generate-sale command, you will need add the following to the generate-sale request: ```json "services": [ { "name": "3DSecure", "settings": { "active": false } } ] ``` - [3D Secure as a Service](https://docs-staging.payme.io/marketplaces-and-platforms/3d-secure/3d-secure-as-a-service): The standalone 3D Secure service enables you to leverage the 3D Secure capabilities of PayMe in an independent API request, without executing the usual purchase or authorization transaction that triggers 3D Secure authentication. # 3D Secure as a Service #### **What is the standalone 3D Secure service?** The standalone 3D Secure service enables you to leverage the 3D Secure capabilities of PayMe in an independent API request, without executing the usual purchase or authorization transaction that triggers 3D Secure authentication. By using the standalone 3D Secure service, you can request the user to undergo 3D Secure verification as a distinct process, allowing you to authenticate the user's card without taking any further action. If desired, you can rely on the authentication achieved during this step to perform an authorize or purchase transaction at a later time. #### When should I use the standalone 3D Secure service? There are various use cases for merchants where you may want to ensure that your customer's payment card undergoes 3D Secure authentication at a specific point in the transaction workflow. For instance, you might want to process 3D Secure verification during customer sign-up without immediately charging the customer's payment card. This ensures that you can apply charges at a later time with confidence, without interrupting the transaction flow as you wait for the customer to pass 3D Secure. This situation may arise when you wish to charge the customer only after shipping the purchased items, or when the customer enrolls in a service they will start using at a later date. #### Standalone 3D Secure in two steps It's important to note that the standalone 3D Secure service involves a two-step process, and both steps must be completed to finalize 3D Secure verification: Enrollment check: In the first step, PayMe verifies whether the customer's card is enrolled in 3D Secure. If the payment card is enrolled, the customer undergoes the 3DS authentication process and encounters a 3D Secure page. On this page, the customer enters the 3D Secure OTP received from their issuing bank. Once the customer submits the OTP, PayMe receives and records the encrypted 3DS payload. Authentication: In the second step, PayMe decrypts the 3DS payload. Using the merchant ID value, we confirm whether the 3DS secure enrollment response successfully authenticates a transaction using the customer's card. - [Hosted Fields JSAPI Guide](https://docs-staging.payme.io/marketplaces-and-platforms/integrations/hosted-fields-jsapi-guide): How to embed PayMe Hosted Fields (the JavaScript API) in your checkout page: load the library, initialise it with your merchant API key, mount the card fields, and pay a sale. # Hosted Fields JSAPI Guide ## Client Integration Manual #### Basic * [jsFiddle](https://jsfiddle.net/0tmq6c2h/) Basic example based on Bootstrap 3 #### Example 1 * [JavaScript](https://github.com/PayMeService/payme-jsapi/blob/master/js/example1.js) * [CSS](https://github.com/PayMeService/payme-jsapi/blob/master/css/example1.css) #### Example 1 RTL * [JavaScript](https://github.com/PayMeService/payme-jsapi/blob/master/js/example1-he.js) * [CSS](https://github.com/PayMeService/payme-jsapi/blob/master/css/example1-he.css) The same UI/UX example like Example 1 but shows how to tackle RTL languages #### Example 2 * [JavaScript](https://github.com/PayMeService/payme-jsapi/blob/master/js/example2.js) * [CSS](https://github.com/PayMeService/payme-jsapi/blob/master/css/example2.css) #### Example 3 * [JavaScript](https://github.com/PayMeService/payme-jsapi/blob/master/js/example3.js) * [CSS](https://github.com/PayMeService/payme-jsapi/blob/master/css/example3.css) #### Example 4 * [JavaScript](https://github.com/PayMeService/payme-jsapi/blob/master/js/example4.js) * [CSS](https://github.com/PayMeService/payme-jsapi/blob/master/css/example4.css) ### Step-by-step integration Include Client API Library into `` section of your page Put markup, designed by your own or corporate site template Initialize integration with `API key`, get `Hosted Fields Manager` and manage protected fields using simple API ### [Click here to review our Github library](https://github.com/PayMeService/payme-jsapi) ### Include Client API Library ```html ... ... ... ``` #### Put your payment form markup ```html ...
``` ---- #### Initialization and interaction ```html ... ... ``` Let's break down code, presented above. First of all you must get and provide your Merchant API key from Settings page in the dashboard. ```js ... // This is the Merchant API key (Test API key in this case) var apiKey = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'; ... ``` Second, you must obtain integration instance for the merchant ```js var apiKey = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'; // There is optional configuration object with testMode: true // because we are using the API key from the test server PayMe.create(apiKey, { testMode: true }) .then(function (instance) { // Here we can work with successfully initialized // integration instance - Integration Manager ... }) .catch(function(error) { // Here you can handle instantiation error ... }); ... ``` #### Initialization settings Property |Default value |Available values| Description ---|---|---|--- `testMode`| false| true / false| Test mode - used to control in which environment payment will be processed `language` |'en' |'en' / 'he' |Language - controls the language of the messages and text direction (rtl or ltr). en (for English) or he (for Hebrew) `tokenIsPermanent` |true| true / false| Token is permanent - Indicates whether it is a one-time-use or multi-use token **Next step - to initialize integration type and get corresponding manager** #### Hosted fields integration type This integration type allows you to use secure way to collect user's sensitive data for making payments. To obtain Hosted Fields manager you must call `hostedFields` method ```js PayMe.create(key, { testMode: true }) .then(function (instance) { // Getting Hosted Fields Integration manager var fields = instance.hostedFields(); }) .catch(function(error) { ... }); ``` As soon as you have Hosted Fields Manager you are ready to create actual protected fields. You can create as many fields as you need but you can create each field type only once. It means if `cardNumber` field was created you can't create more `cardNumber` fields, but you can create `payerEmail` and other (for details see Tokenization section). For example let's create 3 most important fields: ```js PayMe.create(key, { testMode: true }) .then(function (instance) { var fields = instance.hostedFields(); // Hosted fields creation var cardNumber = fields.create('cardNumber'); var expiration = fields.create('cardExpiration'); var cvc = fields.create('cvc'); }) .catch(function(error) { ... }); ... ``` **Hint - We propose to create field names within `Payme.fields` object** ```js // Instead of this var cardNumber = fields.create('cardNumber'); // try to use this var cardNumber = fields.create(PayMe.fields.NUMBER); ``` Having created all of necessary fields, they must be mounted to the chosen page place. Fields will be shown on your page only after mounting ```js PayMe.create(key, { testMode: true }) .then(function (instance) { var fields = instance.hostedFields(); var cardNumber = fields.create('cardNumber'); var expiration = fields.create('cardExpiration'); var cvc = fields.create('cvc'); // Mount credit card inside container with id="card-number-container" cardNumber.mount('#card-number-container'); ... }) .catch(function(error) { ... }); ... ``` **Hint - Field instance mount method accepts any valid query selector** ```js // Select by id cardNumber.mount('#card-number-container'); // Select by class cardNumber.mount('.credit-card-wrapper'); // Select by attribute cardNumber.mount('[data-role="credit-card-input"]'); ``` **Hint - We can be notified on result by promise, because field mounting is an asynchronous process** ```js ... // Mount credit card inside container with id="card-number-container" cardNumber.mount('#card-number-container').then(function() { // Field was mounted successfully }).catch(function(error){ // There is error handling code }); ... ``` #### Field Creation Options `.create(field, options)` method accepts an optional second argument `options` which is helpful in case you want to customize the field created with it. ```js var cardNumberFieldOptions = { placeholder: 'Enter your Credit Card Number', messages: { required: 'The Credit Card Number is Required!', invalid: 'Bad Credit Card Number' }, styles: ... // see below }; var cardNumber = fields.create('cardNumber', cardNumberFieldOptions); ``` The available properties for customization: Property| Description ---|--- `placeholder`| Placeholder text for empty field `messages`| Validation messages object, can have required and invalid properties (see Field Event Object and Examples page) `styles` |CSS properties for "protected" fields (see Field Styling) ### Field Styling Because the "protected" fields are protected, you can use only limited CSS properties and selectors: Whitelisted CSS properties: * `color` * `font-size` * `text-align` * `letter-spacing` * `text-decoration` * `text-shadow` * `text-transform` Whitelisted CSS rules: `::placeholder` Allowed properties and selectors are organized into three groups within field creation configuration options. ```js var cardNumberFieldOptions = { placeholder: 'Enter your Credit Card Number', // ... styles: { base: { 'color': '#000000', '::placeholder': { color: '#F2F2F2' } }, invalid: { 'color': 'red' }, valid: { 'color': 'green' } } }; ``` Each group represents the state of the protected field like a CSS class. For example: ```css /* base styles would be applied as a default style */ input.credit-card .base { color: #000000; font-size: 16px; text-align: center; letter-spacing: .25em; text-decoration: underline; text-shadow: 1px 1px 2px black, 0 0 1em red; text-transform: uppercase; } input.credit-card ::placeholder { color: gray; } /* .invalid styles would be applied on top of the .base when field validation fails */ input.credit-card .base .invalid { color: red; } /* .valid styles would be applied on top of the .base when the field became valid */ input.credit-card .base .valid { color: green; } ``` **Note - This information is related only to "protected" fields, which were created with [Hosted Fields Integration manager](https://github.com/PayMeService/payme-jsapi#hosted-fields-integration-type) via .create(...) and .mount(...) call. In case you are going to use your own markup/widget/etc. for any additional fields (first name, last name, email, phone number, social ID) then you are free to use any CSS code to style them.** #### Hosted fields integration interaction Right after field creation you can use field instance to listen basic set of events to interact with code on your page. For example, let's listen keyup event on credit card field: ```js PayMe.create(key, { testMode: true }) .then(function (instance) { var fields = instance.hostedFields(); var cardNumber = fields.create('cardNumber'); ... cardNumber.on('keyup', function(event) { console.log(event); }) // Mount credit card inside container with id="card-number-container" cardNumber.mount('#card-number-container'); ... }) .catch(function(error) { ... }); ... ``` and each time when `keyup` event occurs on `cardNumber` field you will be notified. Keep in mind, for security reasons event object was significantly simplified (see **Field Event Object**) #### Field events Using field events your can build you own logic. There is available limited set of events out of the box, those caused by security reasons Event type |Fields| Description ---|---|--- `change`| all| works like standard change `blur `|all| works like standard blur `focus `|all| works like standard focus `keyup` |all| works like standard keyup `keydown`| all| works like standard keydown `keypress `|all| works like standard keypress `validity-changed` |all| emits when field validity state changed. Can be used for showing error messages `card-type-changed` |`cardNumber`| emits when library detects vendor of entered Credit Card number #### Field Event Object Shape of `change`, `blur`, `focus`, `keyup`, `keydown`, `keypress`, `validity-changed` are the same among all the fields and can be either valid or not ```json // Valid field { type: "focus", event: "focus", // event type field: "cardNumber", // field which emits this event isValid: false // field validity status } ``` ```js // Invalid field { type: "focus", event: "focus", // event type field: "cardNumber", // field which emits this event isValid: false, // field validity status message: "Bad credit card number" // validation error message } ``` Shape of card-type-changed is little bit different and it can be used for displaying credit card brand icon ```js // Valid field { type: "card-type-changed" event: "card-type-changed" field: "cardNumber" isValid: true, cardType: "visa" // Card vendor } ``` ```js // Invalid field { type: "card-type-changed" event: "card-type-changed" field: "cardNumber" isValid: false message: "Bad credit card number", cardType: "visa" // Card vendor } ``` here cardType property can be founded. All available types are listed below cardType value| Brand |Mask ---|---|--- `unknown`| Unknown brand| `amex` |**American Express**: starts with 34/37| 34♦♦ ♦♦♦♦♦♦ ♦♦♦♦ `diners`| **Diners Club:** starts with 300-305/309...| 300♦ ♦♦♦♦♦♦ ♦♦♦♦ `jcb` |**JCB:** starts with 35/2131/1800 |35♦♦ ♦♦♦♦ ♦♦♦♦ ♦♦♦♦ `visa` |**VISA:** starts with 4 |4♦♦♦ ♦♦♦♦ ♦♦♦♦ ♦♦♦♦ `mastercard`| **MasterCard:** starts with 51-55/22-27 |51♦♦ ♦♦♦♦ ♦♦♦♦ ♦♦♦♦ `discover`| **Discover**: starts with 6011/65/644-649 |6011 ♦♦♦♦ ♦♦♦♦ ♦♦♦♦ So far so good, now you have form with some fields and you are ready to tokenize sensitive data to create actual sale #### Tokenization Tokenization Is a process of storing sensitive data in the protected vault and providing safe data for you, to make actual payment To kick off tokenization you must call tokenize(...) method on Ingeration Manager instance ```js PayMe.create(key, { testMode: true }) .then(function (instance) { var fields = instance.hostedFields(); ... // Data for tokenization var saleData = { payerFirstName: 'Foo', payerLastName: 'Bar', payerEmail: 'foo-bar@domain.com', payerPhone: '1231231', payerSocialId: '12345', payerZipCode: '123456', total: { label: 'Order #123123', amount: { currency: 'USD', value: '55.00', } } }; // Call for tokenization instance.tokenize(saleData) .then(function (tokenizationResult) { // Successfull tokenization // // Now you can send 'tokenizationResult' to // your server and call `generate-sale` on Core API console.log(tokenizationResult); }) .catch(function(tokenizationError) { // Failed tokenization // // you can explore 'tokenizationError' object and show error message on your taste console.error(tokenizationError) }); }) ... ... ``` If you want let your users input additional data (First name, Last name, Email, Phone number, Social ID) rather provide by yourself you can use native HTML inputs within your page (please check our examples page). This approach let you to use any presenting, styling, formatting logic. To help you with validation we were exposing validators to you #### Additional fields validators Particular validator can be obtained and used by this code ```js // ... var firstNameValidator = PayMe.validators[PayMe.fields.NAME_FIRST]; var validation = firstNameValidator.test('John'); // ... console.log(validation); ``` #### Additional fields validation result If validation result is success then `validation` would be `null` in the other case: * `{required: true}` - if firstNameValidator.test(...) argument not defined * `{invalid: true}` - if firstNameValidator.test(...) argument has unallowable value #### Note Values within additional fields must pass exposed validators. Without fulfilling this condition tokenization will fail! **tokenizationResult Structure (successful tokenization)** ```js { // Safe Credit Card data card: { cardMask: "411111******1111", cardholderName: "Firstname Lastname", expiry: "1119" }, // Service data type: "tokenize-success", testMode: true, token: "BUYER154-0987247Y-MLJ10OI7-LXRDNDYP", // Payment token for generating payment // Payer data payerEmail: "firstname-lastname@domain.com", payerName: "Firstname Lastname", payerPhone: "1231231", payerSocialId: "111123", // Payment data total: { label: "🚀 Rubber duck", amount: { currency: "USD", value: "55.00" } } } ``` **tokenizationError structure (tokenization failed)** ```js { // Says that the form contains invalid values validationError: true // Here you can find error messages for particular field errors: { payerEmail: "Mandatory field", payerPhone: "Mandatory field" }, type: "tokenize-error", } ``` Also, you can receive such shape (may be changed in the future) ```js { // This error means that tokenization has already // performed for this Intergation Instance error: "Bad session", message: "Session expired or deleted", statusCode: 400, type: "tokenize-error", } ``` ### Tokenization and Mounted fields As was mentioned above you can create as many different fields as you need but sometimes you have some user's data, supposed to be filled and you don't want bother your users requested filling their data again. You can do that, just provide it within `Data for tokenization` object. For example if you already have email or First + Last Name and you want provide it directly, you can to it ```js PayMe.create(key, { testMode: true }) .then(function (instance) { var fields = instance.hostedFields(); // Create and Mount credit card field var cardNumber = fields.create('cardNumber'); cardNumber.mount('#card-number-container'); ... // Create and Mount credit card expiration field ... // Create and Mount CVV field ... // Create and Mount Social Id field ... // Create and Mount Phone number field ... // Provide all available data var saleData = { payerFirstName: 'Foo', // First name field wasn't created, we must provide value payerLastName: 'Bar', // Last name field wasn't created, we must provide value payerEmail: 'foo-bar@domain.com', // Email field wasn't created, we must provide value // payerPhone: '1231231', // value isn't needed due created Phone number field // payerSocialId: '12345', // value isn't needed due created Social Id field // payerZipCode: '123456', // value isn't needed due created Zip Code field total: { label: 'Order #123123', amount: { currency: 'USD', value: '55.00', } } }; // Call for tokenization instance.tokenize(saleData) .then(function (tokenizationResult) { // Successfull tokenization // // Now you can send 'tokenizationResult' to // your server and call `generate-sale` on Core API console.log(tokenizationResult); }) .catch(function(tokenizationError) { // Failed tokenization // // you can explore 'tokenizationError' object and show error message on your taste console.error(tokenizationError) }); }) ... ... ``` #### Rule of thumb If you didn't create field - provide corresponding value in tokenization payload, but with one exception. You can't provide values for Credit Card Number, Credit Card Expiration and CVV - corresponding fields must be created and mounted always ### What should be done with tokenized data? You as an embedder may decide by yourself but main idea is **send tokenization data to backend and generate sale** using [Generate sale](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale) Let's say you have such tokenization result and sent it to your backend: ```js { card: { cardMask: "411111******1111", cardholderName: "Firstname Lastname", expiry: "1119" }, type: "tokenize-success", testMode: true, token: "BUYER154-0987247Y-MLJ10OI7-LXRDNDYP", payerEmail: "firstname-lastname@domain.com", payerName: "Firstname Lastname", payerPhone: "1231231", payerSocialId: "111123", total: { label: "🚀 Rubber duck", amount: { currency: "USD", value: "55.00" } } } ``` On the backend side you can start building the generate-sale payload Generate Sale Attribute| Tokenization Attribute ---|--- `sale_price`| `tokenizationData.total.amount.value` - must be converted to the integer `product_name`|` tokenizationData.total.label` `currency` |`tokenizationData.total.amount.currency` `buyer_key`|` tokenizationData.token` and send it to the `https://.payme.io/api/generate-sale` #### Security notes: Our service has a strict Content Security Policy (CSP) which in some cases might cause error messages to appear in the browser console. These errors do not cause any kind of malfunction or security risk to our service, and you can safely ignore them. * In most cases the errors are caused by third party extensions installed on the browser. Try turning off the extensions or browse in private mode. * The error messages might also be caused by potentially malicious JavaScripts or browser extensions which inject JavaScript to the content pages. Our service is protected against such threats. **Errors examples:** ![console-errors.png](https://docs-staging.payme.io/marketplaces-and-platforms/_files/77QH3js4Q0E.png) ## 3DS Integration Using JS API ### Step #1 - Setup This point is identical to what was described in [Include Client API Library](https://github.com/PayMeService/payme-jsapi#include-client-api-library). You do not need to provide any HTML markup for this interaction if you only use this API to get client information for making payments with 3Ds. [JSFiddle Example](https://jsfiddle.net/7ywn9g3L/10/) ### Step #2 - Invoke and Handle hashing result To obtain client information hash, you as implementer must call the method upon PayMe object and handle Promise resolution. ```html ... ... ... ... ... ... ``` ##### Important Note PayMe.clientData(isTestMode) can accept boolean argument to indicate that payment doing in test mode ### Step #3 - Consume The Encrypted Data After receiving the hashed client information, the implementer must send this hash to your Back-End server and use it as a parameter for pay-sale (as described below) ### Step #4 - Initiate Payment Flow In order to initiate a payment flow, the implementer must have the following 2 data objects: * *Buyer Key* * *JWT Token* When you have these two parameters, you are good to go in the matters of starting a payment flow ### Step #5 - APIs to complete the payment In order to complete the payment, you’ll need to use 2 API endpoints: generate-sale pay-sale #### Generate-sale API request to ../api/generate-sale ```json { "seller_payme_id": "MPL00013-00013EXM-EXAMPLE0-EXAMPLE3", "sale_price": "1000", "currency": "eur", "product_name": "Shirt", "sale_type": "sale", "sale_payment_method": "credit-card", "sale_callback_url": "URL" } ``` **In the case of a challenge, you will receive the 3DS flow result to the callback URL you will provide in the generate-sale request.** #### Expected Response ```json { .... "payme_sale_id": "SALE1655-3843870J-NTPYLJNW-SOWRLK9X", ..... } ``` #### With the sale ID received in the response, you’ll be able to initiate the request to pay-sale: ```json { "seller_payme_id":"MPL90010-90010EXM-EXAMPLE0-EXAMPLE9", "sale_price":"1000", "currency":"ILS", "installments":"1", "language": "en", "sale_callback_url": "https://www.example.com/payment/callback", "sale_return_url": "https://www.example.com/payment/success", "capture_buyer": 0, "payme_sale_id": "SALE1654-092102PD-2KRBHZMM-YMP33H7R", "buyer_email": "idan@payme.io", "buyer_name": "jordan sssssssssssss", "buyer_social_id": 311234488, "meta_data_jwt":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImN0eSI6Impzb24ifQ.eyJpYXQiOjE2NTUzODQ3NDEsIm5iZiI6MTY1NTM4NDc0MSwiZXhwIjoxNjU1Mzg4MzQxLCJqdGkiOiJlMDBkOTYzMy02ZWExLTRjMTMtOWU4Zi01OTVhYjMyMjU4ZDIiLCJkYXRhIjp7ImlwIjoiMTIzNDUuMTIzNC4zMyIsImFjY2VwdCI6InRleHRcL2h0bWwiLCJqYXZhRW5hYmxlZCI6dHJ1ZSwiamF2YVNjcmlwdEVuYWJsZWQiOnRydWUsImxhbmd1YWdlIjoiaGUtaWwiLCJjb2xvckRlcHRoIjoyLCJzY3JlZW4iOnsiaGVpZ2h0IjoxMi4yLCJ3aWR0aCI6MTIuM30sInRpbWV6b25lIjoiSmVydXNhbGVtIiwidXNlckFnZW50IjoiTW96aWxsYVwvNS4wIChXaW5kb3dzIE5UIDYuMTsgV2luNjQ7IHg2NDsgcnY6NDcuMCkgR2Vja29cLzIwMTAwMTAxIEZpcmVmb3hcLzQ3LjAifX0.WbyU3ejj2PaG9EEPJRxsTqhyB_SuAWgzqJyi6l5l_Fpw3dDpv9obpcPme-7ViGdOTJ97Qn1GKe8wXBU-Y5tZcrLVbwm4w_hGtvCZFC7FNrALTFg1JH7OIFs4ChpvlqegkvWEzjlOp27bU0VuV3gGAiFEhAXffO9W9hgy8px37nUXZtZUbS0zU2b8KcGjmALhUoti8laIkTet4yXLi4fLBcLA0P0BiBuNdS3owdszehsdDwMOQGdtQYTT9C2ZNOMktvKAYdO8xINS__5Rpqz6WB69T8uvdT2ASjx_--0m-XoCKC05dHH_27g0RQ_rpEYnE-vKIeQW70_LHIsL2tLBCg" } ``` ### Response Handling **If the 3DS flow ended in a challenge (URL is received in the next described response), you will get the following response:** ```json { "status_code": 5, "status_message": "יוצר דף אימות, נא להמתין", "redirect_url": "REDIRECT CHALLANGE URL" } ``` **If the 3DS flow ended in a seamless flow (no challenge required), you will get the following response:** ```json { "status_code": 0, "payme_status": "success", "status_error_code": null, "payme_sale_id": "SALE1655-2121212Y-BWFVU1YE-BQ2J6SUW", "payme_sale_code": 20511311, "sale_created": "2022-06-14 16:08:41", "payme_sale_status": "initial", "sale_status": "completed", "currency": "ILS", "transaction_id": "", "is_token_sale": false, "price": 1000, "payme_signature": null, "sale_deferred_months": null, "status_error_details": null, "redirect_url": null, "transaction_cc_auth_number": "1172408", "payme_transaction_auth_number": "1172408". "3ds_sale": true } ``` **If the 3DS flow ended in a failure, you will get the following response:** ```json { "status_code": 1, "payme_status": "success", "status_error_code": null, "payme_sale_id": "SALE1655-2121212Y-BWFVU1YE-BQ2J6SUW", "payme_sale_code": 20511311, "sale_created": "2022-06-14 16:08:41", "payme_sale_status": "failure", "sale_status": "failure", "currency": "ILS", "transaction_id": "", "is_token_sale": false, "price": 1000, "payme_signature": null, "sale_deferred_months": null, "status_error_details": null, "redirect_url": null, "transaction_cc_auth_number": "1172408", "payme_transaction_auth_number": "1172408". "3ds_sale": false } ``` **To verify 3DS authentication was succesfull**, you can query the transaction using [get transactions endpoint](https://docs-staging.payme.io/payments/query-apis/post-get-transactions) and check parameter `sale_is_3ds` ### Moving to Production After completing your testing period you will get your production credentials, this means that you should also modify your library to work with our **Production Environment**. In order to work with our production environment you should modify the following component: ```js const isTestMode = false; ``` Set `isTestMode` to `false` will modify the requests to pass through to our production environment. You can go back to testing in any moment by modifying the component to: ```js const isTestMode = true; ``` - [Direct API - How to create and pay sale](https://docs-staging.payme.io/marketplaces-and-platforms/integrations/direct-api-how-to-create-and-pay-sale): To initiate and pay a sale, please adhere to the following steps: # Direct API - How to create and pay sale To initiate and pay a sale, please adhere to the following steps: #### 1. Create sale Send a [`generate-sale`](https://docs-staging.payme.io/payments/direct-api/post-pay-sale) request, and get a synchronous response with `payme_sale_id` (our unique sale ID). Please notes that no payment is actually made at this point. #### 2. Pay sale Send a [`pay-sale`](https://docs-staging.payme.io/payments/direct-api/post-pay-sale) request with the credit card details, and the `payme_sale_id` from step #1 above. At this point, a few actions occur: the sale is processed, the buyer is charged, and you receive an asynchronous response with the sale data. #### 3. Receive callback PayMe will send a callback notification (async request) to the provided URLs, as a backup, and security mechanism. #### Tokenization The token of the buyer, if requested, is received as part of the callback in step #3. However, if you only want to get a token and not to perform a sale (for future use), you can use the [`capture-buyer-token`](https://docs-staging.payme.io/payments/tokenization/post-capture-buyer-token) call: To pay with a token, just add the token you saved previously to your next `generate-sale` request in the `buyer_key` attribute. The sale will be paid immediately (without the need to use the `pay-sale` call). - [Pre-Fill payment page](https://docs-staging.payme.io/marketplaces-and-platforms/capabilities/pre-fill-payment-page): You can pass your buyer's details to our payment page, to pre-fill the form. # Pre-Fill payment page (IFRAME) You can pass your buyer's details to our payment page, to pre-fill the form. Simply concatenate the optional parameters to the end of the received sale_url. These are the supported fields: Parameter| Description ---|--- `first_name` |Card holder's first name `last_name` |Card holder's last name `phone`| Card holder's phone number `email`| Card holder's email address `social_id`| Card holder's social ID - used for cards issued in Israel `zip_code`| Card holder's zip code - used for cards issued in USA, Canada and United Kingdom Here is an example of a pre-filled payment page: `urlWithParameters = sale_url + "?first_name=First&last_name=Last&phone=0500000002&email=test@example.com` #### Note 1: For security reasons, credit card information related fields cannot be pre-filled. #### Note 2: Passed values which will be found invalid, won't be displayed on the form. #### Success Redirect (IFRAME) Once the sale is paid successfully, the buyer will be redirected to the provided sale_return_url, with the sale details as GET parameters. Example redirect URL: `https://www.example.com/payment/success?payme_status=success&payme_signature=75e99dbcb25cdfbe1c62f0b9376f4144&payme_sale_id=XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX&payme_transaction_id=XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX&price=10000¤cy=USD&transaction_id=12345&is_token_sale=0` Parameter| Description ---|--- `payme_status`| `success` Status of the request (success, error) `payme_signature`| `75e99dbcb25cdfbe1c62f0b9376f4144` MD5 Signature `payme_sale_id` |`XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX` Our unique sale ID `payme_transaction_id`| `XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX` Our unique transaction ID `price` |`10000` Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 `currency`| `USD` Sale currency. 3-letter ISO 4217 name `transaction_id`| `12345` Merchant's unique sale ID for correlation with us `is_token_sale`| `0` - [Create Seller](https://docs-staging.payme.io/marketplaces-and-platforms/sellers/create-seller): **This endpoint is relevant only to PayMe's partners.** # How to Create New Sellers **This endpoint is relevant only to PayMe's partners.** In this guide you will learn how to create new sellers as a partner, whether it is via API or our white-labeled User-Interface. Once the seller is registered, the marketplace is required to convey the required information to us through a dedicated API. Upon completion, the API will return the new seller information within our system. ![0_0 (1).png](https://docs-staging.payme.io/marketplaces-and-platforms/_files/hnVNgjBRG44.png) ##### Create seller via API. As mentioned above, the partner will be required to collect certain data regarding the seller when creating a new seller. The information can be found on our [API reference](https://docs-staging.payme.io/marketplaces-and-platforms/sellers/create-seller). ##### Create Seller via User-Interface If you would like to onboard new sellers via a dedicated and white-labeled user-interface, you can use PayMe's UI and brand it with your own logo and colors. For more information, [please reach out to our support. ](https://payme.io/contact-us/) ##### User-Interface Onboarding Example Onboarding explanation: creation of new Merchants would be via a dedicated link sent by the Partner. The link would walk them through a registration flow. By using it, the sellers will fill all required details PayMe needs to validate and allow the operation of the Merchant. ![UI_Registration page.jpg](https://docs-staging.payme.io/marketplaces-and-platforms/_files/uxxGEFMKMJg.jpg) Can be segmentated into 3-5 steps instead of 1 ###### Personal Contact Details: | Field | description | | ----------------- | --------------------------------------------------------------------------------------------------------------------- | | **First Name** | Contact's first name | | **Last Name** | Contact's last name | | **ID Number** | Personal social ID numberEmail Address - Company's email address | | **Phone Number** | Company's phone number | | **Contact Phone** | Personal phone number | | **Contact Email** | Personal Email Address | | **Password** | Must include a number, one special character, one capital letter and one lowercase letter. At least8 characters long. | ###### Company Details: | Field | description | | ---------------------------------- | ------------------------------------------------------------------------------------------------------- | | **Company Name** | Company legal name | | **Company Registration code** | Company legal business number | | **Company Type** | Sole Proprietorship, Exempt Company, Company, Registered Company, Non Profit, Limited Liability Company | | **Acquirer previous registration** | If you already have a business code on the acquirer's network, enter it in the designated field. | ###### Bank Account Details: | Field | description | | ---------------- | ---------------------------------------------------------------------------------------------------- | | Bank Code | According to the [list of banks](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/banks-in-israel) | | Bank Branch | Branch number | | Bank account no. | Bank account number | - [Kinds of reports](https://docs-staging.payme.io/marketplaces-and-platforms/reporting/kinds-of-reports): Using our API and system, you can export different kinds of reports. # Use cases Using our API and system, you can export different kinds of reports. #### What is the right report for you? Depending on your business needs, we can automatically generate reports for you. The business case can be built around understanding the following examples: 1. The volume a certain seller processed in a certain day? 2. The count of withdrawls a seller requested in the past X amount of days? 3. The number of active subscriptions a seller currently have? 4. How many sellers do I (The Partner) have in Production? You can consume this information in two different methods: 1. Our Partner dashboard (Manually exported) 2. Our Queries API #### Queries APIs As a partner, you can get access to our Queries APIs and consume the different sets of data. #### Partner Dashboard See Dashboard manual. - [Queries APIs guides](https://docs-staging.payme.io/marketplaces-and-platforms/reporting/queries-apis-guides): > For API reference, please head over to our APIs section using the sidebar on the left. # Queries Guide > For API reference, please head over to our APIs section using the sidebar on the left. ## List Sales [API Reference](https://docs.paymeservice.com/docs/payme-public/b3A6MjU2MDk2MjE-get-sales) By using this API, you can get any sort of data in matters of a sales cycle for a certain seller. For exmaple, you can export sales data to measure any of the following business cases: 1. **Seller's Performance** - Processing volume, transaction count and more. 2. **Average Transaction Value (ATV)** - The average transaction amount in the presented currency. 3. **Understand Your Customer's User Behaviour** - Preferred payment methods, Preferred products and more. 4. **Simplify Reconciliation Procedures** - Export reporting independantly without waiting. 5. **Predict Seller's Cash-flow** - Understand a seller future balance and take decisions based on it. ## List Transactions [API Reference](https://docs-staging.payme.io/payments/query-apis/post-get-transactions) With Get transactions API, you can extract data about transactions processed in a certain time period. Transactions can be one of the following: | Transaction type | Explanation | | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Sale | Sale is the initial status of a transaction. | | Void | A credit/debit card transaction that was cancelled before the business day it was initiated ended. | | Refund | A referral action for a sale. In case the buyer decided to cancel a certain purchase for any kind of reason and the merchant accepted the cancellation request, a refund will be issued. | | Chargeback | In case an unknown purchase appears in the credit/debit card description, the buyer can issue a chargeback. | ## List Sellers [API Reference](https://docs.paymeservice.com/docs/payme-public/b3A6MjU2MDk2MjI-get-sellers) This API allows our partners to consume information about their sellers. The data includes: 1. **Registration date** - When did a certail seller registered to PayMe's system 2. **Withdrawl plans** - What is your seller's withdrawl plans with PayMe's payment processing services 3. **Seller's business code** - What is your sellers business codes 4. **Seller's information** - Address, Bank details and more ## List Subscriptions [API Reference](https://docs.paymeservice.com/docs/payme-public/b3A6MjU2MDk2MjM-get-subscriptions) This API allows our partners to learn about the active and inactive subscriptions of their sellers. The data includes: 1. **Subscriptions Iteration Model**: | ID | Description | | -- | ----------- | | 1 | Daily | | 2 | Weekly | | 3 | Monthly | | 4 | Annually | 2. **Subscription Status**: | ID | Description | | -- | ------------------------------- | | 1 | Initial (not yet paid) | | 2 | Active (paid successfully) | | 3 | Failed | | 4 | Cancelled | | 5 | Completed | | 6 | Failed, pending automatic retry | 3. **Iterations count completed** 4. **Iterations count left (based on subscription model)** 5. **Buyer information** ## List Withdrawals [API Reference](https://docs.paymeservice.com/docs/payme-public/b3A6MjU2MDk2MjQ-get-withdrawls) This API allows our partners to obtain data on a specific withdrawl. The data includes: 1. **Withdrawal creation data** - When a certain withdrawal request was created? 2. **Withdrawal Currency** - What is a certain withdrawal currency? 3. **WIthdrawal total amount** - Net withdrawal amount (Processing - Fees) 4. **Withdrawal status** - Was the withdrawal completed succesfully? - [Sale Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-types): Reference list of PayMe sale types and their numbers, such as sale (J4), authorize (J5), token and template. # Sale Types Sale Type number | Sale Type ---- | ---- 1 |sale (J4) 5 |authorize (J5) 2 |token 3 |saleFromSubscription 4 |saleFromTemplate 5 |multiCapture 6 |customerDeposit 7 |credit 10 |template 11 |saleFromPaymentContract 12 |sellerToken Others |(Depends on the sale_type) - [Sale Statuses](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-statuses): Reference list of sale statuses, from `initial` and `completed` to `refunded`, `chargeback` and `voided`, with what each means. # Sale Statuses Sale Type | Sale Status | Description ---- | ---- | ---- 1 | initial | Creation status, a payment was not attempted 2 | completed | The sale was paid successfully 3 | refunded |The sale was fully refunded 4 | partial-refund|The sale was partially refunded 5 | authorized | The sale was authorized successfully 6 | failed | The sale failed 7 | chargeback|The sale was chargedbacked 8 | canceled|The sale was canceled 9 | voided|The authorization was fully voided 10| partial-void|The authorization was partially voided 11| partial-chargeback|The sale was partially chargedbacked - [Sale Callbacks](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-callbacks): The callback PayMe sends to your server when a sale is paid, authorized, refunded, fails or is charged back: notification types and every payload field. # Sale Callbacks Once the sale is paid successfully, we will notify the marketplace with the sale details with a POST of `type` `x-www-form-urlencoded` request to the marketplace Callback URL. #### Sale Callback Notification Types Notification| Description ---|--- `sale-complete`| The sale was paid successfully `sale-authorized`| The sale was authorized successfully `refund` |The sale was refunded `sale-failure`| There was an error with the sale `sale-chargeback`| The sale was chargebacked `sale-chargeback-refund`| The chargeback was reverted Attribute| Description ---|--- `status_code` |0 Status of the request (0 - success, 1 - error) `status_error_code`| In case of an error, our unique error code `status_error_details`| In case of an error, the error message `notify_type`| sale-complete Sale notification types `sale_created`| 2016-01-01 15:15:15 `transaction_id`| 12345 Merchant's unique sale ID for correlation with us `payme_sale_id`| XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX Our unique sale ID `payme_sale_code` |12345678 Our unique sale code (for display purposes only) `payme_transaction_id`| XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX Our unique transaction ID `price` |1000 Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 `currency`| USD Sale currency. 3-letter ISO 4217 name `sale_status`| completed Sale statuses `payme_transaction_card_brand`| Visa `payme_transaction_auth_number`| 01A2B3C Sale authorization number from the credit company `buyer_card_mask`| 458045******4580 Buyer's credit card mask `buyer_card_exp`| 0118 Buyer's credit card expiry date `buyer_name` |First Last Buyer's full name `buyer_email`| buyer@example.com Buyer's eMail address `buyer_phone`| 0500000001 Buyer's phone number `buyer_social_id`| 000000001 Buyer's social id `buyer_key`| XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX Buyer key for future token payments. This key is returned only if capture_buyer attribute was set in the request (Using Tokens) `installments`| 1 Amount of installments for the sale `sale_paid_date`| 2016-01-01 15:16:15 `sale_release_date`| 2016-01-08 15:15:15 `is_token_sale`| 0 (0 - false, 1 - true) `payme_signature`| 75e99dbcb25cdfbe1c62f0b9376f4144 `sale_invoice_url`| https://www.example.com/XXXXXX.pdf Sale invoice URL, if the seller has enabled the `invoices `|module in his account panel - [Transaction Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/transaction-types): Reference list of transaction type numbers, such as Sale, Token, Authorization/Void and Balance. # Transaction Types Transaction Types | Description ----|---- 1 | Sale 2 | Setup 10 | SubscriptionToken 20 | Token 30 | CustomerDeposit 40 | Authorization, Void 50 | Customer Sale 60 | Balance - [Transaction Statuses](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/transaction-statuses): Reference list of transaction statuses, from `pending` and `validated` to refunds, chargebacks and voids. # Transaction Statuses Transaction Status | Status Description ----|---- 1|pending 2|validated 3 |refunded 4 |partial refund 5 |failed 6 |chargeback 7 |chargeback-refund 8 |voided 9 |partial-void 10|partial-chargeback 11|partial-chargeback-refund - [Subscription Statuses](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/subscription-statuses): Reference list of subscription statuses — initial, active, paused, failed, cancelled, completed, and failed pending automatic retry. # Subscription Statuses ID|Description ---|--- `1`|`Initial` - Not paid yet `2`|`Active` - Paid successfully `3`|`Paused` `4`|`Failed` `5`|`Cancelled` `6`|`Completed` `76`|`Failed` - Pending automatic retry - [Subscription Iteration Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/subscription-iteration-types): Reference list of subscription billing intervals: daily, weekly, monthly and annually. # Subscription Iteration Types ID|Description ---|--- `1`|`Daily` `2`|`Weekly` `3`|`Monthly` `4`|`Annually` - [Bank Authorization Statuses](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/bank-authorization-statuses): Reference list of Israeli direct-debit bank authorization statuses sent in callbacks, such as opened, failed, cancelled by the account owner and reactivated. # Bank Authorization Statuses Status | Description | Notes ---- | ---- | ---- 1 | Bank authorization opened successfully 2 | Bank authorization failed 3 | Bank authorization canceled by the account owner| Meaning the buyer canceled the authorization in the bank app 5 | Authorization moved from previous account | Please notes that the buyer key stays the same 6 | Account changed | Please notes that the buyer key stays the same 13 | Frozen authorization reactivated | Meaning the buyer froze the authorization in the bank app - [Banks in Israel](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/banks-in-israel): Reference list of Israeli bank names and their bank codes, used when entering seller or buyer bank details. # List of Banks Bank | Bank Number ---|--- בנק יהב | 4 בנק הדואר | 9 בנק לאומי | 10 בנק הפועלים | 12 בנק אגוד לישראל | 13 בנק אוצר החייל | 14 בנק מרכנתיל דיסקונט | 17 בנק מזרחי טפחות | 20 HSBC | 23 UBANK | 26 הבין לאומי הראשון | 31 בנק ערבי ישראלי | 34 בנק אוף אינדיה | 39 בנק מסד | 46 בנק פאגי | 52 בנק ירושלים | 54 דקסיה ישראל | 68 בנק לאומי למשכנתאות | 77 משכן בנהפ למשכנתאות | 91 הבין לאומי למשכנתאות | 92 - [File Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/file-types): Reference list of document file-type codes for uploading seller files, such as ID, bank account ownership and incorporation certificate. # File Types Name|Code|Description ---------|----------|---------- Social Id|1|Social ID document (תעודת הזהות). For additional information see Note 3 above Bank Account Ownership|2|Proof of bank account ownership or a cancelled cheque photo (שיק מבוטל או אישור ניהול חשבון בנק). For additional information see Note 3 above Corporate Certificate|3|Incorporation document (תעודת התאגדות של עוסק פטור/עוסק מורשה/חברה בע"מ/עמותה). For additional information see Note 3 above Bank Authorization|4|Bank authorization (הרשאה לחיוב חשבון) Personal Guarantee|5|Personal guarantee (ערבות אוואל). Relevant only if was requested by your Account Manager Promissory Note|6|Promissory note (שטר חוב). Relevant only if was requested by your Account Manager Processing Agreement|7|Processing agreement (הסכם סליקה). Relevant only if was requested by your Account Manager Signature|8|Signature (חתימה). Relevant only if was requested by your Account Manager Stamp|9|Stamp (חותמת). Relevant only if was requested by your Account Manager Additional License |11| Additional license (רשיון נוסף). Relevant only if was requested by your Account Manager Public Representative |12| Public representative document (הצהרת איש ציבור). Relevant only if was requested by your Account Manager Regulatory Authentication |13| Regulatory authentication (נסח חברה או BDI). Relevant only if was requested by your Account Manager Authorized Signer Protocol |14| Authorized signer protocol (פרוטוקול מורשי חתימה). Relevant only if was requested by your Account Manager Business Proof |15| Business proof document (אישור עסק). Relevant only if was requested by your Account Manager Service Receiver |16| Service receiver document (הצהרת מקבל שירות). Relevant only if was requested by your Account Manager Face-To-Face Approval |17| Face-To-Face approval (אישור זיהוי פנים מול פנים). Relevant only if was requested by your Account Manager False Statement Of Information |18| False statement of information (הצהרת מידע כוזב). Relevant only if was requested by your Account Manager Bank Statement |19| Bank Statement of the last 3 months. Processing History |20| Processing History. Tax Return |21| Tax Return. Inventory Proof |22| Inventory Proof. Company Logo |23| Company logo image. Relevant only if was requested by your Account Manager | Driving License | 24 | Driving license (רשיון נהיגה). Relevant if you are onboarding Keep sellers. Social ID Appendix | 25 | Social ID Appendix (ספח תעודת זהות). Relevant if you are onboarding Keep sellers. Passport | 26| Passport (דרכון). Relevant if you are onboarding Keep sellers. Origin Tax Confirmation | 27| Origin Tax Confirmation (אישור ניכוי מס במקור). Relevant if you are onboarding Keep sellers. Bookkeeping Certificate | 28 | Bookkeeping Certificate (אישור ניהול ספרים). Relevant if you are onboarding Keep sellers. Credit Voucher Discount Agreement | 29 | Agreement for credit voucher discount. Professional License | 32 | An image of a proffesional License Ministry Certificate | 33 | An image of a Ministry Certificate. Copyright | 34 | An image of a Copyright Certificate. Lease| 35| An image of Lease Agreement of you business. Social ID Front | 90 | An image of the front of a Social ID Social ID Back | 91 | An image of the back of a Social ID Passport Front | 92| An image of the front side of the passport. (דרכון) Passport Back | 93| An image of the back side of the passport Driving License Front | 94 | An image of the front of a driving License (רשיון נהיגה) Driving License Back | 95 | An image of the back of a driving License PayMe | 100 | Isracard | 101 | Tzameret | 102 | Cal | 103 | ECom | 104 | CardCom | 105 | Summary | 200 | Site Url | 201 | - [Document Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/document-types): Reference list of document type codes you can generate, such as order, invoice, invoice receipt, refund and receipt. # Document Types The documents you can generate are: `doc_type code` | description | document name ---|---|--- `100` | Order | `order` `200` | Delivery | `delcert` `300` | Transaction Invoice | `deal invoice` `305 ` | Invoice | `invoice` `320` | Invoice Receipt | `inverc` `330 ` | Invoice Refund | `refund` `400` |Receipet | `receipt` `405` | Donation Receipt | `trec` `600` | Offer | `offer` - [MCC List](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/mcc-list): Reference list of PayMe merchant category codes (MCC) with Hebrew and English descriptions of each business type. # Israeli MCC List | PayMe MCC Code | Description in Hebrew | Description in English | | -------------- | ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | 10000 | משתלות | Nurseries | | 10001 | משתלות רגילות | Ordinary nurseries | | 10002 | משתלות יצרניות | Manufacturers' nurseries | | 10003 | משתלות מעורבות | Multi-Purpose nurseries | | 10004 | קונדיטוריה | Confectionery | | 10005 | קונדיטוריה-קונדיטוריות לייצור עצמי ומכירה במקום | Confectionery-confectionery for self-production and sale instead | | 10006 | קונדיטוריה-קונדיטוריות לייצור עצמי ומכירה במספר מוקדים | Confectionery-confectionery for self-production and selling in several focal points | | 10007 | קונדיטוריה לייצור עצמי בתוספת בית קפה | Self -production confectionery plus a cafe | | 10008 | קונדיטוריה בייצור סיטונאי | Confectionery in wholesale production | | 10009 | מאפיה | bakery | | 10010 | מאפיות קטנות | Small bakery | | 10011 | מאפיות בינוניות | Medium bakeries | | 10012 | מאפיות גדולות | Large bakery | | 10013 | מאפיות פיתות | Pites bakery | | 10014 | ייצור ופלים ועוגיות | Waffles and Cookies Manufacturing | | 10015 | פאות | Wigs | | 10016 | פאות-חנויות לאוכלוסייה החרדית\דתית | Wigs-shops for the ultra-Orthodox / religious population | | 10017 | פאות-חנויות לכלל האוכלוסיה | Wigs-stores for the general population | | 10018 | מסגריות | Locksmiths | | 10019 | מסגריות מכניות-עיבוד שבבי | Mechanical cargo-chip processing | | 10020 | מוסכים | Garages | | 10021 | אביזרי רכב | car accessories | | 10022 | אביזרי רכב-מוצרי מדף כללים | Automotive accessories-products | | 10023 | אביזרי רכב-מצברים | Car accessories | | 10024 | אביזרי רכב-נורות | Car-Lamp accessories | | 10025 | אביזרי רכב-התקנת מערכות: רדיו דיסק, מולטימדיה | Car Accessories-Systems Installation: Disk Radio, Multimedia | | 10026 | אביזרי רכב: דיבורית B.T | Car Accessories: B.T Handle | | 10027 | אביזרי רכב: חיישני נסיעה לאחור | Automotive Accessories: Rehole | | 10028 | אביזרי רכב: קודן | Car Accessories: Coden | | 10029 | אביזרי רכב: כספת | Car Accessories: Safe | | 10030 | אביזרי רכב: מצלמת דרך | Car Accessories: Camera | | 10031 | מעדניה | deli | | 10032 | ספרים | Books | | 10033 | ספרים-חנויות לספרי קריאה ועיון | Books-stores for reading and reference books | | 10034 | ספרים-חנויות לספרי לימוד בלבד | Books-stores for textbooks only | | 10035 | ספרים-חנויות לספקי קריאה ועיון ולספרי לימוד | Books-stores for reading and seminar and textbooks | | 10036 | הלבשת גברים - חנויות אופנה | Men's Clothing- fashion shops | | 10037 | הלבשת גברים - חנויות הלבשה | Men's Clothing - dressing shops | | 10038 | הלבשת גברים - חנויות בזאר | Men's Clothing - Bazaar shops | | 10039 | הלבשת גברים - יבואנים | Men's Clothing - Importing | | 10040 | הלבשת גברים - בתי אופנה יוקרתיים | Men's Clothin - luxury fashion houses | | 10041 | הלבשת ילדים ונוער- חנויות הלבשה | Dressing Children and Youth- Clothing stores | | 10042 | הלבשת ילדים ונוער - חנויות באזר | Children and Youth Clothing - Baza Stores | | 10043 | הלבשת ילדים ונוער - יבואנים | Children and Youth Clothing - Importing | | 10044 | הלבשת ילדים ונוער - בתי אופנה יוקרתיים | Children and Youth - Luxury Fashion Homes | | 10045 | הלבשת נשים - בתי אופנה יוקרתיים | Women's Clothing- Luxury Fashion Homes | | 10046 | הלבשת נשים - חנויות אופנה | Women's Clothing - Fashion Stores | | 10047 | הלבשת נשים - חנויות הלבשה | Women's Clothing - Clothing stores | | 10048 | הלבשת נשים - חנויות בזאר | Women's Clothing - Bazaar shops | | 10049 | הלבשת נשים - יבואנים | Dressing Women - Importers | | 10050 | חנויות הלבשת נשים עליונה | Supreme Women's Clothing stores | | 10051 | כובעים - חנויות בערי הפריפריה | Hats - shops in peripheral cities | | 10052 | כובעים - חנויות בערים הגדולות והבינוניות וחנויות האופנה | Hats - shops in the big and medium cities and fashion stores | | 10053 | כובעים - פריטים נלווים | Hats - related items | | 10054 | הלבשה תחתונה | Lingerie | | 10055 | גלריות | Galleries | | 10056 | תערוכות | Exhibitions | | 10057 | מסגרות לתמונות | picture frames | | 10058 | עתיקות ותשמישי קדושה | Antiquities and Saint Grace | | 10059 | עתיקות ותשמישי קדושה-חנות עממית | Antiquities and Popular Saint-Store | | 10060 | עתיקות ותשמישי קדושה-חנות עממית המתמחה בשיווק טליתות | Antiquities and Holy Holocaust-Popular Store specializing in Talit Marketing | | 10061 | עתיקות ותשמישי קדושה-חנות יוקרתית | Antiques and prestigious holy-stores | | 10062 | אופטיקה | optics | | 10063 | אופטיקה-עדשות | Optics-lenses | | 10064 | אופטיקה-מסגרות | Optics-frames | | 10065 | אופטיקה-זוג משקפיים (מסגרת+עדשות) | Optics-Corporate Glasses (Frame+Lens) | | 10066 | אופטיקה-עדשות מגע | Optics-Touch Lens | | 10067 | ואופטומטריסט | And optometrist | | 10068 | מצלמות וצרכי צילום | Cameras and photography needs | | 10069 | צלמים | Photographers | | 10070 | צילום-חנויות עם "מעבדה זעירה" לפיתוח סרטי צילום והדפסת תמונות | Store photography with "Tiny Laboratory" for developing photo films and printing photos | | 10071 | צילום-חנויות עם שירותי מעבדה חיצונית לפיתוח סרטי צילום והדפסת תמונות | Photo-store with external laboratory services for developing photo films and printing photos | | 10072 | צילום-שכפול מסמכים וצילומי פספורט | Photo-Duplicate Documents and Passport Photography | | 10073 | חיות | Animals | | 10074 | שירותי פנסיון ואילוף לחיות מחמד | Petal and pet training services | | 10075 | חיות בית-טיפול וסיוע | Home-the-handle and assistance | | 10076 | חיות בית-טיפול וסיוע-חנויות המתמחות במכירת מזון בלבד | Home-handling and assistance-stores specializing in food sale only | | 10077 | חיות בית-טיפול וסיוע-חנויות באזורים יוקרתיים | Home-handling and shop assistance in prestigious areas | | 10078 | חיות בית-טיפול וסיוע-חנויות שכיחות | Home-handed and store assistance is common | | 10079 | מגרשי מכוניות משומשות | Used car fields | | 10080 | סוכני רכב למשומשות | Car agents for used | | 10081 | מסחר בכלי רכב משומשים-יבואנים וסוכנויות למכירת רכב חדש | Used vehicles-imported vehicles and new car sales agencies | | 10082 | מסחר בכלי רכב משומשים-קבלני משנה של היבואנים | Trade in used-to-contract vehicles of importers | | 10083 | מסחר בכלי רכב משומשים-חברות הליסינג התפעולי וההשכרה | Trade in used vehicles-operating leasing companies and rental | | 10084 | מסחר בכלי רכב משומשים-סוחרי רכב פרטיים בעלי מגרש | Trade in used vehicles-traded car dealers with plot | | 10085 | מסחר בכלי רכב משומשים-סוחרי רכב פרטיים ללא מגרש | Trading in used-traded vehicles without a lot | | 10086 | חניוני רכב | Car parking lots | | 10087 | חניונים | Parking lots | | 10088 | פיצריות | Pizzas | | 10089 | מסעדות מזון מהיר | Fast food restaurants | | 10090 | בתי קפה | Coffee shops | | 10091 | בניית אתרי אינטרנט | Building websites | | 10092 | עו"ד | More | | 10093 | אדריכלים | Architects | | 10094 | מעצבי פנים | interior designers | | 10095 | וטרינר | veterinarian | | 10096 | השכרת רכב | Car Rental | | 10097 | סלון לכלות | A bridal salon | | 10098 | גננים-עבודות הקמה של גנים | Gardens-Labor Establishment of Gardens | | 10099 | גננים-עבודת אחזקה של גנים | Gardens-Gardens Maintenance Labor | | 10100 | גני ילדים וצהרונים | Kindergartens and Haruns | | 10101 | בית ספר לנהיגה | Driving school | | 10102 | רופאי שיניים | Dentists | | 10103 | רופאי שיניים אורתודנטיים | Orthodontic dentists | | 10104 | רפואת שיניים | dentistry | | 10105 | בתי אבות | Retirement homes | | 10106 | שירותי סיעוד | Nursing services | | 10107 | לשכות פרטיות להבאה, לתיווך ולטיפול בעובדים זרים בענף הסיעוד | Private bureaus to bring, mediation and handling foreign workers in the nursing industry | | 10108 | מכוני כושר | Gyms | | 10109 | מכבסות וניקוי יבש | Laundry and dry cleaning | | 10110 | מכוני יופי | Beauty Institutes | | 10111 | מספרות | Hairdressers | | 10112 | מספרות גברים | Men's hairdressers | | 10113 | ספא | spa | | 10114 | אביזרי אופנה | fashion accessories | | 10115 | אהילים ונברשות | Lampshades and chandeliers | | 10116 | חנויות כלי בית ומתנות | Housewives and Gifts | | 10117 | חנויות כלי בית ומתנות-חנויות פשוטות | Housewives and simple gifts | | 10118 | חנויות כלי בית ומתנות-חנויות בינוניות | Housewives and Medium Gifts | | 10119 | חנויות כלי בית ומתנות-חנויות יוקרה ורשתות לכלי בית | Housewares and Gifts-Luxury Stores and Networks for Home Tools | | 10120 | מסחר קמעוני במתנות לגבר | Retail trading in men's gifts | | 10121 | אולמי שמחות | A happy hall | | 10122 | אופטומטריסט | Optometrist | | 10123 | אופניים | Bicycle | | 10124 | מכירה ותיקון אופניים | Bicycle Sales and repair | | 10125 | מכירה ותיקון אופניים-חנויות המתמקצעות באופניים חשמליים בלבד | Sales and repair-stores that specialize in electric bicycles only | | 10126 | מכירה ותיקון אופניים-חנויות מעורבות לאופניים חשמליים ורגילים | Sales and repair bicycle-stores mixed to electric and normal bicycles | | 10127 | מכירה ותיקון אופניים-חנויות המתמקדות באופניים רגילים בלבד | Sales and repair-store-focusing on ordinary bicycles only | | 10128 | מסחר קמעוני במוצרי ספורט ובמוצרי מחנאות | Retail trading in sports and camping products | | 10129 | מסחר קמעוני במוצרי ספורט ובמוצרי מחנאות-חנויות יוקרתיות | Retail trade in sports products and in prestigious stores | | 10130 | מסחר קמעוני במוצרי ספורט ובמוצרי מחנאות-חנויות בינוניות | Retail trade in sports products and in medium stores | | 10131 | מסחר קמעוני במוצרי ספורט ובמוצרי מחנאות-חנויות קטנות | Retail trade in sports products and in small stores | | 10132 | טיולים | Tours | | 10133 | אכסניות וכפרי נופש | Hostels and resorts | | 10134 | בתי"ס שדה | SUPS CBS | | 10135 | צימרים, דירות ובתי הארחה | Zimmer, apartments and guest houses | | 10136 | בתי הבראה ומרגוע | Houses of recovery and relaxation | | 10137 | בתי מלון | Hotels | | 10138 | ארנק אלקטרוני | Electronic wallet | | 10139 | נש"מים | UAV | | 10140 | ארנקים ותיקים | Veteran wallets | | 10141 | מזודות | baggage | | 10142 | בדים וטכסטיל | Fabric | | 10143 | מסחר בבדים | Trade in fabrics | | 10144 | מסחר בבדים-בדי ריפוד | Trading in padding fabrics | | 10145 | מסחר בבדים-יבואני בדי אופנה (לביגוד) | Fabric trade-in fashion fabrics (to clothing) | | 10146 | מסחר בבדים-קמעונאים: חנויות בדים | Trade in Fabrics: Fabric Stores | | 10147 | מסחר בבדים-חנויות במרכז הארץ שממקומות במרכז העיר | Trade in shop fabrics in the center of the country that are located in the city center | | 10148 | מסחר בבדים-חנויות במרכז הארץ שממקומות ברחובות צדדיים או בסמיכות לשווקים | Trade in shop fabrics in the center of the country that are located on side streets or close proximity to markets | | 10149 | מסחר בבדים-חנויות בפריפריות (מרוחקות ממרכז הארץ) | Trade in stores in peripherals (distant from the center of the country) | | 10150 | ביטוח לאומי | Social Security | | 10151 | ביטוח מוצרי חשמל | Electrical Insurance | | 10152 | סוכני ביטוח | Insurance Agents | | 10153 | תיכנות | Play | | 10154 | תוכנות מחשבים | Computer software | | 10155 | דגים | Fish | | 10156 | מסחר קמעונאי בדגים-חנויות הממוקמות בשווקים\בערי המרכז ובפריפריה באזורים עם תחרות גדולה | Retail-in-store retail trade located in the markets / cities of the center and periphery in areas with large competition | | 10157 | מסחר קמעונאי בדגים-חנויות בעלות מוניטין הממוקמות ביישוב פריפרי, לרוב חנויות גדולות | Retail trade in reputable fish-stores located in a peripheral settlement, usually large stores | | 10158 | מסחר קמעונאי בדגים-חנויות הממוקמות בערי המרכז וקיימת חנות אחת או שתיים מסוג זה באזור | Retail-in-store retail trading located in the cities of the center and there is one or two stores of this type in the area | | 10159 | מעדני בשר | Meat delicacies | | 10160 | בשר חזיר-גידול החזירים | Pork-growing pigs | | 10161 | בשר חזיר-מסחר סיטוני בגופות חזירים וטבחות בקר (מפורקים) | Sights pork pork in pig bodies and beef (disassembled) | | 10162 | בשר חזיר-ייצור מוצרי בשר: נקניקים, מעושנים, בשרים מוכנים ובשרים מעובדים | Pork-Manufacturing Meat Products: Senannics, Smokers, Ready Meat and Processed Meats | | 10163 | אטליזים | Alas | | 10164 | בתי דפוס | Print houses | | 10165 | פירסום | Advertising | | 10166 | הוצאה לאור ספרים | Publishing Books | | 10166 | הוצאה לאור ספרים | Publishing Books | | 10168 | הוצאה לאור עיתונים | Publishing newspapers | | 10169 | בתי מרקחת | Pharmacies | | 10170 | בתי מרקחת חו"ל | Overseas pharmacies | | 10171 | בתי ספר יסודי ותיכון | Elementary and high school schools | | 10172 | גלידריות | Ice creams | | 10173 | יצרני גלידות | Ice cream manufacturers | | 10174 | גמ"ח הלוואות | Loans | | 10175 | דיסקוטק | discotheque | | 10176 | פאבים | Pubs | | 10177 | דלק לחימום ביתי | Fuel for home heating | | 10178 | התקנת מערכות סולריות | Installation of solar systems | | 10179 | דלק שרות עצמי | Fuel self -service | | 10180 | דרגאסטורים | Dargalstors | | 10181 | חנויות טבע-קבוצה 1-חנויות גדולות | Nature-Group stores 1-stores are large | | 10182 | חנויות טבע-קבוצה 2-חנויות בינוניות | Nature-Group-Group 2-Medium Stores | | 10183 | חנויות טבע-קבוצה 3-חנויות קטנות | Nature-Group stores 3-stores | | 10184 | רשתות פארמה-רשתות גדולות | Large Pharma-Networks | | 10185 | דשנים וכימיקלים | Fertilizers and chemicals | | 10186 | הובלות | Moving | | 10187 | מערבלי בטון | Concrete western | | 10188 | משאבות בטון | Concrete pumps | | 10189 | הובלת מטענים במשאיות | Transporting cargoes in trucks | | 10190 | הסעות | Shuttles | | 10191 | הסעות באוטובוסים | Buses shuttle | | 10192 | הסעות באוטובוסים ציבוריים זעירים | Shuttles on tiny public buses | | 10190 | הסעות | Shuttles | | 10194 | מוניות בקווי שירות-בין עירוני ועירוני | Taxis in Urban and Urban Service lines | | 10190 | הסעות | Shuttles | | 10190 | הסעות | Shuttles | | 10197 | מוניות בשירות מיוחד | Taxis in a special service | | 10198 | שליחיות | Curses | | 10199 | היכרויות ושדוכים | Dating and taps | | 10200 | הלבשה כללית | General dressing | | 10201 | הלוואות פקדונות חסכו | Deposit loans have saved | | 10202 | העברת כספים לכרטיס | Transfer of funds to card | | 10203 | בעלי אירוע | Event owners | | 10204 | הפקות אירועים | Productions | | 10205 | מוצרים לארועים | Products for events | | 10206 | מיזם חתונות-אולמות | Weddings Initiative | | 10207 | הרבלייף | Herbalife | | 10208 | השכרת דירות | apartments rental | | 10209 | השכרת משרדים | Office rental | | 10210 | וידאו אוטומט | Automatic video | | 10211 | וילונות ודקורטיבים | Curtains and decorative | | 10212 | חברות ניהול ואחזקה | Management and maintenance companies | | 10213 | חברות כוח אדם והשמה | Personnel companies and placement | | 10214 | ועדי בתים | And witnesses | | 10215 | עבודות עפר | Earthworks | | 10216 | עבודות עפר- עבודות קטנות היקף ובינוניות | Earthworks- small and medium-sized jobs | | 10217 | עבודות עפר ופיתוח רחבות היקף | Earthworks and wide -ranging development | | 10218 | בנייה ושיפוצים | Construction and renovations | | 10219 | מסחר מעורב בחומרי בניין | Commerce involved in building materials | | 10220 | מסחר מעורב בחומרי בניין-מסחר קמעונאי-חנות | Commerce involved in retail-shop building materials | | 10221 | מסחר מעורב בחומרי בניין-מגרש לחומרי בניין | Commerce involved in building-building materials for building materials | | 10222 | מסחר קמעונאי במוצרי פרזול | Retail trading in forging products | | 10223 | מסחר קמעונאי במוצרי פרזול-חנויות כלליות | Retail trading in General Shopping Products | | 10224 | מסחר קמעונאי במוצרי פרזול-חנויות מקצועיות: מכירה לפרטיים | Retail trade in Professional Professional Store Products: Private Sales | | 10225 | מסחר קמעונאי במוצרי פרזול-חנויות מקצועיות: מכירה לנגרים | Retail trade in Professional Professional Store Products: Sales for Density | | 10226 | מסחרי בצרכי גינון | Commercial in gardening needs | | 10227 | חברות בניה | Construction girlfriends | | 10228 | קבלני גגות | Roofing contractors | | 10229 | קבלני גגות גדולים | Large roof contractors | | 10230 | קבלני גגות קטנים | Small roofs | | 10231 | סוככים ופרגולות | Awnings and pergolas | | 10232 | סוככים ופרגולות-עסקים גדולים | Large awnings and pergolas | | 10233 | סוככים ופרגולות-עסקים קטנים | Small awnings and pergolas | | 10234 | איטום גגות | roof sealing | | 10235 | איטום גגות-2 שכבות זפת+פיברגלס או אינטרלס | Sealing Roofs 2 Tarboxs+Fiberglass or Interlis | | 10236 | איטום גגות-יריעות ביטומנית | Sealing roofs-bituminous sheets | | 10237 | איטום גגות-סיוד גגות | Sealing roof-roofs | | 10238 | קבלני שלד | Skeletal contractors | | 10239 | קבלני שלד-בניין גבוה ונמוך בשיטה הקונבנציונלית | High and low building skeletal contractors in the conventional method | | 10240 | קבלני שלד-בית צמוד קרקע בשיטה הקונבנציונלית | Land-linked skeleton contractors using the conventional method | | 10241 | קבלני משנה לאינסטלציה חשמלית | Subcontractors for electrical plumbing | | 10242 | קבלני משנה לאינסטלציה סניטרית | Subcontractors to Sanitarian plumbing | | 10243 | קבלני משנה לאינסטלציה סניטרית-קבלני אינסטלציה לבתים פרטיים | Subcontractors for Senternity-contractor plumbing for private homes | | 10244 | קבלני משנה לאינסטלציה סניטרית-קבלני אינסטלציה לבנייני מגורים נמוכים עד גבוהים | Subcontractors for Senternity-contractor plumbing plumbing for low to high residential buildings | | 10245 | קבלני משנה לאינסטלציה סניטרית-קבלני אינסטלציה לבנייני מגורים רבי קומות | Subcontractors for Senternity-contractor plumbing plumbing for high-rise residential buildings | | 10246 | מוצרי אינסטלציה | Plumbing products | | 10247 | מסחר בקרמיקה וכלים סניטריים | Ceramic trading and sanitary ware | | 10248 | מסחר בקרמיקה וכלים סניטריים-יבואנים גדולים | Trading in ceramics and a great sanitary-importer | | 10249 | מסחר בקרמיקה וכלים סניטריים-יבואנים קטנים | Trading in ceramics and small sanitary-imported tools | | 10250 | מסחר בקרמיקה וכלים סניטריים-יצרנים מקומיים ליבואנים, לקמעונאים ולקבלנים | Commerce in ceramics and sanitary-manufacturers to local importers, retailers and contractors | | 10251 | מסחר בקרמיקה וכלים סניטריים-יצרנים מקומיים לצרכן הפרטי | Ceramic trading and sanitary-manufacturers to private consumer | | 10252 | חברות עירוניות | Urban companies | | 10253 | קיבוצים | Kibbutzim | | 10254 | חברות תעופה | Airlines | | 10255 | חברת דלק מקשר | A fuel company connects | | 10256 | חברת דלק צי רכב | Delek Company Vehicle fleet | | 10257 | חברת חשמל | IEC | | 10258 | חומרי ניקוי | Cleaners | | 10259 | פרפומריות | Poptimism | | 10260 | חלקי חלוף לרכב | Parts of pass to car | | 10261 | מסחר סיטונאי בחלקי חילוף לרכב | Wholesale trading in car spare parts | | 10262 | מסחר קמעונאי בחלקי חילוף לרכב | Retail trading in car spare parts | | 10260 | חלקי חלוף לרכב | Parts of pass to car | | 10260 | חלקי חלוף לרכב | Parts of pass to car | | 10265 | טבק וצרכי עישון | Tobacco and smoking needs | | 10266 | טובין דיגיטלי | Digital goods | | 10267 | טלפונים סלולריים | cellphones | | 10268 | טפטים | Wallpapers | | 10269 | טרקלין שדה תעופה | Airport lounge | | 10270 | יהלומים/אבנים יקרות | Diamonds/Dear Stones | | 10271 | חריטת אופנים לליטוש יהלומים | Engraving bike to polishing diamonds | | 10272 | החזרי מס | Tax refunds | | 10273 | ייעוץ משכנתאות/החזרי מס | Mortgage counseling/tax refunds | | 10274 | ייעוץ פיננסי | financial advice | | 10275 | דלתות פלדה | Steel doors | | 10276 | כלי בית ומטבח | Houseware and kitchen | | 10277 | מטבחים | Kitchens | | 10278 | קבלני טיח | Plaster contractors | | 10279 | קבלני טיח-קבלן משנה לטיח בנייה רוויה, טיח גבס | Plaster-contractor contractors for saturated construction, plaster plaster | | 10280 | קבלני טיח-קבלן משנה לטיח בבנייה רוויה, טיח שחור | Plaster-contractor contractors for plaster with saturated construction, black plaster | | 10281 | קבלני טיח-קבלן טיח בבנייה פרטית | Plaster-contractor contractors with private construction | | 10282 | מקלחונים | Showers | | 10283 | קרמיקה וכלים סניטרים | Ceramic and sanitary ware | | 10284 | קבלני מצבות | Tombstones | | 10285 | הרכבת שיש במטבחים ואמבטיות | The train has in kitchens and baths | | 10286 | מפעלי הבטון | Concrete factories | | 10287 | ייצור בלוקים | Production of blocks | | 10288 | כלי מיטה | Bedding | | 10289 | מזרונים וחדרי שינה | Mattresses and bedrooms | | 10290 | כלי נגינה | Musical Instruments | | 10291 | בנין צבע | A color building | | 10292 | קבלני משנה לצבע | Subcontractors to color | | 10293 | קבלני משנה לצבע-צביעת פנים הדירה | Subcontractors to the color of the interior of the apartment | | 10294 | קבלני משנה לצבע-צביעת הבניין מבחוץ | Subcontractors to the color of the building from the outside | | 10295 | כלי עבודה | Tools | | 10296 | יבואני רכב | Car importers | | 10297 | כלי רכב | Vehicles | | 10298 | לוטו טוטו | Lotto Toto | | 10299 | ליסינג | Leasing | | 10300 | מוניות | Taxis | | 10301 | תחבורה ציבורית | Public Transport | | 10302 | מועדוני ספורט | Sports Clubs | | 10303 | מחנאות | camping | | 10304 | מועצות ועיריות | Councils and municipalities | | 10305 | מיסי עיריות/רשויות | Municipal taxes/authorities | | 10306 | מוזיאונים | Museums | | 10307 | מרכז אומניות ועבודות יד | Arts and Handmade Center | | 10308 | תאטרון תרבות ופנאי | Culture and leisure theater | | 10309 | מוצרי גומי ופלסטיק | Rubber and plastic products | | 10310 | צמיגים | Tires | | 10311 | מסחר קמעונאי ותיקון צמיגים (פנצ'ריות) | Retail trading and tire repair (punctures) | | 10312 | מסחר קמעונאי ותיקון צמיגים (פנצ'ריות)-מכירת צמיגים חדשים בכלי רכב פרטיים | Retail trade and tire repair (punctures)-Selling new tires in private vehicles | | 10313 | מסחר קמעונאי ותיקון צמיגים (פנצ'ריות)-מכירת צמיגים חדשים ברכבי משא | Retail trade and tire repair (punctures)-Selling new tires in freight vehicles | | 10314 | מסחר קמעונאי ותיקון צמיגים (פנצ'ריות)-מכירת צמיגים משומשים | Retail trade and tire repair (punctures)-Selling used tires | | 10315 | מסחר קמעונאי ותיקון צמיגים (פנצ'ריות)-תיקון תקרים | Retail trading and tire repair (punctures)-repairing ceilings | | 10310 | צמיגים | Tires | | 10317 | חברות גז | Gas companies | | 10318 | מוצרי גז | Gas products | | 10319 | אביזרי חשמל | Electrical accessories | | 10320 | מוצרי חשמל גדולים | Large electrical products | | 10321 | מוצרי חשמל גדולים-מזגנים | Large-air-conditioned electrical products | | 10321 | מוצרי חשמל גדולים-מזגנים | Large-air-conditioned electrical products | | 10323 | מזגנים-קטנים עד 1.5 כ"ס | Air conditioners up to 1.5 kW | | 10324 | מזגנים-בינוניים 2.5-3.5 כ"ס | Medium-medium-to-mediums 2.5-3.5 kW | | 10325 | מגזנים-גדולים 4 כ"ס ומעלה ומיני מרכזיים | Magazines-large 4 kW and centers and mini | | 10326 | דודי שמש ואנרגיה סולארית | Solar boilers and solar energy | | 10326 | דודי שמש ואנרגיה סולארית | Solar boilers and solar energy | | 10328 | חשמל ואלקטרוניקה | electricity and electronics | | 10329 | רדיו ומערכות למכוניות | Radio and systems for cars | | 10330 | מוסכים לחשמלאות רכב | Garages for car pumps | | 10331 | מכוני רחיצה למכוניות | Watchs for cars | | 10332 | תיקון והתקנת מוצרי חשמל | Repair and installation of electrical appliances | | 10333 | פירסום ודפוס | Advertising and pattern | | 10334 | מוצרי תוכן דיגיטלי | Digital content products | | 10335 | בתי טבע | Natural homes | | 10336 | מוצ.דיאטה | Moada diet | | 10337 | מזכרות מתנות חפצי חן | Souvenirs of grace gifts | | 10338 | אטרקציות | attractions | | 10339 | ברכות שחיה/קאנטרי קלאב | Congratulations/Country Club | | 10340 | מאמני כושר | Fitness trainers | | 10341 | ספורט ומחנאות | Sports and flattens | | 10342 | מחשבים | Computers | | 10343 | חנויות סלולר | Cellular shops | | 10344 | מטהרי מים-מכירת ציוד | Water Pure-Sale Equipment | | 10345 | מטהרי מים-שירות | Service-water purifiers | | 10346 | מכלת ומינימרקט | Intelligence and Minimarket | | 10347 | מיסטיקה | Mysticism | | 10348 | מתפרות | Sewn | | 10349 | בית חולים פרטי/מרכז שיקום/מכון רפואי | Private Hospital/Rehabilitation Center/Medical Institute | | 10350 | מכונות כתיבה/תפירה | Writing/sewing machines | | 10351 | מכונות לתעשיה חקלאות | Agricultural Industries Machines | | 10352 | חוגים וקורסים | Classes and courses | | 10353 | מכוני לימוד והדרכה | Learning and Training Institutes | | 10354 | מכללות ואוניברסיטאות | Colleges and universities | | 10355 | מכוני קוסמטיקה | Cosmetics institutes | | 10356 | יבואני אופנועים | Motorcycles importers | | 10357 | סוכנות אופנועים | Motorcycle agency | | 10358 | מוסכי קטנועים ואופנועים | Scooters and motorcycles garages | | 10359 | תיווך נדל"ן | Real Estate | | 10360 | מכירת כלי רכב | Selling vehicles | | 10360 | מכירת כלי רכב | Selling vehicles | | 10362 | מכירת מכשירי גז | Selling Gas Devices | | 10363 | מכשירי בריאות | Health devices | | 10364 | בית חב"ד | Chabad House | | 10365 | בית כנסת | Synagogue | | 10366 | סופרי סת"ם | Catholic writers | | 10367 | עמותה לרווחת חיילים | Association for the Welfare of Soldiers | | 10368 | עמותות בריאות | Health associations | | 10369 | עמותות לקהילה | Community associations | | 10370 | עמותות מחקר | Research associations | | 10371 | מנויי לוטו טוטו | Lotto Toto subscribers | | 10372 | אלומיניום מסגריות | Aluminum Fragments | | 10373 | חדר עסקאות - פורקסים | Transaction Room - Forxies | | 10374 | מסחר במט"ח | Forex Trading | | 10375 | מסעדות | Restaurants | | 10376 | מסעדות פועלים | Restaurant Works | | 10377 | מסעדות סיניות | Chinese restaurants | | 10378 | מסעדות מזרחיות | Eastern restaurants | | 10379 | מסעדות דגים | Fish restaurants | | 10380 | מסעדות איטלקיות | Italian restaurants | | 10015 | פאות | Wigs | | 10382 | טכנאות שיניים | Tooth techniques | | 10383 | מעבדת שניים | Two lab | | 10384 | מערכות אזעקה | Alarm systems | | 10385 | מערכות בטחון | Security systems | | 10386 | מפעל הפיס - זכיינים | Lottery - franchisees | | 10387 | מפעל הפיס | Lottery | | 10388 | משחקים און ליין | Games online | | 10389 | יקב | winery | | 10390 | משקאות חריפים וקלים | Acute and soft drinks | | 10391 | משרד התחבורה-רישוי | The Ministry of Transport-Licensing | | 10392 | משרדי ממשלה | Government Offices | | 10393 | משרדי פרסום | Advertising agencies | | 10394 | הדברת מזיקים | Pest control | | 10395 | מתן אשרות שהיה | Giving visas that was | | 10396 | מרכז קהילתי | community Center | | 10397 | מתנס | community Center | | 10398 | נגריות/רפדיות | Carpentry/paddies | | 10399 | בדי רפוד | Rapped Fabrics | | 10400 | מסחר בחומרי נגרות | Trading in carpentry materials | | 10401 | מסחר בחומרי נגרות-מכירות מסיביות-הפצה | Trading in massive carpentry materials-distributing | | 10402 | מסחר בחומרי נגרות-מכירה סיטונאית | Trading in carpentry-wholesale materials | | 10403 | מסחר בחומרי נגרות-מכירה קמעונאית ("לפרטיים") | Trade in retail carpentry materials (“to private”) | | 10404 | מסחר בחומרי נגרות-מכירות חומרי עץ מעובדים | Trade in carpentry materials-wooden materials processed | | 10405 | מסחר בחומרי נגרות-מכירת פרזולים וחומרים שונים | Trading in carpentry-selling materials and various materials | | 10406 | נותני שרותי מטבע (חלפני כספים) | Currency service providers (Financial Almighty) | | 10407 | הנעלה | footwear | | 10408 | הנעלה-חנויות סוג 1 | Type-Type 1 store | | 10409 | הנעלה-חנויות סוג 2 | Type 2 stores | | 10410 | הנעלה-חנויות סוג 3 | The trace-store type 3 | | 10411 | הנעלה-חנויות סוג 4 | The Type 4 stores | | 10412 | נשק ותחמושת | Weapons and ammunition | | 10412 | נשק ותחמושת | Weapons and ammunition | | 10414 | סדקית ומוצרי תפירה | Crack and sewing products | | 10415 | סוכני דלק | Fuel agents | | 10416 | מסחר בדלק | Fuel commerce | | 10417 | מסחר בדלק-תחנות של חברות הדלק היצרניות: בנזין 95 | Fuel trading of the manufacturer's fuel companies: gasoline 95 | | 10418 | מסחר בדלק-תחנות של חברות הדלק היצרניות: סולר לתחבורה | Fuel trading of the manufacturer's fuel companies: Due to Transportation | | 10419 | מסחר בדלק-תחנות של חברות הדלק היצרניות: סולר להסקה | Fuel trading of the manufacturer's fuel companies: diesel fuel | | 10420 | מסחר בדלק-תחנות של חברות הדלק היצרניות: נפט | Fuel trading of the manufacturer's fuel companies: oil | | 10421 | מסחר בדלק-תחנות מוזלות של חברות הדלק היצרניות: בנזין 95 מוזל | Fuel Trade-Discounted Fuel Companies Station | | 10422 | מסחר בדלק-תחנות מוזלות של חברות הדלק היצרניות: סולר לתחבורה מוזל | Discounted Fuel Fuel Commerce of Manufacturer Fuel Companies: Dyer For Disposable Transportation | | 10423 | מסחר בדלק-מכירה סיטונאית של בנזין 95 | Fuel trading-wholesale of petrol 95 | | 10424 | מסחר בדלק-מכירה סיטונאית של סולר לתחבורה | Fuel trading-wholesale of diesel fuel for transportation | | 10425 | מסחר בדלק-סוכנים ומפיצים קמעונאים של בנזין 95 | Fuel-agent trading and retail distributors of gasoline 95 | | 10426 | מסחר בדלק-סוכנים ומפיצים קמעונאים של סולר לתחבורה בתחנה | Fuel-agent trading and retail distributors of transport to transportation at the station | | 10427 | מסחר בדלק-סוכנים ומפיצים קמעונאים של סולר לתחבורה והסקה במיכליות | Fuel-agent trading and retail distributors of diesel and heating in tankers | | 10428 | סופרמרקטים | Supermarkets | | 10429 | סטקיות ומזנונים | Steaks and buffets | | 10430 | דוכני פלאפל | Falafel booths | | 10431 | פיצוחים | Nuts | | 10432 | סיטונאי - מוצרים לא עמידים | Wholesale - non -resistant products | | 10433 | מסחר סיטוני בפירות ובירקות | Wholesale trading in fruits and vegetables | | 10432 | סיטונאי - מוצרים לא עמידים | Wholesale - non -resistant products | | 10435 | סיטונאי - מוצרים לא עמידים: משחטות-מסחר בעופות והודים | Wholesale - non -durable products: poultry trading and Indian trading | | 10436 | סוחרי בקר וצאן | Beef and flock traders | | 10437 | סיטונאי-מוצרים עמידים | Wholesale-products resistant | | 10437 | סיטונאי-מוצרים עמידים | Wholesale-products resistant | | 10143 | מסחר בבדים | Trade in fabrics | | 10437 | סיטונאי-מוצרים עמידים | Wholesale-products resistant | | 10441 | בתי קולנוע | Theaters | | 10442 | סניטציה | Sanitation | | 10443 | ספק תוכן אינטרנט | Internet content provider | | 10444 | ספריות וידיאו | Video libraries | | 10445 | דיסקים | Discs | | 10446 | דמי חברות מועדון | Club Companion Fee | | 10447 | עמותות ואגודות | Associations and associations | | 10448 | עמותות חינוך | Education associations | | 10449 | מפלגות, בחירות | Parties, elections | | 10369 | עמותות לקהילה | Community associations | | 10451 | עמותות דת | Religious associations | | 10452 | עמותות מוסלמיות | Muslim associations | | 10453 | עמותות נוצריות | Christian associations | | 10454 | עמותות תרומות | Donations of donations | | 10455 | פירות וירקות | Fruits and Vegetables | | 10456 | מסחר קמעונאי בפירות וירקות | Retail trading in fruits and vegetables | | 10457 | מסחר קמעונאי בפירות וירקות-חנויות שכונתיות עממיות | Retail trade in fruits and vegetables-mummous neighborhood stores | | 10458 | מסחר קמעונאי בפירות וירקות-חנויות שכונתיות יוקרתיות | Retail trading in prestigious neighborhoods and vegetables | | 10459 | מסחר קמעונאי בפירות וירקות-חנויות ברחובות ראשיים בערים | Retail trading in fruits and vegetables on main streets in cities | | 10460 | בגדי עור | Leather clothes | | 10461 | מסחר קמעוני בתיקים ומזוודות-חנויות סוג 1 | Retail trading in bags and luggage-type 1 | | 10462 | מסחר קמעוני בתיקים ומזוודות-חנויות סוג 2 | Retail trading in bags and luggage-type 2 | | 10463 | מסחר קמעוני בתיקים ומזוודות-חנויות סוג 3 | Retail trading in bags and luggage-store type 3 | | 10464 | פרוות | Fur | | 10465 | פרחים ועציצים | Flowers and flower pots | | 10466 | מסחר קמעונאי בפרחים | Retail trading in flowers | | 10467 | ציוד לתינוק | Baby equipment | | 10468 | מכש.כתיבה | P.S. Writing | | 10469 | מסחר קמעוני במכשירי כתיבה | Retail trading on writing devices | | 10470 | מסחר קמעוני במכשירי כתיבה-חנויות מכשירי כתיבה וציוד משרדי שעיקר מכירותיהן לחברות ומוסדרות | Retail trading on writing devices-writing devices and office equipment whose main sales for companies and regulations | | 10471 | מסחר קמעוני במכשירי כתיבה-חנויות למכשירי כתיבה וציוד משרדי שעיקר מכירותיהן ללקוחות פרטיים | Retail trading on writing-stores for writing devices and office equipment whose main sales are private customers | | 10472 | מסחר קמעוני במכשירי כתיבה-חנויות למכשירי כתיבה (כולל מכשירי כתיבה בחנויות מעורבות) | Retail Trade on Writing Store Writing devices (including writing appliances in mixed stores) | | 10473 | ציוד משרדי | Office Supplies | | 10474 | מיכשור רפואי | Medical devices | | 10475 | צמר וסריגה | Wool and knitting | | 10476 | ציוד לגנים | Garden equipment | | 10477 | צעצועים | Toys | | 10478 | מסחר בצעצועים ומשחקים | Trade in toys and games | | 10479 | מסחר בצעצועים ומשחקים-חנויות ברמה א' | Trade in toys and Games-stores at level 1 | | 10480 | מסחר בצעצועים ומשחקים-חנויות ברמה ב' | Trade in toys and Games-Stores B | | 10481 | מסחר בצעצועים ומשחקים-חנויות ברמה ג' | Trade in toys and Games-Games Level C. | | 10482 | חנויות נוחות ופיצוציות | Convenient and explosive shops | | 10483 | קייטנה | Summer Camp | | 10484 | קייטרינג | Catering | | 10485 | קפה ותבלינים | Coffee and spices | | 10486 | מסחר קמעונאי בתבלינים, קטניות, פיצוחים ופירות יבשים | Retail trading in spices, legumes, crackers and dried fruits | | 10487 | מסחר קמעונאי בתבלינים, קטניות, פיצוחים ופירות יבשים-קניון | Retail trading in spices, legumes, crackers and dried fruits-malls | | 10488 | מסחר קמעונאי בתבלינים, קטניות, פיצוחים ופירות יבשים-רחוב ראשי | Retail trading in spices, legumes, crackers and dried fruits-main street | | 10489 | מסחר קמעונאי בתבלינים, קטניות, פיצוחים ופירות יבשים-שוק | Retail trade in spices, legumes, crackers and dried fruits-market | | 10490 | רהיטים | furniture | | 10491 | רהיטים-חנויות המוכרות מוצרים פשוטים | Furniture-stores selling simple products | | 10492 | רהיטים-חנויות המוכרות מוצרים ברמה בינונית | Furniture-stores familiar with medium-level products | | 10493 | רהיטים-חנויות המוכרות מוצרים ברמה גבוהה | Furniture-stores selling high-level products | | 10494 | רהיטים-חנויות יוקרתיות (מחיר לפריט) | Luxury store furniture (item for item) | | 10495 | חנויות ריהוט וציוד לתינוקות | Furniture and baby equipment | | 10496 | חנויות ריהוט וציוד לתינוקות-חנויות קטנות עממיות | Furniture stores and equipment for small popular stores | | 10497 | חנויות ריהוט וציוד לתינוקות-חנויות בינוניות | Furniture and Baby Equipment-Medium Stores | | 10498 | חנויות ריהוט וציוד לתינוקות-חנויות גדולות | Furniture and Big Baby-store equipment | | 10499 | חנויות ריהוט וציוד לתינוקות-חנויות רשת | Furniture stores and baby-store equipment | | 10500 | ייבוא רהיטים | Import furniture | | 10501 | ייבוא מטבחים | Import kitchens | | 10502 | ייבוא מטבחים-מטבחים פשוטים | Import Kitchens-Simple kitchens | | 10503 | ייבוא מטבחים-מטבחי יוקרה | Import kitchens-kitchens luxury | | 10504 | רהיטים-ייצור רהיטים מעץ מלא | Furniture-Manufacture of solid wood furniture | | 10505 | נגרות פלטות | Passover carpentry | | 10506 | מהנדסים | engineers | | 10507 | רו"ח | Breeze | | 10508 | רכישת ניירות ערך | Purchase securities | | 10509 | טיפולי בריאות לגוף | Health treatments to the body | | 10510 | רפואה אלטרנטיבית | Alternative Medicine | | 10511 | רשות השידור | IBA | | 10512 | רשתות מזון ארציות | Nursing food chains | | 10513 | תעשיית מזון קפוא מוכן | Frozen food industry ready | | 10514 | פרקטים | Parquets | | 10515 | קבלני ריצוף | Flooring contractors | | 10516 | שטיחים | Rugs | | 10516 | שטיחים | Rugs | | 10518 | שיווק ישיר | direct marketing | | 10519 | שירותי ייעוץ | consulting services | | 10520 | שירותי מלאכה לבית | Home Craft Services | | 10521 | שירותי רכב | Automotive Services | | 10522 | מוסכי פחחות וצביעת רכב | Bins and Car Determination | | 10523 | מוסכי פחחות וצביעת רכב-מוסך מורשה או מומחה | Tinted garages and a licensed vehicle-garage or expert | | 10524 | מוסכי פחחות וצביעת רכב-מוסך כללי | Tin Garages and General Vehicle Determination | | 10521 | שירותי רכב | Automotive Services | | 10526 | מינהל ציבורי כללי | General public administration | | 10527 | פיקוח על מתן שירותי בריאות, חינוך, תרבות ושירותים חברתיים אחרים, פרט ל | Supervision for providing health, education, culture and other social services, except | | 10528 | מינהל ציבורי לנמ"א | Public Administration for the NMA | | 10529 | ניהול ענייני החוץ | Foreign Affairs Management | | 10530 | פעילויות צבא והגנה | Army and Protection Activities | | 10531 | שמירה על הסדר הציבורי ועל ביטחון הציבור | Maintaining public order and public security | | 10532 | שירותים ממשלתיים | Government Services | | 10533 | שלטים | Signs | | 10534 | שמאים | Appraisers | | 10535 | שמאי ביטוח | Insurance Appraiser | | 10536 | בתי חולים ממשלתים | Government Hospitals | | 10537 | פסיכולוגים | Psychologists | | 10538 | רופאים | Doctors | | 10539 | שרותי אמבולנס | Ambulance services | | 10540 | מכשירי כתיבה וציוד משרדי | Writing and Office Equipment | | 10541 | תחנות דלק | gas stations | | 10542 | תיווך | Mediation | | 10543 | תיירות למרפא | Tourism to Medicine | | 10544 | תכשיטים ושעונים | Jewelry and watches | | 10545 | תכשיטים ושעונים-חנויות יוקרתיות מאוד | Very prestigious jewelry and watches | | 10546 | תכשיטים ושעונים-חנויות יוקרתיות | Luxury jewelry and watches | | 10547 | תכשיטים ושעונים-חנויות איכות טובה | Jewelry and watches-good quality stores | | 10548 | תכשיטים ושעונים-חנויות בינוניות | Jewelry jewelry and watches | | 10549 | תכשיטים ושעונים-חנויות קטנות | Jewelry jewelry and watches | | 10544 | תכשיטים ושעונים | Jewelry and watches | | 10551 | יוצקים בענף התכשיטים | Pour in the jewelry industry | | 10552 | תמרוקיות | Cosmetics | | 10553 | נופש ותיור | Vacation and tour | | 10554 | סוכני נסיעות | Travel Agents | | 10555 | כנסים | Conferences | | 10056 | תערוכות | Exhibitions | | 10557 | תקליטים | Records | | 10558 | ציוד טלפוני | Telephone equipment | | 10559 | תקשורת | communication | | 10560 | טלויזיה בכבלים | Cable TV | | 10561 | עיתונות | journalism | | 10562 | תרומות | Donations | | 10563 | אלומניום | Aluminum | | 10564 | אלומניום-ייצור והתקנה | Aluminum-production and installation | | 10565 | תריסים | Shutters | - [Individual Seller Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/individual-seller-types): Reference list of role codes for individuals linked to a seller: owner, signatory, director, executive and back office. # Individual Seller Types Code | Role ---|--- 1| Owner 2| Signatory 4| Director 8| Executive 16| Back Office - [Seller Incorporation Types (IL)](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/seller-incorporation-types-il): Reference list of Israeli business incorporation type codes, such as sole proprietorship, company, partnership and non-profit. # Seller Incorporation Type (IL) Code | Type in Hebrew | Type in English ---|---| --- 1| פרטי|Individual 2|עוסק מורשה |Sole Proprietorship 3|חברה בע"מ |Incorporated Company 4| שותפות|Partnership 5| עוסק פטור|Exempt Company 6| עמותה|Charity (Non Profit) 7|שותפות מוגבלת |Limited Partnership 8| חברה ציבורית|Publicly Traded Company 9| אגודה שיתופית|Shared Cooperative 10|חברה לתועלת הציבור (חל"צ) |Public Benefit Company 295|ועד בית| House Committee 296|עיריות ומועצות|Municipalities and councils - [VAS Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/vas-types): Reference list of value-added service (VAS) type codes, such as invoices, SMS, antifraud, marketplace and POS. # VAS Types | VAS Type | Description | |---------|------------------------| | 1 | Integration | | 2 | Payments | | 3 | Discount | | 4 | Merchandise | | 5 | Invoice | | 6 | Sms | | 7 | CreditMatch | | 8 | Antifraud | | 9 | Insurance | | 10 | Delivery | | 11 | Marketplace | | 12 | Development | | 13 | CreationPlans | | 14 | VaultsExternal | | 15 | AlternativePaymentMethod| | 16 | Loan | | 17 | MIDs | | 18 | MIDSwitcher | | 19 | ReleaseDate | | 20 | Settlements | | 21 | Email | | 22 | Catalog | | 23 | Customers | | 24 | MerchantRules | | 25 | InvoicingService | | 26 | KeepAdditionalService | | 27 | Pos | | vc_type | vc_type | ## Payments - [Start Here](https://docs-staging.payme.io/payments/getting-started/start-here): Reading order for developers and AI coding agents integrating the PayMe Payments API: 1) PayMe at a glance, 2) Authentication (seller_payme_id/MPL, payme_client_key, public key), 3) Environments (sandbox.payme.io vs live.payme.io), 4) Quickstart (generate-sale, pay, callback, refund-sale), 5) Callbacks (form-encoded POST, notify_type, payme_signature). Then Errors and Idempotency & Retries. # Start Here Read these five pages, in this order, before you write integration code. | # | Page | What you learn | |---|------|----------------| | 1 | [PayMe at a glance](https://docs-staging.payme.io/payments/getting-started/payme-at-a-glance) | Products, payment methods, currencies, environments, compliance and support contact — in one page. | | 2 | [Authentication](https://docs-staging.payme.io/payments/getting-started/authentication) | Which credential goes where: `seller_payme_id` (MPL), `payme_client_key`, the public key, and the OAuth/JWT tokens used by the Keep and Products & Customers APIs. | | 3 | [Environments](https://docs-staging.payme.io/payments/getting-started/environments) | Sandbox vs production base URLs, test cards, and the hosts you will see in `sale_url`. | | 4 | [Quickstart](https://docs-staging.payme.io/payments/getting-started/quickstart) | One complete sale in the sandbox with `curl`: create a sale, pay it, receive the callback, refund it. | | 5 | [Callbacks](https://docs-staging.payme.io/payments/getting-started/callbacks) | How PayMe notifies your server, what the payload contains, and how to handle it. | After those, read [Errors](https://docs-staging.payme.io/payments/getting-started/errors) and [Idempotency and retries](https://docs-staging.payme.io/payments/getting-started/idempotency-and-retries) before going live. ## Three facts that trip up most integrations 1. **Amounts are in minor units.** A price of 50.75 is sent as `5075`, and the minimum `sale_price` is `500`. 2. **Callbacks are not JSON.** PayMe sends a `POST` with `x-www-form-urlencoded` body to your callback URL, even though your requests to PayMe are JSON. 3. **Error messages default to Hebrew.** Send `"language": "en"` to get English error messages. > ⚠ TO CONFIRM: How does a developer get sandbox credentials (seller_payme_id/MPL, payme_client_key, public key) — self-service sign-up, an account manager, or an email to support? [Q5] - [PayMe at a Glance](https://docs-staging.payme.io/payments/getting-started/payme-at-a-glance): PayMe is a payments provider whose Payments API lets platforms and merchants accept payments through a hosted payment page, hosted fields (JSAPI) or a direct API, with tokenization, subscriptions, refunds, authorization and capture, 3D Secure, invoices and point-of-sale. Other APIs: B2B Payments, Keep (accounting) and Products & Customers. Payment methods include cards, Bit, Apple Pay, Google Pay, PayPal, bank transfer, SEPA, BACS and Israeli direct debit. Sandbox: sandbox.payme.io/api; production: live.payme.io/api. # PayMe at a Glance This page lists only what the PayMe documentation states. Gaps are marked **TO CONFIRM**. ## What PayMe offers PayMe's Payments API is "designed to allow platforms to offer a full payment solution as part of their product." With it you can: - create and manage merchants on your platform; - accept credit-card payments and other payment methods; - create recurring payments (subscriptions); - use hosted (secured) payment pages; - tokenize cards for delayed and future payments; - charge a platform (market) fee on each transaction; - query sellers, transactions, subscriptions and withdrawals. ### APIs in this documentation | API | What it covers | |-----|----------------| | [Payments](https://docs-staging.payme.io/payments/introduction/getting-started) | Sales (hosted payment page, hosted fields, direct API), Apple Pay, Google Pay, Israeli direct debit, tokenization, subscriptions, refunds / capture / void, 3D Secure (including a standalone 3D Secure service), invoices, point-of-sale devices, merchant management for partners, and query APIs. | | [B2B Payments](https://docs-staging.payme.io/b2b-payments/contracts/post-user) | Payment contracts (send a payment or a payment request between businesses) and transfers between wallets. | | [Keep](https://docs-staging.payme.io/keep/partner-authorization/prerequisites) | APIs for PayMe's accounting product: sellers, income documents (invoices, receipts), expenses, tax and VAT. | | [Products and Customers](https://docs-staging.payme.io/products-and-customers/authentication/post-auth-token) | Create, list, update and delete products and customers. | Mobile: an iOS SDK is available. ## Integration options | Option | In one line | |--------|-------------| | Hosted Payment Page | The buyer pays on PayMe's secure page (`sale_url`, shown as an IFRAME or redirect); PayMe carries the PCI DSS burden. | | Hosted Fields (JSAPI) | Payment fields embedded in your page with PayMe's JavaScript library. | | Direct API | Your server sends card details to PayMe; you must meet PCI DSS level 1 yourself. | ## Payment methods The `sale_payment_method` values documented are: `credit-card`, `bank-transfer`, `paypal`, `alipay-qr`, `alipay-online`, `funds-transfer`, `cash`, `cheque`, `echeck`, `bit`, `bacs`, `sepa`, `apple-pay`, `il-direct-debit`, `verifone-prepaid`, `google-pay`. Use `multi` to let the buyer choose on one checkout page. Card networks named in the docs: Visa, Mastercard, American Express, Diners, Discover, JCB and Isracard (test cards). Google Pay supports Visa, Mastercard, American Express, Discover and JCB. Installments: 1–12 fixed, or let the buyer choose up to 3, 6, 9 or 12 (`103`, `106`, `109`, `112`). ## Currencies Sale currency is a 3-letter ISO 4217 code. Supported currencies, subject to your account configuration: ILS, USD, EUR, GBP, TRY, CHF, SEK, NOK, CAD, ZAR, JPY, AUD, AED, ARS, BHD, BRL, CNY, INR, KRW, KWD, KZT, MXN, NGN, PLN, RON, RUB, SAR, UAH, PHP, VND, HKD. - Each account has its own allowed set; any other currency returns error `252`. - ILS only: Israeli direct debit, Bit, and any sale with more than one installment. - Sandbox test cards accept ILS, USD and EUR (the local Israeli test card accepts ILS only). - Keep income documents: "currently only ILS supported". ## Countries The documentation is Israel-centred: Israeli bank codes, Israeli business incorporation types, Israeli social ID fields, and Israeli direct debit. Test data also exists for SEPA and BACS accounts. The payment page collects a ZIP code for cards issued in the USA, Canada and the United Kingdom. > ⚠ TO CONFIRM: In which countries can merchants be onboarded, and from which countries can buyers pay? [Q45] ## Amounts and limits - Amounts are in minor units (50.75 → `5075`). - Default `sale_price` range: `500`–`4000000` minor units, the same in every currency and payment method (so `500` is 5.00 ILS or USD but 500 JPY). PayMe can set different limits per account; out of range returns error `352`. Token sales use a fixed price of `100`. - An authorization (J5) reserves funds for up to 168 hours; capture is allowed once. - Rate limit: `generate-sale`, `pay-sale` and `capture-sale` share a per-seller limit, by default 100 requests per 10 seconds (may differ per account); over the limit returns HTTP 429. See [Idempotency and retries](https://docs-staging.payme.io/payments/getting-started/idempotency-and-retries). > ⚠ TO CONFIRM: Is 100 requests per 10 seconds per seller also the default in **production**? [Q28] ## Environments | Environment | Base URL | |-------------|----------| | Sandbox | `https://sandbox.payme.io/api/` | | Production | `https://live.payme.io/api/` | Details: [Environments](https://docs-staging.payme.io/payments/getting-started/environments). ## Compliance - With the Hosted Payment Page, responsibility for PCI DSS lies with PayMe. - With the Direct API, the merchant must meet PCI DSS level 1. - Tokenization reduces the scope of PCI DSS requirements for recurring payments. - 3D Secure is supported, including as a standalone service. > ⚠ TO CONFIRM: What is PayMe's own PCI DSS certification level, and which licence or regulator applies to PayMe? [Q46] ## Contact - General contact form: - Support email (given for adding Google Pay card networks): `support@payme.io` - Keep API keys come from your Account Manager. > ⚠ TO CONFIRM: What is the official developer-support channel (email, form, hours), and is `support@payme.io` the right address for integration questions? [Q47] ## Machine-readable docs Every page is available as Markdown by appending `.md` to its URL; each API project publishes an OpenAPI file at `//openapi.json`; the site index for AI agents is `/llms.txt`. - [Authentication](https://docs-staging.payme.io/payments/getting-started/authentication): Payments API requests carry credentials in the JSON body, not an Authorization header. seller_payme_id (the MPL) identifies and authenticates the seller on its own, so keep it server-side. payme_client_key is the partner (platform) key held only by partners; merchants can call refund-sale without it. The per-seller public key (PayMe-Public-Key) is for browser code. Sandbox and production keys are separate. Keep uses OAuth2 client credentials; Products & Customers uses a JWT from POST /auth/token. # Authentication The Payments API does **not** use an `Authorization` header. You identify yourself with keys inside the JSON request body (and, on some endpoints, in custom headers). Always send `Content-Type: application/json`. ## The credentials at a glance | Credential | Who has it | What it does | Where it goes | Keep it | |------------|-----------|--------------|---------------|---------| | `seller_payme_id` (the **MPL**) | Every seller (merchant) | Identifies the seller **and, on its own, authenticates** most seller-level calls: creating sales, refunding, querying sales, updating the seller. | JSON body field `seller_payme_id`, or header `PayMe-Merchant-Key` | **Secret** — server-side only | | `payme_client_key` | **Partners** (platforms and marketplaces) only | The partner key. Needed for partner-level calls such as creating sellers and querying across sellers. | JSON body field `payme_client_key`, or header `PayMe-Partner-Key` | **Secret** — server-side only | | Public key | Every seller; one per seller per environment | Designed for browser code: tokenizing cards (Hosted Fields), Apple Pay and Google Pay flows, and reading a filtered list of the seller's transactions. | Header `PayMe-Public-Key`; first argument of `PayMe.create(apiKey, …)` | May be exposed in the browser — but note it can read transactions | Example MPL format: `MPLDEMO-MPLDEMO-MPLDEMO-1234567`. **`seller_payme_secret` is not a credential.** `create-seller` returns it, but it is a random value that PayMe never stores or checks. Ignore it. ## Merchants and partners - **A merchant** (a single seller) authenticates with `seller_payme_id`. It can call `refund-sale` with `seller_payme_id` alone — PayMe finds the partner from the seller. - **A partner** (a platform managing many sellers) also holds `payme_client_key`, sent in the body or the `PayMe-Partner-Key` header. If a partner sends both keys, the seller must belong to that partner; otherwise the request fails with error `20` ("Merchant-Seller inconsistency"). Partner-only endpoints documented with `payme_client_key` include `create-seller`, `update-seller`, `upload-seller-files`, `withdraw-balance`, `get-vas-seller`, `vas-enable`, `vas-disable`, POS `authenticate` and `pair`, and the query APIs `get-sellers`, `get-subscriptions`, `get-withdrawals` and `funds-transfer`. Error codes you may see while setting up keys: `1` — no key sent at all; `200` — the `payme_client_key` matches no partner; `201` — the partner is inactive; `251` — the `seller_payme_id` matches no seller; `163` — the seller is inactive. ### Header-based endpoints | Header | Carries | Used on (examples) | |--------|---------|--------------------| | `PayMe-Merchant-Key` | The seller's MPL | `GET /buyers/{buyer_guid}`, `GET /documents`, 3D Secure hash resolution, `PATCH /subscriptions/{sub_payme_id}/resume`, B2B `payment-contracts` | | `PayMe-Partner-Key` | The partner's client key | `GET /sellers/{seller_payme_id}/public-keys`, `GET /banks/{country_iso_code}` | | `PayMe-Public-Key` | The seller's public key | `POST /sales/{payme_sale_id}/3ds` (called from the browser), `POST /get-transaction-data` | | `PayMe-Signature` | A static value PayMe provides on request | `/sellers/{mpl_key}/individuals`, `/sellers/{mpl_key}/mids` | `PayMe-Signature` is not computed per request: it is a static secret value that PayMe gives you on request. Keep it secret and never paste it into code samples or tickets. ### The public key Each seller has its own public key, issued separately in each environment. A partner can look it up with `GET /sellers/{seller_payme_id}/public-keys` (header `PayMe-Partner-Key`), and `create-seller` returns it as `seller_public_key`. The public key is meant for browser code, but it can read a filtered list of the seller's transactions. Use it only where you need it in the browser. > ⚠ TO CONFIRM: Where in the merchant dashboard does a merchant find its public key? [Q9] ## Getting credentials - **Payments API:** not yet documented — see below. - **Keep API:** you receive a `Client ID` and `Client Secret` from your Account Manager. > ⚠ TO CONFIRM: How does a developer get sandbox credentials (seller_payme_id/MPL, payme_client_key, public key) — self-service sign-up, an account manager, or an email to support? [Q5] > ⚠ TO CONFIRM: Sandbox and production credentials are most likely fully separate — each environment generates its own keys, so a sandbox key should be rejected by `live.payme.io` and vice versa. Please confirm the environments share no credentials. [Q10] ## Keep API: OAuth 2.0 client credentials 1. `POST /oauth2/token` with `application/x-www-form-urlencoded` body: `grant_type=client_credentials`, `client_id`, `client_secret`, optional `scope` (`partner-api` or `seller-api`). 2. The response has `access_token`, `refresh_token`, `expires_in`, `refresh_expires_in`, `token_type`, `scope`. 3. Send `Authorization: Bearer ` on every request. 4. Refresh with `grant_type=refresh_token` and the `refresh_token`. Access tokens are short-lived ("typically 1 hour"); refresh tokens last "typically 30 days". All requests must use HTTPS; plain HTTP and unauthenticated calls fail. ## Products & Customers API: JWT 1. `POST /auth/token` with `{"mpl": "", "key": ""}` returns `access_token` and `refresh_token`. 2. Send `Authorization: Bearer ` on product and customer calls. 3. `POST /auth/refresh` with `refresh_token` in the body and headers `PayMe-Partner-Key` and `PayMe-Merchant-Key` returns a new `access_token` and `expires_in` (seconds). > ⚠ TO CONFIRM: In Products & Customers `POST /auth/token`, is `key` the same value as `payme_client_key`? How long is the access token valid? [Q12] ## Keeping credentials secret - Keep `seller_payme_id`, `payme_client_key`, the client password and `PayMe-Signature` on your **server**. Never put them in browser or mobile code, logs, or public repositories such as GitHub. - Only the public key belongs in browser code. The 3D Secure guide makes the same split: the browser call uses the public key, the hash-resolution call "should be called from your backend". - Store tokens securely, encrypted, and rotate credentials periodically. ### If a key leaks Contact PayMe support. PayMe can rotate a partner key or a seller ID without downtime — the old and new values both work until the switch — and can block a partner or deactivate a public key. There is no self-service endpoint for this. - [Environments](https://docs-staging.payme.io/payments/getting-started/environments): PayMe has two environments: Sandbox at https://sandbox.payme.io/api/ and Production at https://live.payme.io/api/; each issues its own keys. The B2B Payments API uses the same hosts and /api prefix. sale_url is the environment's base URL plus /sale/generate/; use it exactly as returned. Test only in the sandbox with the documented test cards; decline cards return HTTP 200 with status_code 1 and codes such as 20004 or 21001-21008. Browser scripts load from cdn.paymeservice.com; Hosted Fields uses testMode: true. # Environments ## Base URLs | Environment | Base URL | |-------------|----------| | Sandbox | `https://sandbox.payme.io/api/` | | Production | `https://live.payme.io/api/` | Point every request at the right environment **with that environment's credentials**. Endpoint pages show both URLs. A full endpoint URL is the base URL plus the path, for example `https://sandbox.payme.io/api/generate-sale` and `https://live.payme.io/api/refund-sale`. > ⚠ TO CONFIRM: Sandbox and production credentials are most likely fully separate — each environment generates its own keys, so a sandbox key should be rejected by `live.payme.io` and vice versa. Please confirm the environments share no credentials. [Q10] ### Other APIs - **B2B Payments** uses the same hosts, the same `/api` prefix and the same `payme_client_key` / `seller_payme_id` authentication as the Payments API: payment contracts under `/api/payment-contracts`, wallet transfers under `/api/sales` and `/api/transfer`. - **Keep:** endpoint pages show full URLs such as `https://sandbox.payme.io/api/partner/api/documents/income` and `https://live.payme.io/api/partner/api/documents/income`. Other Keep paths start with `/oauth2/token`, `/public/...` and `/seller/api/...`. > ⚠ TO CONFIRM: What are the real sandbox and production base URLs for the Keep API, including the OAuth token endpoint (`/oauth2/token`) and the `/public/...` and `/seller/api/...` paths? [Q40] > ⚠ TO CONFIRM: What are the real sandbox and production base URLs for the Products & Customers API (`/auth/token`, `/products`, `/customers`)? Is it really `https://sandbox.payme.io/api` / `https://live.payme.io/api`? [Q41] ## Hosts you will see besides the API ### The payment page (`sale_url`) `generate-sale` returns a `sale_url` — the secured payment page to show the buyer. It is built as the environment's base URL followed by `/sale/generate/`, or `/sale/template/` for template sales. **Use `sale_url` exactly as returned**; do not build it yourself or hard-code its host. > ⚠ TO CONFIRM: The `sale_url` host is most likely `sandbox.payme.io` in the sandbox and `live.payme.io` in production; the `preprod.paymeservice.com` host in some documented examples (and in the 3D Secure `postMessage` origin check) appears to be a pre-production host. Please confirm the hosts per environment, so examples and iframe / Content-Security-Policy allow-lists can be corrected. [Q38] ### Browser scripts PayMe's browser scripts are served from `cdn.paymeservice.com` (for example `//cdn.paymeservice.com/jsapi/v1/payme.min.js`). The Apple Pay and Google Pay guides load `hostedfields.js` from `cdn.paymeservice.com`; the Hosted Fields guide shows `cdn.payme.io/hf/v1/hostedfields.js`. > ⚠ TO CONFIRM: `cdn.paymeservice.com` is the domain in use, so the Hosted Fields script is most likely `https://cdn.paymeservice.com/hf/v1/hostedfields.js` and `cdn.payme.io` is outdated. Please confirm the exact Hosted Fields path, and whether it is the same for sandbox and production. [Q39] In browser code, sandbox vs production is chosen with `testMode` (default `false`): `PayMe.create(apiKey, { testMode: true })` for the sandbox. Setting it to `false` sends requests to production. ## Testing in the sandbox Use test data **only in the sandbox**. Full list: [Test Cards and Payment Methods](https://docs-staging.payme.io/payments/introduction/test-cards-and-payment-methods). Main test cards (all expire `12/30`, Social ID `008336174`): | Card number | CVV | Behaviour | |-------------|-----|-----------| | `4557430402053431` | `200` | International non-Israeli card; one installment only; ILS, USD, EUR | | `375516193000090` | `0957` | International Israeli card; multiple installments; ILS, USD, EUR | | `5326105300985846` | `658` | Local Israeli card; multiple installments; ILS only | ### Cards that force a decline Outside production these cards always fail. The response is **HTTP 200** with `status_code: 1` and: | Card number | `status_error_code` | Message (with `language: "en"`) | |-------------|--------------------|---------------------------------| | `4000000000000002` | `20004` | Refusal by credit company. Please try a different card | | `4000000000000051` | `21001` | The card is blocked | | `4000000000000085` | `21002` | The card is stolen | | `4000000000000069` | `21004` | The card is expired | | `4242424242424241` | `21005` | Incorrect card number | | `4000000000000135` | `21006` | The credit limit has been reached | | `4000000000000101` | `21007` | CVV/ID is required but was not entered | | `4000000000000127` | `21008` | Incorrect CVV or ID | | `4000000000000036` | `20004` | Saving (tokenizing) the card succeeds; charging it later, including with its `buyer_key`, is refused | ### Other sandbox test data - **Israeli direct debit:** bank `54`, branch `112`, account `2222111` is approved after 60 seconds; branch `113`, account `4444333` is declined after 60 seconds. In the sandbox you only receive bank-authorization statuses 1 or 2. - **SEPA and BACS:** test account numbers drive the status from `initial` to `completed`, `failed` or `chargeback`. - **Creating test sellers (partners):** `seller_social_id` `9999999999`, `seller_email` `random@paymeservice.com` (suppresses automatic emails), `seller_bank_code` `54`, any 3-digit branch, any 6-digit account. ### Merchant dashboard `create-seller` returns a sign-up link to the merchant dashboard in `seller_dashboard_signup_link`. > ⚠ TO CONFIRM: Each environment most likely has its own merchant dashboard (the partner's white-label dashboard if one is set, otherwise PayMe's default). What is the URL of PayMe's default sandbox dashboard, where a developer can see test sales? [Q43] - [Quickstart](https://docs-staging.payme.io/payments/getting-started/quickstart): End-to-end sandbox walkthrough. 1) POST https://sandbox.payme.io/api/generate-sale with seller_payme_id, sale_price (minor units, min 500), currency, product_name, transaction_id, sale_callback_url, sale_return_url, language en; response has sale_url and payme_sale_id. 2) Open sale_url and pay with test card 5326105300985846 12/30 CVV 658. 3) PayMe POSTs a form-encoded callback with notify_type sale-complete; reply 200 within 5 s. 4) POST /refund-sale with seller_payme_id, payme_sale_id and optional sale_refund_amount. # Quickstart Your first sale in the sandbox: you will create a sale, pay it as a buyer, receive PayMe's callback, and refund it. Every field below comes from the endpoint pages linked in each step. **You need:** - a sandbox `seller_payme_id` (MPL) — see [Authentication](https://docs-staging.payme.io/payments/getting-started/authentication). Keep it on your server: on its own it authenticates seller-level calls; - a public URL that accepts `POST` requests, for the callback. It may not be `localhost` or a private IP address; use HTTPS. > ⚠ TO CONFIRM: How does a developer get sandbox credentials (seller_payme_id/MPL, payme_client_key, public key) — self-service sign-up, an account manager, or an email to support? [Q5] ## Step 1 — Create the sale Endpoint: [`POST /generate-sale`](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale). No payment happens yet. ```bash curl -X POST https://sandbox.payme.io/api/generate-sale \ -H 'Content-Type: application/json' \ -d '{ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Test order", "transaction_id": "order-1001", "installments": "1", "sale_callback_url": "https://your-server.example.com/payme/callback", "sale_return_url": "https://your-site.example.com/payment/success", "language": "en" }' ``` | Field | Meaning | |-------|---------| | `seller_payme_id` | Your MPL. Required. | | `sale_price` | Price in minor units: `1000` = 10.00. Default allowed range `500`–`4000000`, in every currency (so `500` is 5.00 ILS but 500 JPY). Required. | | `currency` | 3-letter ISO 4217 code, enabled on your account. Required. | | `product_name` | Short product description, up to 500 characters. Required. | | `transaction_id` | Your own order ID, for correlation with PayMe. Optional. | | `installments` | `1`–`12` fixed, or `103`/`106`/`109`/`112` to let the buyer choose up to 3/6/9/12. | | `sale_callback_url` | Where PayMe sends the server-to-server callback. Defaults to the merchant's settings. | | `sale_return_url` | Where the buyer is redirected after paying. Defaults to the merchant's settings. | | `language` | Payment page and error-message language. If omitted, messages are in Hebrew — always send `"en"` while integrating. | `sale_price` and `installments` accept a number or a numeric string (`1000` or `"1000"`, `1` or `"1"`). A non-numeric `sale_price` returns error `352`; a non-numeric `installments` returns error `10`. A decimal `sale_price` is rounded to whole minor units. Successful response (for the request above): ```json { "status_code": 0, "sale_url": "https://preprod.paymeservice.com/sale/generate/XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_code": 12345678, "price": 1000, "transaction_id": "order-1001", "currency": "ILS" } ``` - `status_code` `0` means success, `1` means error. - Save `payme_sale_id` (PayMe's sale ID) next to your `transaction_id`. You need it to refund. - If `status_code` is `1`, read `status_error_code` and `status_error_details` — see [Errors](https://docs-staging.payme.io/payments/getting-started/errors). Errors usually come back with HTTP 500, so check `status_code`, not the HTTP status. - PayMe does not de-duplicate `transaction_id`: sending this request twice creates two sales. ## Step 2 — Pay as the buyer Open `sale_url` in a browser (or an IFRAME). Pay with a sandbox test card, for example: | Card number | Expiry | CVV | Social ID | |-------------|--------|-----|-----------| | `5326105300985846` | `12/30` | `658` | `008336174` | This is a local Israeli card that accepts ILS only. Other cards, including cards that force a decline, are on [Test Cards and Payment Methods](https://docs-staging.payme.io/payments/introduction/test-cards-and-payment-methods). You can pre-fill buyer details by appending query parameters to `sale_url`, for example `?first_name=First&last_name=Last&email=test@example.com`. Card fields cannot be pre-filled. Use `sale_url` exactly as returned. > ⚠ TO CONFIRM: The `sale_url` host is most likely `sandbox.payme.io` in the sandbox and `live.payme.io` in production; the `preprod.paymeservice.com` host in the response example above appears to be a pre-production host. Please confirm, so the example can be corrected. [Q38] To try a decline, pay with `4000000000000002`: the result is HTTP 200 with `status_code: 1` and error `20004`. Other decline cards are on [Environments](https://docs-staging.payme.io/payments/getting-started/environments). After a successful payment the buyer is redirected (`GET`) to your `sale_return_url` with the sale details as query parameters: ``` https://your-site.example.com/payment/success?payme_status=success&payme_signature=75e99dbcb25cdfbe1c62f0b9376f4144&payme_sale_id=XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX&payme_transaction_id=XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX&price=1000¤cy=ILS&transaction_id=order-1001&is_token_sale=0 ``` Use the redirect only to show the buyer a result page. Use the callback (step 3) to update your order. ## Step 3 — Receive the callback When the sale is paid, PayMe sends a `POST` with an `x-www-form-urlencoded` body to `sale_callback_url`. Key fields: | Field | Example | Meaning | |-------|---------|---------| | `notify_type` | `sale-complete` | What happened. See [Callbacks](https://docs-staging.payme.io/payments/getting-started/callbacks). | | `status_code` | `0` | `0` success, `1` error | | `payme_sale_id` | `XXXXXXXX-…` | PayMe's sale ID | | `transaction_id` | `order-1001` | Your order ID | | `sale_status` | `completed` | See [Sale Statuses](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-statuses) | | `price`, `currency` | `1000`, `ILS` | Amount in minor units and currency | | `payme_signature` | `75e99dbcb25cdfbe1c62f0b9376f4144` | Signature | To test your handler before you have a sandbox account, send yourself a callback with the documented shape: ```bash curl -X POST https://your-server.example.com/payme/callback \ -H 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'status_code=0' \ --data-urlencode 'notify_type=sale-complete' \ --data-urlencode 'sale_created=2016-01-01 15:15:15' \ --data-urlencode 'transaction_id=order-1001' \ --data-urlencode 'payme_sale_id=XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX' \ --data-urlencode 'payme_sale_code=12345678' \ --data-urlencode 'payme_transaction_id=XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX' \ --data-urlencode 'price=1000' \ --data-urlencode 'currency=ILS' \ --data-urlencode 'sale_status=completed' \ --data-urlencode 'installments=1' \ --data-urlencode 'is_token_sale=0' \ --data-urlencode 'payme_signature=75e99dbcb25cdfbe1c62f0b9376f4144' ``` Your handler should: 1. **Reply `200` within 5 seconds.** Any status below 400 counts as delivered; anything else, or a timeout, makes PayMe retry — up to 3 attempts in total, then the callback is dropped. 2. **Ignore repeats** — de-duplicate on `notify_type` + `payme_sale_id` + `payme_transaction_id`. 3. **Verify `payme_signature`** — the recipe is on [Callbacks](https://docs-staging.payme.io/payments/getting-started/callbacks) (section "Verifying a callback"). 4. **Confirm the sale before fulfilling** — treat the callback's status and amount as a notification, not proof of payment: call [`POST /get-sales`](https://docs-staging.payme.io/payments/query-apis/post-get-sales) with `sale_payme_id` and check `sale_status` and `sale_price`. ## Step 4 — Refund the sale Endpoint: [`POST /refund-sale`](https://docs-staging.payme.io/payments/post-sale-actions/post-refund-sale). Omit `sale_refund_amount` for a full refund; send it for a partial refund (minimum `500`). You can refund several times as long as the total does not exceed the sale amount. ```bash curl -X POST https://sandbox.payme.io/api/refund-sale \ -H 'Content-Type: application/json' \ -d '{ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 500, "language": "en" }' ``` `payme_client_key` is not needed here: a merchant can refund with `seller_payme_id` alone. Partners (platforms) may also send their `payme_client_key`, in which case the seller must belong to that partner. Successful response (abridged): ```json { "status_code": 0, "status_error_code": 0, "payme_status": "success", "sale_status": "partial-refund", "sale_refund_buffer": 500, "payme_transaction_total": 500, "payme_transaction_id": "TRANDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_signature": "b71e**************ca5a" } ``` PayMe also sends a callback with `notify_type` `refund` to the callback URL; its `payme_transaction_total` is the amount of this refund and `sale_refund_buffer` the amount still refundable. **Do not blindly retry a refund that timed out**: a repeated partial refund runs again and refunds a second time. Read [Idempotency and retries](https://docs-staging.payme.io/payments/getting-started/idempotency-and-retries) first. ## Next steps - [Callbacks](https://docs-staging.payme.io/payments/getting-started/callbacks) — every notification type and how to handle it. - [Errors](https://docs-staging.payme.io/payments/getting-started/errors) — error codes and messages. - To charge a saved card later, see [Create Payment With Buyer Key (Token)](https://docs-staging.payme.io/marketplaces-and-platforms/payments/create-payment-with-buyer-key-token); to authorize now and capture later, see [Capture sale](https://docs-staging.payme.io/marketplaces-and-platforms/payments/capture-sale). - [Callbacks](https://docs-staging.payme.io/payments/getting-started/callbacks): PayMe callbacks are form-encoded POSTs to sale_callback_url (or the default callback URL). Any HTTP status below 400 counts as delivered; each attempt times out after 5 s; up to 3 attempts over about 2 minutes, then dropped. Duplicates happen and ordering is not guaranteed: de-duplicate on notify_type + payme_sale_id + payme_transaction_id. payme_signature = lowercase hex MD5 of payme_client_key + client password + payme_transaction_id + payme_sale_id. Before fulfilling an order, confirm the sale's status and amount with POST /get-sales. # Callbacks A callback (PayMe also calls it an "IPN") is a request PayMe's server sends to yours when something happens to a sale, a subscription or a seller. **In short:** reply quickly with HTTP 200, expect repeats and out-of-order delivery, verify `payme_signature`, and confirm the sale's status and amount with [`POST /get-sales`](https://docs-staging.payme.io/payments/query-apis/post-get-sales) before you fulfil an order. ## Format - Method and encoding: `POST` with an `x-www-form-urlencoded` body — not JSON. - Destination: the `sale_callback_url` you sent in the request; if you did not send one, the merchant's default Callback URL. The same sale event can also go to the partner's callback URL. - The `language` field of the request sets the language of the callback. ### Callback URL rules - `http://` and `https://` are both accepted. Use HTTPS. - Non-standard ports are allowed (for example `:8443`). - Rejected: `localhost`, private and loopback IP addresses, and (in production) hosts without a valid top-level domain. The callback is separate from the **return URL** redirect. The return URL is a browser `GET` that takes the buyer to your result page; the callback is server-to-server. ## Sale notification types (`notify_type`) | `notify_type` | Meaning | |---------------|---------| | `sale-complete` | The sale was paid successfully | | `sale-authorized` | The sale was authorized successfully | | `refund` | The sale was refunded — full refund, partial refund, or void of an authorization | | `sale-failure` | A payment attempt failed | | `sale-chargeback` | The sale was charged back | | `sale-chargeback-refund` | The chargeback was reverted | - **`sale-failure` is sent once per failed attempt**, not once per sale. A buyer can retry on the payment page; each failure sends another `sale-failure` with a different `payme_transaction_id`. They stop once the sale completes. - **Refund callbacks:** `payme_transaction_total` is the amount of this refund, `price` is the original sale price, `sale_refund_buffer` is the amount still refundable, and `payme_transaction_id` / `payme_signature` refer to the refund transaction. > ⚠ TO CONFIRM: The exact `sale_status` string after a partial refund — the existing docs show `partial-refund`, while PayMe's API code suggests `partially-refunded`. Which is it (and the matching void strings)? [Q37] ## Sale callback payload | Field | Example | Description | |-------|---------|-------------| | `status_code` | `0` | `0` success, `1` error | | `status_error_code` | | In case of an error, PayMe's error code | | `status_error_details` | | In case of an error, the error message | | `notify_type` | `sale-complete` | Notification type (table above) | | `sale_created` | `2016-01-01 15:15:15` | Sale creation time | | `transaction_id` | `12345` | Your order ID | | `payme_sale_id` | `XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX` | PayMe's sale ID | | `payme_sale_code` | `12345678` | Sale code, for display only | | `payme_transaction_id` | `XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX` | PayMe's ID for this transaction (payment, capture, refund or failed attempt) | | `price` | `1000` | Amount in minor units (50.75 → `5075`) | | `currency` | `USD` | ISO 4217 code | | `sale_status` | `completed` | See [Sale Statuses](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-statuses) | | `payme_transaction_card_brand` | `Visa` | Card brand | | `payme_transaction_auth_number` | `01A2B3C` | Authorization number from the card company | | `buyer_card_mask` | `458045******4580` | Masked card number | | `buyer_card_exp` | `0118` | Card expiry | | `buyer_name`, `buyer_email`, `buyer_phone`, `buyer_social_id` | | Buyer details | | `buyer_key` | `XXXXXXXX-…` | Token for future payments; only when `capture_buyer` was set | | `installments` | `1` | Number of installments | | `sale_paid_date` | `2016-01-01 15:16:15` | When the payment happened (not when the callback was sent) | | `sale_release_date` | `2016-01-08 15:15:15` | Release date | | `is_token_sale` | `0` | `0` false, `1` true | | `payme_signature` | `75e99dbcb25cdfbe1c62f0b9376f4144` | Signature (see below) | | `sale_invoice_url` | `https://www.example.com/XXXXXX.pdf` | Invoice URL, if the seller enabled invoices | ## Other callbacks ### Subscriptions Sent to `sub_callback_url`, or to the partner's callback URL if none is set. **Subscription callbacks carry no `payme_signature`.** | `notify_type` | When | |---------------|------| | `sub-create` | The subscription was created | | `sub-active` | The subscription became active | | `sub-iteration-success` | A billing iteration was paid (adds `payme_sale_id` and `payme_sale_code`) | | `sub-iteration-skipped` | A billing iteration was skipped | | `sub-failure` | The subscription failed | | `sub-pause` | The subscription was paused | | `sub-cancel` | The subscription was cancelled | | `sub-complete` | The subscription completed | The payload includes `sub_payme_id`, `sub_status`, `sub_price`, iteration counters and buyer fields. Each iteration also creates a sale, which sends its own `sale-complete` or `sale-failure`. ### Israeli direct debit - `sale-paid` when the debit is submitted, with `buyer_key` and `buyer_status`. - When the bank authorization status changes: `sale-complete` or `sale-failure`, then `sale-il-direct-debit-update` with `authorization_status` and `authorization_error_code`. The `authorization_status` values are listed on [Errors](https://docs-staging.payme.io/payments/getting-started/errors) (section "Israeli direct debit"). An Israeli direct-debit *payment* (not authorization) sends no callback on success and can take up to 8 days. ### Sellers (partners) Sent to the partner's callback URL with all `seller_*` and `fee_*` fields: `seller-create` (adds `seller_public_key`), `seller-update`, `seller-approve`. Related partner notifications: `withdrawal-complete`, `charge-complete`, and `point-of-sale-action-*` (for example after a POS device is paired). ### Bank transfer A bank transfer reaching `PAID` is reported with a callback. > ⚠ TO CONFIRM: Bank transfers most likely use the normal `sale-complete` / `sale-failure` callbacks with no dedicated `notify_type`. Please confirm. [Q34] ### B2B payment contracts A contract's `callback_url` receives a callback for every change in status. ## Verifying a callback (`payme_signature`) ### How it is computed `payme_signature` is the **lowercase hexadecimal MD5** hash of four values joined with **no separator**, in this order: 1. `payme_client_key` (the partner key) 2. the client password issued together with the client key 3. `payme_transaction_id` (from the payload) 4. `payme_sale_id` (from the payload) It is a plain MD5 hash, not an HMAC. Worked example (fake values): | Input | Value | |-------|-------| | `payme_client_key` | `demo_partner_KEY12345` | | client password | `demoPassw0rd` | | `payme_transaction_id` | `TRAN1700-000000AA-EXAMPLE1-TXN00001` | | `payme_sale_id` | `SALE1700-000000AA-EXAMPLE1-SALE0001` | Joined string: `demo_partner_KEY12345demoPassw0rdTRAN1700-000000AA-EXAMPLE1-TXN00001SALE1700-000000AA-EXAMPLE1-SALE0001` `payme_signature` = `f8ffc5bb45fe6c3ad326c439f1a21c28` ```python import hashlib, hmac def payme_signature_ok(form, client_key, client_password): expected = hashlib.md5( (client_key + client_password + form["payme_transaction_id"] + form["payme_sale_id"]).encode() ).hexdigest() return hmac.compare_digest(expected, form.get("payme_signature", "")) ``` > ⚠ TO CONFIRM: What is the "client password" called in PayMe's onboarding material, how does a partner receive it, and how can a merchant that has no `payme_client_key` verify `payme_signature`? [Q1] ### Where the same signature appears The same formula is used in sale callbacks, the return-URL redirect (including when `payme_status=error`), and the `capture-sale` and `refund-sale` responses. In each case `payme_transaction_id` is the transaction in that payload — the payment, the capture or the refund. Exceptions: - Subscription callbacks have no signature. The subscription **return URL** is signed, with `sub_payme_id` in place of `payme_sale_id`. - `verify_only` refunds return `payme_signature: null`. - B2B payment contracts use a different formula. ### Confirm the sale before you fulfil A valid signature tells you the callback refers to a real PayMe sale and transaction. Treat the status and amount in a callback as a notification, not as proof of payment. **Safe practice:** before you fulfil an order, call [`POST /get-sales`](https://docs-staging.payme.io/payments/query-apis/post-get-sales) with `sale_payme_id` and check `sale_status` and `sale_price` against your order. > ⚠ TO CONFIRM: Do callbacks come from a fixed set of IP addresses that merchants can allow-list? [Q3] ## Delivery, retries, duplicates and ordering ### What counts as delivered - Any HTTP status **below 400** counts as delivered. The response body is ignored, and redirects are followed. - Each attempt times out after **5 seconds**. Reply `200` immediately and do the slow work (emails, fulfilment) afterwards. ### Retries - PayMe makes **up to 3 attempts**: the first, a retry about 30 seconds later, and a last retry about 60 seconds after that. - A 4xx or 5xx response, a timeout, or a connection error triggers a retry. - After the last attempt the callback is **dropped**. It cannot be replayed through the API. - If your endpoint keeps failing, PayMe pauses delivery to it for a short time, and callbacks during that time are skipped. **Do not rely on callbacks alone.** Reconcile with [`POST /get-sales`](https://docs-staging.payme.io/payments/query-apis/post-get-sales). ### Duplicates The same callback can arrive more than once — typically when your endpoint processes it but replies after the 5-second timeout. There is no event ID. De-duplicate on **`notify_type` + `payme_sale_id` + `payme_transaction_id`**; each refund, capture and failed attempt has its own `payme_transaction_id`. ### Ordering > ⚠ TO CONFIRM: Callbacks are most likely **not** delivered in order — they are sent by parallel workers with retry delays, so a `refund` can arrive before a `sale-complete` that is still being retried, and there is no sequence number or event timestamp. Please confirm, so the docs can state it as a rule. Until then: never let a later-arriving callback overwrite a final state you already recorded, and query the sale when in doubt. [Q33] ## Handling checklist 1. Parse the body as form data and reply `200` within 5 seconds. 2. Verify `payme_signature` (sale callbacks). 3. Ignore it if you already processed this `notify_type` + `payme_sale_id` + `payme_transaction_id`. 4. Before fulfilling, confirm `sale_status` and `sale_price` with `POST /get-sales`. 5. Run a periodic reconciliation with `get-sales`, because callbacks can be dropped after 3 attempts. - [Errors](https://docs-staging.payme.io/payments/getting-started/errors): Payments API errors return status_code 1 with status_error_code, status_error_details (Hebrew unless language is en; he, en, es, ru, ar accepted) and status_additional_info (often the field name). Branch on status_code and status_error_code, never on HTTP status: card declines return HTTP 200, many request errors HTTP 500, some 400/403/422/429/503. Common codes: 1 missing parameter, 200 unknown client key, 251 seller not found, 252 currency not allowed, 305 wrong sale status, 352 invalid price, 998 too many or duplicate requests, 20xxx/21xxx card declines. # Errors ## Error response shape (Payments API) ```json { "status_code": 1, "status_error_details": "Seller was not found", "status_additional_info": "seller_payme_id", "status_error_code": 251 } ``` | Field | Meaning | |-------|---------| | `status_code` | `0` success, `1` error. | | `status_error_code` | PayMe's numeric error code. `0` on success. | | `status_error_details` | The error message, in the language you asked for. | | `status_additional_info` | Extra detail — usually the name of the field at fault. Alternatives are joined with ` / `, for example `seller_payme_id / seller_id`. | | `payme_status` | `success` or `error` (on some responses and on the return-URL redirect). | Error bodies also include a `session` field. ## HTTP status vs `status_error_code` The two numbers are separate: `status_error_code` is never used as the HTTP status. | Situation | HTTP status | |-----------|-------------| | Card declined (codes `20xxx` / `21xxx`) | **200**, with `status_code: 1` | | Most request errors — for example missing parameter (`1`), unknown client key (`200`), unknown seller (`251`), wrong sale status (`305`) | **500** | | Some access and input errors | 400, 403 or 422 | | Too many requests, or a duplicate call still running (`998`) | 429 | | Service temporarily read-only | 503 | **Decide what happened from `status_code` and `status_error_code`, not from the HTTP status.** A `200` can be a decline, and a `500` usually means your request needs fixing, not that PayMe is down. ## Getting messages in English If you omit `language`, messages come back in **Hebrew**. Send `"language": "en"` on every call. Accepted values are `he`, `en`, `es`, `ru` and `ar`; any other value returns error `51`. A few very early errors, such as a malformed key format, may still come back in Hebrew. > ⚠ TO CONFIRM: `language` is honoured on the Payments, subscription, transaction and seller-management endpoints that were checked; please confirm it applies to every Payments endpoint. [Q16] ## Common error codes The tables below cover the codes integrators meet most often. > ⚠ TO CONFIRM: Is there an authoritative, complete list of `status_error_code` values with English meanings that can be published here? [Q14] ### Request and credential errors | Code | Meaning | What to do | |------|---------|------------| | `1` | Required parameter is missing. `status_additional_info` names it. Also returned when no client key and no seller key are sent. | Add the named field. | | `10` | `installments` is not numeric | Send a number such as `1` or `"1"`. | | `19` | Please provide all required fields (some endpoints) | Check the endpoint's required fields. | | `20` | Validation error. Also "Merchant-Seller inconsistency" (HTTP 400): the seller belongs to a different partner from the `payme_client_key` sent. | Fix the fields listed in `status_additional_info`. | | `51` | Unsupported `language` value | Use `he`, `en`, `es`, `ru` or `ar`. | | `163` | The seller exists but is inactive | Contact PayMe. | | `200` | Merchant was not found: the `payme_client_key` (or `PayMe-Partner-Key`) matches no partner. `status_additional_info` is `payme_client_key`. | Check the key and the environment. | | `201` | The partner is inactive | Contact PayMe. | | `251` | Seller was not found: the `seller_payme_id` / `seller_id` matches no seller. Also returned for an unknown public key during card tokenization. | Check the MPL or public key and the environment. | | `252` | Currency not allowed for this account | Use a currency enabled on the account. | | `352` | `sale_price` is not numeric or is outside the allowed range | Send minor units within the allowed range. | | `353` | `product_name` is missing | Add `product_name`. | | `357` | Unknown `sale_type` value | Use a documented `sale_type`. | ### Sale-state, retry and rate-limit errors | Code | Meaning | What to do | |------|---------|------------| | `305` | Cannot perform action due to an incorrect status. `status_additional_info` holds the sale's current status. Returned, for example, when a paid sale is paid again or a fully refunded sale is refunded again. | Check the sale with `get-sales`; do not retry. | | `998` | HTTP 429. Either "Too Many Attempts." (rate limit) or "Duplicated action detected, please retry later" (the same action on the same sale is still running). Tell them apart by `status_additional_info` / the message. | Wait (`Retry-After` header) and check the sale before retrying. | ### Card declines Declines return HTTP 200 with `status_code: 1`. Codes `21xxx` are card problems; `20xxx` are refusals from the card company or gateway. | Code | Message | |------|---------| | `20004` | Refusal by credit company. Please try a different card | | `21001` | The card is blocked | | `21002` | The card is stolen | | `21004` | The card is expired | | `21005` | Incorrect card number | | `21006` | The credit limit has been reached | | `21007` | CVV/ID is required but was not entered | | `21008` | Incorrect CVV or ID | The sandbox test cards that produce each one are on [Environments](https://docs-staging.payme.io/payments/getting-started/environments). ### Other codes Other codes shown on endpoint pages: `356` invalid credit-card expiry (3D Secure initialize, capture-buyer-token); `600` buyer not found (get-buyer-key); `720` the service was not activated on the account, with the service name in `status_additional_info` (Apple Pay, Google Pay, B2B transfer); `901` invalid JSON (get-transactions); `906` withdrawal not found (credit-match). ### Products & Customers API Errors carry `status_code` `1`, a `message`, and a `status_error_code` equal to the HTTP status: `400` "Bad Request", `401` "Unauthorized request", `500` "Internal Server Error". ### Keep API - OAuth token errors (HTTP 401) return `error` and `error_description`. - Some partner endpoints return `{"statusCode": 1, "payload": {"message": "..."}}`, for example HTTP 429 "Rate limit exceeded" and "Update conflict". - The document-failure webhook example uses `errorCode` `TAX_AUTHORITY_REJECTED` ("Document rejected by tax authority - invalid VAT number"). ### B2B payment contracts (`error_code` on a contract) | `error_code` | `error_text` | |--------------|--------------| | `11000` | Recipient Rejected | | `11001` | Initiator Canceled | | `11002` | Recipient Confirmation Timeout | | `11003` | Initiator Confirmation Timeout | | `11004` | Payment Processing Failure | This is the complete list. For `11004`, `error_note` is free text and may contain a regular PayMe error message. ### Israeli direct debit When a bank authorization changes, the `sale-il-direct-debit-update` callback carries `authorization_status` and `authorization_error_code`. | `authorization_status` | Meaning | Effect | |------------------------|---------|--------| | `1` | Success | Authorization active | | `2` | Failed | Failed | | `3` | Canceled | Canceled | | `4` | Unknown | Failed | | `5` | Moved from previous account | Failed | | `6` | Account changed | Failed | | `13` | Frozen authorization reactivated | Authorization active | | `14` | Sent to the bank | Pending | | `15` | Sent to the bank again | Pending | | `16` | Details missing | Failed | | `17` | Details incorrect | Failed | | `18` | Already processed (success) | Authorization active | `authorization_error_code` is passed through unchanged from the bank side. > ⚠ TO CONFIRM: What values can `authorization_error_code` take (for example `"11"`) and what does each mean? [Q51] ## Related status lists Not errors, but often needed when handling them: [Sale Statuses](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-statuses), [Transaction Statuses](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/transaction-statuses), [Subscription Statuses](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/subscription-statuses). - [Idempotency and Retries](https://docs-staging.payme.io/payments/getting-started/idempotency-and-retries): PayMe has no idempotency key and does not de-duplicate transaction_id: two generate-sale calls create two sales. A second pay-sale, refund-sale or capture-sale for the same sale while the first is running gets HTTP 429 code 998; once it finished, a retry runs again (a repeated partial refund is a second refund; a paid sale paid again gets 305). After a timeout, check sale_status via POST /get-sales (filter by sale_payme_id or transaction_id) before retrying. generate-sale, pay-sale and capture-sale share a per-seller rate limit, 100 requests per 10 s by default. # Idempotency and Retries "Idempotent" means that sending the same request twice has the same effect as sending it once. **PayMe has no idempotency key**, so you must make retries safe yourself. ## What happens when a request runs twice | Request | Second call while the first is **still running** | Second call **after** the first finished | |---------|-----------------------------------------------|------------------------------------------| | `generate-sale` | A second, separate sale | A second, separate sale — `transaction_id` is **not** checked for uniqueness | | `generate-sale` with `buyer_key` / token (creates **and charges**) | A second charge is possible | A second charge is possible | | `pay-sale` | Rejected: HTTP 429, code `998` "Duplicated action detected, please retry later" | If the first succeeded: rejected with HTTP 500, code `305`, current status in `status_additional_info`. If the first failed: accepted as a **new charge attempt**. | | `refund-sale` — partial | Rejected: HTTP 429, code `998` | **Runs again** — a second refund, as long as refundable balance remains | | `refund-sale` — full | Rejected: HTTP 429, code `998` | Rejected with code `305` | | `capture-sale` | Rejected: HTTP 429, code `998` | An authorization can be captured only once. | Notes: - **`transaction_id` is your own reference.** PayMe stores and returns it but does not reject duplicates: each `generate-sale` creates a new sale with its own `payme_sale_id`. - **Template sales:** each `pay-sale` on a template creates a new sale, so the protections above do not apply to template sales. - PayMe does not promise that a retried payment can never charge twice. Check before you retry. - An authorization lasts up to 168 hours; a capture after that fails. A void must be for the full authorized amount. ## Before retrying, check the sale If a request timed out and you do not know whether it ran, look the sale up instead of resending it. [`POST /get-sales`](https://docs-staging.payme.io/payments/query-apis/post-get-sales) accepts these filters: - `sale_payme_id` — PayMe's sale ID (one sale); - `transaction_id` — your order ID. Because `transaction_id` is not unique, this can return several sales. **By default `get-sales` leaves out unpaid sales** (status `initial`). To find an unpaid sale, pass `sale_status` including `initial`. `get-sales` works with `seller_payme_id` alone; partners can also use `payme_client_key`. > ⚠ TO CONFIRM: Reading `sale_status` from `get-sales` is most likely the right way to tell whether a timed-out operation ran — capture → `completed` (not `authorized`/`failed`), full refund → `refunded`, void → a voided status. Please confirm this is the recommended check, and the exact status strings for partial refunds and voids (the docs show `partial-refund`; PayMe's API code suggests `partially-refunded`). Note that `sale_status` alone cannot show whether a **retried partial refund** already ran: compare `sale_refund_buffer` (the amount still refundable, returned by `refund-sale` and sent in each `refund` callback — `get-sales` does not return it) or count the `refund` callbacks, each of which has its own `payme_transaction_id`. [Q25] ## Retrying safely 1. Retry only on network errors, timeouts, or HTTP 429 code `998`. Never retry a response with `status_code` `1` that names a problem with your input. 2. On `998`, wait (honour the `Retry-After` header), then **check the sale** before retrying. 3. Before retrying anything that moves money (`pay-sale`, `refund-sale`, `capture-sale`, `generate-sale` with `buyer_key`), check the sale's current state as above. 4. Store PayMe's `payme_sale_id` as soon as `generate-sale` returns, so every later step refers to one sale. 5. Treat callbacks as confirmation, and process each one once — see [Callbacks](https://docs-staging.payme.io/payments/getting-started/callbacks). > ⚠ TO CONFIRM: What client-side timeout should integrators use for Payments API calls (typical and maximum response time)? [Q29] ## PayMe's own retries - **Callbacks:** up to 3 attempts over about 2 minutes, then dropped. Details on [Callbacks](https://docs-staging.payme.io/payments/getting-started/callbacks). - **Subscriptions:** a subscription in status `76` is "Failed - Pending automatic retry", so PayMe retries failed subscription charges itself. ## Rate limits - `generate-sale`, `pay-sale` and `capture-sale` (and tokenization and 3D Secure calls) share one **per-seller** limit — by default **100 requests per 10 seconds**. PayMe can set a different limit per account; partners can read theirs from `GET /partners` (`technical.rate_limit_max_attempts`, `technical.rate_limit_decay_seconds`). - Over the limit: **HTTP 429**, `status_error_code` `998`, `status_additional_info` `"Too Many Attempts."`, and the headers `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `Retry-After` and `X-RateLimit-Reset`. - `refund-sale` and `get-sales` have no per-seller limit. > ⚠ TO CONFIRM: Is 100 requests per 10 seconds per seller also the default in **production**? [Q28] - **Keep:** a partner endpoint documents HTTP `429` with message "Rate limit exceeded". - [Payments overview](https://docs-staging.payme.io/payments/introduction/getting-started): Our API is designed to allow platforms to offer a full payment solution as part of their product. # Getting Started Our API is designed to allow platforms to offer a full payment solution as part of their product. Using the API you can: - Create and manage Merchant on your platform - Allow merchants to accept credit card paymentsCreate standard transactions - Create recurring payments - Use our secured payment pages - Use Tokenization for delayed & future payments - Charge a platform fee from every transactionQuery data regarding sellers, transactions, subscriptions, withdrawals and more PCI compliant and want to use the direct credit card API? [Let us know!](https://payme.io/contact-us/) By using the API you will be able to handle all transactions on your website without dealing with sensitive credit card details, processing difficulties or PCI compliancy. The basics are simple. You POST required information to our target URL's using JSON format and get replies structured in JSON format. You are free to use whatever programming language you prefer. ##### Note: Do not forget to add the header Content-Type: application/json to your requests! Callbacks - We have an option to send out a server to server notifications, also known as "IPN". For example: a customer successfully paying using the IFRAME; a successful subscription iteration. The format and details are described throughout this document. The callback is a POST request of type x-www-form-urlencoded to your provided target URL. - [Sandbox and Production URLs](https://docs-staging.payme.io/payments/introduction/sandbox-and-production-urls): In order to work with the API, you should use the service URLs according to the required environments, Sandbox or Production.When interacting with the API, make sure you point to the correct environment, with the correct credentials. Both URLs will be stated next to each function. # Sandbox and Production URLs In order to work with the API, you should use the service URLs according to the required environments, Sandbox or Production. When interacting with the API, make sure you point to the correct environment, with the correct credentials. Both URLs will be stated next to each function. ENVIRONMENT | URL ---------|---------- Sandbox | https://sandbox.payme.io/api/ Production | https://live.payme.io/api/ - [Test Cards and Payment Methods](https://docs-staging.payme.io/payments/introduction/test-cards-and-payment-methods): Please use the following credit card when integrating only in the **Sandbox** environment. # Test Cards and Payment Methods Please use the following credit card when integrating only in the **Sandbox** environment. ## Main credit card numbers for testing EMV supported credit cards: Credit Card |Details ---|--- **Card Number:** `4557430402053431` **Expiration:** `12/30` **CVV:**`200` **Social ID:**`008336174`|**Limitations**: Acts as an international non-Israeli card. Accepts sales with only one installment. Accepts sales in ILS, USD, EUR. **Card Number:** `375516193000090` **Expiration:** `12/30` **CVV:** `0957` **Social ID:**`008336174`| **Limitations**: Acts as an international Israeli card. Accepts sales with multiple installments. Accepts sales in ILS, USD, EUR. **Card Number:** `5326105300985846` **Expiration:** `12/30` **CVV:** `658` **Social ID:**`008336174`| **Limitations**: Acts as a local Israeli card. Accepts sales with multiple installments. Accepts sales in ILS only. ## Secondary credit card numbers for testing Credit Card Type |Credit Card Number ---|--- Visa| `4111111111111111` `4200000000000000` Mastercard| `5555555555554444` `5454545454545454` AmericanExpress| `378282246310005` `377777777777770` Diners |`38520000023237` Discover| `6011000990139424` JCB |`3530111333300000` Isracard|` 12312312` ## Credit card numbers for testing specific responses and errors Card Number |Description ---|--- `4000000000000002`| Payment is declined with a card declined error `4000000000000051`| Payment is declined with a card blocked error `4000000000000085`| Payment is declined with a card stolen error `4000000000000069`| Payment is declined with a card expired error `4000000000000101`| Payment is declined with a required CVV error `4000000000000127`| Payment is declined with an incorrect CVV `4000000000000135`| Payment is declined with a credit limit reached error `4242424242424241`| Payment is declined with an incorrect card number error `4000000000000036`| Token capture succeeds, but payment is declined with a card declined error ## Apple Pay Testing Information Card Brand | Card Number | Card Expiry Date | Card CVV ---|---|---|--- Visa | 4051 0693 0220 0121 | 12/27 | 340 Mastercard | 5204 2452 5052 2095 | 12/30 | 111 American Express | 37272 79248 51007 | 12/28 | 1111 Discvoer | FPAN: 6011 0009 9475 4889 | 12/30 | 111 ## Israeli Direct Debit Testing Information Bank Account Infromation (Bank, Branch, Account Number) |Description ---|--- `54, 112, 2222111` |Bank Authorization is approved after 60 seconds `54, 113, 4444333`|Bank Authorization is declined after 60 seconds ## SEPA Payment Method Testing Information Account Number |Description ---|--- `DE89370400440532013000 `| The Payment status transitions from `initial` to `completed` immidiately. `DE08370400440532013003`|The Payment status transitions from `initial` to `completed` after 3 minutes. `DE62370400440532013001` |The Payment status transitions from `initial` to `failed` immidiately. `DE78370400440532013004`|The Payment status transitions from `initial` to `failed` after 3 minutes. `DE35370400440532013002`|The Payment status transitions from `initial` to `completed` and then immidiately to `chargeback`. ## BACS Payment Method Testing Information SORT CODE |Account Number| Description ---|---|--- `108800 `| `00012345`| The Payment status transitions from `initial` to `completed` immidiately. `108800 `| `90012345`| The Payment status transitions from `initial` to `completed` after 3 minutes. `108800 `| `33333335`| The Payment status transitions from `initial` to `completed` and than immidiately changed to `Failed`. - [Value Added Services](https://docs-staging.payme.io/payments/introduction/value-added-services): At PayMe, We go beyond traditional financial solutions to offer a comprehensive suite of value-added services. These services are designed to enhance our clients' financial experiences and empower them with the tools they need for success. From the creation of invoices and security services to seamless integration with third-party platforms, our value-added services cater to the diverse needs of your business. # Value Added Services At PayMe, We go beyond traditional financial solutions to offer a comprehensive suite of value-added services. These services are designed to enhance our clients' financial experiences and empower them with the tools they need for success. From the creation of invoices and security services to seamless integration with third-party platforms, our value-added services cater to the diverse needs of your business. - [Payment Options](https://docs-staging.payme.io/payments/introduction/payment-options): We have three integration options: - [Hosted Payment Page](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale) - [Hosted Fields - JSAPI](https://docs-staging.payme.io/marketplaces-and-platforms/integrations/hosted-fields-jsapi-guide) - [Direct API](https://docs-staging.payme.io/marketplaces-and-platforms/integrations/direct-api-how-to-create-and-pay-sale) # Integration Options We have three integration options: - [Hosted Payment Page](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale) - [Hosted Fields - JSAPI](https://docs-staging.payme.io/marketplaces-and-platforms/integrations/hosted-fields-jsapi-guide) - [Direct API](https://docs-staging.payme.io/marketplaces-and-platforms/integrations/direct-api-how-to-create-and-pay-sale) Integration | Description | Advantages ✔️ | Disadvantages ❌ ---------|----------|---------|--------- [Hosted Payment Page](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale) | With this approach, the payment process is redirected to our secure payment gateway's website, where customers enter their payment details. We handle the transaction and send the result back to the merchant's website. | **Security**: Since the payment process occurs on our payment gateway's secure server, the merchant's website doesn't handle sensitive payment information directly, reducing the risk of data breaches. **Simplicity**: Implementing a hosted payment page is relatively straightforward, as PayMe handles most of the complex payment processing tasks for you. **Compliance**: The responsibility for meeting payment industry security standards, such as PCI DSS (Payment Card Industry Data Security Standard), lies with PayMe, relieving the merchant of some compliance burdens. | **Customization limitations**: Our hosted payment pages can't be customed designed, which may not seamlessly integrate with the merchant's website design. **Limited control**: As the payment process is handled by PayMe, the merchant has less control over the overall checkout experience and may be restricted in customizing certain features or functionalities. [Hosted Fields - JSAPI](https://docs-staging.payme.io/marketplaces-and-platforms/integrations/hosted-fields-jsapi-guide) | JSAPI (JavaScript API) payment integration allows you to embed payment forms directly into your website using JavaScript. This method enables a seamless payment experience for customers, without the need for redirection to an external page. | **Seamless user experience**: Customers can complete the entire payment process without leaving the merchant's website, enhancing convenience and reducing the risk of customer drop-off during checkout. **Design flexibility**: By integrating payment forms using JavaScript, merchants have more control over the appearance and customization of the payment interface, enabling a consistent brand experience. **Real-time response**: With JSAPI, payment responses can be processed in real-time, allowing for immediate feedback on the payment status and reducing the risk of potential payment errors or delays. | **Security considerations**: Handling sensitive data on the merchant's servers requires robust security measures. **Development complexity**: Requires advanced programming skills and maintenance of the payment system. [Direct API](https://docs-staging.payme.io/marketplaces-and-platforms/integrations/direct-api-how-to-create-and-pay-sale)| PayMe's API is integrated directly into your website or application. | **Customization and control**: Allows full control and customization of the payment process. **Enhanced security**: You can implement robust encryption and security measures according to your requirements. **Scalability and efficiency**: Facilitates real-time transaction updates and integrations with other systems. | **Development complexity**: Requires advanced programming skills and understanding of PayMe's API. **Compliance responsibility**: Merchant must meet security standards and ensure ongoing maintenance and updates (PCI-DSS level 1). - [Generate Payment](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale): POST /generate-sale — Generate Payment # Generate Payment - Sandbox: `POST https://sandbox.payme.io/api/generate-sale` - Production: `POST https://live.payme.io/api/generate-sale` ## Credentials - Request body field `seller_payme_id` (required): MPL. Your private key in PayMe system. ## Overview This endpoint can be used for the following actions: Action | Description ----|---- Basic Sale (J4) | Allows you to create a sale. Authorization (J5)| The requested amount gets reserved (blocked) on the credit card of the buyer for up to 168 hours. You can find more information in our [Capture Sale Guide](/marketplaces-and-platforms/payments/capture-sale). Template Payment Page | Enables many payments on a single sale link, by different buyers. You can find more information in our [Template Payment Page Guide](/marketplaces-and-platforms/payments/multi-payment-page). Create Payment With Buyer Key (Token)| Enables to capture token once the buyer pays (enter the payment details). You can find more information in our [Create Payment With Buyer Key (Token) Guide](/marketplaces-and-platforms/payments/create-payment-with-buyer-key-token). **See the request example below.** * For all the sale types see [Sale Types](/marketplaces-and-platforms/lists-statuses/sale-types). * For all the payment methods see [Available Payment Methods](/payments/direct-api/available-payment-methods). #### Callbacks Once the sale is paid successfully, we will notify the marketplace with the sale details with a POST of `type` `x-www-form-urlencoded` request to the marketplace Callback URL. You can find the sale callback attributes [Sale Callbacks](/marketplaces-and-platforms/lists-statuses/sale-callbacks). #### Issuing an Invoice for a Business In the case where you are connected to our invoices services, you can send the following parameters as a part of your `generate-sale` API request to us when paying using a Token (saved card) in our platform. Please add the following parameters to your request: Parameter Name|Parameter Type|Example & Limitations --|--|-- `buyer_business_name`| `string` | The name of the business the invoice should be issued for. `buyer_business_code` | `integer` | The business code (VAT identifier) of the company the invoice is issued for. #### Multi Payment Methods Checkout Page To allow the buyer to select the payment method by himself, use `sale_payment_method="multi"`. It will show your available payment methods (based on the added services in your account) in one payment page: Credit card, bit, ApplePay and GooglePay. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | MPL. Your private key in PayMe system. | | `sale_price` | number | yes | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075. Note that the minimum value is 500. | | `currency` | string | yes | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `product_name` | string | yes | Short name and description of the product/service. This text will be shown in the invoice as well, if the seller has enabled the invoices module in his account panel. Limited to 500 characters | | `transaction_id` | string | no | Merchant's unique sale ID for correlation with us | | `installments` | string | no | Amount of installments for the sale. We allow you to manually set the number of installments or to specify a top limit of installments for the buyer to choose from while paying. Setting a fixed number of installments is simply entering a number between 1 and 12. The sale will be initiated with this number of installments and the buyer will not be able to change it. To set a range for the buyer to choose from, enter the following: `103` - allow up to 3 installments `106` - allow up to 6 installments `109` - allow up to 9 installments `112` - allow up to 12 installments | | `market_fee` | number | no | A decimal representing the percent of the sale price that is collected for the marketplace (includes VAT). This fee is added on top of our fees and transferred to the marketplace once a month. Default value is the market fee of the Seller, as set upon Seller creation. | | `sale_send_notification` | boolean | no | Flag to send email and/or SMS notifications | | `sale_callback_url` | string | no | Callback response to your page regarding call to our API. Default value is taken from the Merchant's settings. Note that you may not send a "localhost" URL as value | | `sale_email` | string | no | In case sale send notification is true provide the address to send email notification | | `sale_return_url` | string | no | We will redirect the IFRAME and the buyer to this URL upon payment success. Default value is taken from the Merchant's settings | | `sale_mobile` | string | no | In case sale send notification is true, provide the phone number to send SMS notification, if the seller has enabled the SMS module in his account panel | | `sale_name` | string | no | The name that will be displayed when sending a notification | | `capture_buyer` | string | no | Flag for requesting the buyer's token for this payment (0 - do not capture token, 1 - capture token). For additional information see Tokens explanation below | | `buyer_perform_validation` | string | no | Flag for performing an online validation of the card with the Issuer. | | `sale_type` | string | no | You can find all the sale types [Sale Types](/marketplaces-and-platforms/lists-statuses/sale-types). | | `sale_payment_method` | string | no | the Payment method used to pay the sale. For all the payment methods see [Available Payment Methods](/payments/direct-api/available-payment-methods). To display multi payment methods use `multi`. | | `layout` | string | no | IFRAME payment page layout. Optional attribute which may be used with "bit" sale_payment_method. Avai lable layouts are:dynamic, qr-sms or dynamic-loose dynamic loose removes the validation for the social ID and CVV. | | `language` | string | no | Changes the language of the payment IFRAME to English, as well as the error messages. Default value is Hebrew (he) | | `order_number` | string | no | Purchase Order Number. Mandatory for level 2 / 3 card data. Maximum length: 15 digits | | `items` | array | no | This is an object that should include multiple arrays. An array for each product (item) that is a part of this sale. All parameters that are numeric or integer must be equal or more than 0. | | `items[].name` | string | no | Name of the Item Minimum length: 1 Character Maximum length: 50 Characters | | `items[].quantity` | integer | no | Number of items, Minimum length: 0 digits, Maximum length: 6 digits | | `items[].unit_price` | integer | no | Price of single unit in pennies, No length limitations | | `items[].unit_measurement` | string | no | Unit of measurment, Minimum length: 0 characters (nullable), Maximum length: 12 characters | | `items[].total` | integer | no | Total Price After Discount, Minimum length: 0 digits, Maximum length: 10 digits | | `items[].discount_total` | number | no | In negative pennies amount, Minimum length: 0 digits (nullable), Maximum length: 12 digits | | `items[].description` | string | no | The item description, Minimum length: 0 characters (nullable, Maximum length: 150 characters | | `items[].product_code` | string | no | The item catalog code. Minimum length: 0 characters (nullable), Maximum length: 100 characters | | `items[].commodity_code` | number | no | The item's commodity code, Minimum length: 0 digits (nullable), Maximum length: unlimited | | `fees` | object | no | Amount of tax in pennies No length | | `fees.tax` | number | no | The tax collected as a part of the payment - In pennies, Minimum length: 0, Maximum Length: 12 Digits | | `fees.duty` | number | no | The international fees collected as a part of the payment - In pennies, Minimum lenth: 0, Maximum Length: 12 Digits | | `fees.discount` | number | no | The total discount given for the payment - In pennies, Minimum length: 0, Maximum Length: 12 Digits | | `fees.shipping` | number | no | The shipping cost charged as a part of the payment - In pennies, Minimum lenth: 0, Maximum Length: 12 Digits | | `shipping_details` | object | no | | | `shipping_details.name` | string | no | Individual's full name/Company's name, Maximum Length: 50 Characters | | `shipping_details.email` | string | no | Email address of the addressee, Maximum Length: 100 Characters | | `shipping_details.phone` | string | no | Phone number of the addressee, Maximum Length: 50 Characters | | `shipping_details.address` | object | no | Address Object | | `shipping_details.address.line1` | string | no | Line 1 of the shipping address, No Limits. | | `shipping_details.address.line2` | string | no | Line 1 of the shipping address, No Limits. | | `shipping_details.address.postal_code` | string | no | Postal code of the shipping address, No Limits. | | `shipping_details.address.city` | string | no | City of the shipping address, No Limits. | | `shipping_details.address.state` | string | no | State of the shipping address, No Limits. | | `shipping_details.address.country` | string | no | Country of the shipping address, No Limits. | | `billing_details` | object | no | | | `billing_details.name` | string | no | Individual's full name/Company's name, No Limits. | | `billing_details.email` | string | no | Email address of the payer, No Limits. | | `billing_details.phone` | string | no | Phone number of the payer, No Limits. | | `billing_details.address` | object | no | | | `billing_details.address.line1` | string | no | Line 1 of the billing address, No Limits. | | `billing_details.address.line2` | string | no | Line 2 of the billing address, No Limits. | | `billing_details.address.postal_code` | string | no | Postal code of the billing address No Limits. | | `billing_details.address.city` | string | no | City of the billing address, No Limits. | | `billing_details.address.state` | string | no | State of the shipping address, No Limits. | | `billing_details.address.country` | string | no | Country of the billing address, No Limits. | | `buyer_name` | string | no | Buyer's name | | `buyer_email` | string | no | Buyer's email | | `buyer_phone` | string | no | Buyer's phone | ### Request example ```json { "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": true, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "capture_buyer": "0", "buyer_perform_validation": false, "sale_type": "sale", "sale_payment_method": "credit-card", "language": "he" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/generate-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": true, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "capture_buyer": "0", "buyer_perform_validation": false, "sale_type": "sale", "sale_payment_method": "credit-card", "language": "he" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/generate-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": true, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "capture_buyer": "0", "buyer_perform_validation": false, "sale_type": "sale", "sale_payment_method": "credit-card", "language": "he" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/generate-sale", json={ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": True, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "capture_buyer": "0", "buyer_perform_validation": False, "sale_type": "sale", "sale_payment_method": "credit-card", "language": "he", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Sale Created Successfully (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0 - success, 1 - error) | | `sale_url` | string | The URL of the IFRAME secured payment form to display to the buyer | | `payme_sale_id` | string | Our unique sale ID | | `payme_sale_code` | number | Our unique sale code (for display purposes only) | | `price` | number | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `transaction_id` | string | Merchant's unique sale ID for correlation with us | | `currency` | string | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | ```json { "status_code": 0, "sale_url": "https://preprod.paymeservice.com/sale/generate/XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_code": 12345678, "price": 10000, "transaction_id": "12345", "currency": "USD" } ``` ### 500 — Missing Required Information (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 1, "status_error_details": "קישור משתמש לא נמצא", "status_additional_info": null, "status_error_code": 251 } ``` - [Generate Multi Checkout Payment](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale-2): How to call POST /generate-sale for Hosted Payment Page. # Generate Multi Checkout Payment This is a variant of [POST /generate-sale — Generate Payment](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale); the request and responses below are the ones documented for Hosted Payment Page. - Sandbox: `POST https://sandbox.payme.io/api/generate-sale` - Production: `POST https://live.payme.io/api/generate-sale` ## Credentials - Request body field `seller_payme_id` (required): MPL. Your private key in PayMe system. ## Overview This endpoint allows the buyer to select the payment method prefered by him. It will show your available payment methods, based on the added services in your account, in one payment page: Credit card, bit, ApplePay and GooglePay. This endpoint can be used for the following actions: Action | Description ----|---- Basic Sale (J4) | Allows you to create a sale. Authorization (J5)| The requested amount gets reserved (blocked) on the credit card of the buyer for up to 168 hours. You can find more information in our [Capture Sale Guide](https://docs-staging.payme.io/marketplaces-and-platforms/payments/capture-sale). Template Payment Page | Enables many payments on a single sale link, by different buyers. You can find more information in our [Template Payment Page Guide](https://docs-staging.payme.io/marketplaces-and-platforms/payments/multi-payment-page). **See the request example below.** #### Callbacks Once the sale is paid successfully, we will notify the marketplace with the sale details with a POST of `type` `x-www-form-urlencoded` request to the marketplace Callback URL. You can find the sale callback attributes [Sale Callbacks](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-callbacks). #### Issuing an Invoice for a Business In the case where you are connected to our invoices services, you can send the following parameters as a part of your `generate-sale` API request to us when paying using a Token (saved card) in our platform. Please add the following parameters to your request: Parameter Name|Parameter Type|Example & Limitations --|--|-- `buyer_business_name`| `string` | The name of the business the invoice should be issued for. `buyer_business_code` | `integer` | The business code (VAT identifier) of the company the invoice is issued for. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | MPL. Your private key in PayMe system. | | `sale_price` | number | yes | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075. Note that the minimum value is 500. | | `currency` | string | yes | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `product_name` | string | yes | Short name and description of the product/service. This text will be shown in the invoice as well, if the seller has enabled the invoices module in his account panel. Limited to 500 characters | | `transaction_id` | string | no | Merchant's unique sale ID for correlation with us | | `installments` | string | no | Amount of installments for the sale. We allow you to manually set the number of installments or to specify a top limit of installments for the buyer to choose from while paying. Setting a fixed number of installments is simply entering a number between 1 and 12. The sale will be initiated with this number of installments and the buyer will not be able to change it. To set a range for the buyer to choose from, enter the following: `103` - allow up to 3 installments `106` - allow up to 6 installments `109` - allow up to 9 installments `112` - allow up to 12 installments | | `market_fee` | number | no | A decimal representing the percent of the sale price that is collected for the marketplace (includes VAT). This fee is added on top of our fees and transferred to the marketplace once a month. Default value is the market fee of the Seller, as set upon Seller creation. | | `sale_send_notification` | boolean | no | Flag to send email and/or SMS notifications | | `sale_callback_url` | string | no | Callback response to your page regarding call to our API. Default value is taken from the Merchant's settings. Note that you may not send a "localhost" URL as value | | `sale_email` | string | no | In case sale send notification is true provide the address to send email notification | | `sale_return_url` | string | no | We will redirect the IFRAME and the buyer to this URL upon payment success. Default value is taken from the Merchant's settings | | `sale_mobile` | string | no | In case sale send notification is true, provide the phone number to send SMS notification, if the seller has enabled the SMS module in his account panel | | `sale_name` | string | no | The name that will be displayed when sending a notification | | `buyer_perform_validation` | string | no | Flag for performing an online validation of the card with the Issuer. | | `sale_type` | string | no | You can find all the sale types [Sale Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-types). | | `sale_payment_method` | string | no | The buyer will be able to select his payment method. | | `layout` | string | no | IFRAME payment page layout. Optional attribute which may be used with "bit" sale_payment_method. Avai lable layouts are:dynamic, qr-sms or dynamic-loose dynamic loose removes the validation for the social ID and CVV. | | `language` | string | no | Changes the language of the payment IFRAME to English, as well as the error messages. Default value is Hebrew (he) | | `order_number` | string | no | Purchase Order Number. Mandatory for level 2 / 3 card data. Maximum length: 15 digits | | `items` | array | no | This is an object that should include multiple arrays. An array for each product (item) that is a part of this sale. All parameters that are numeric or integer must be equal or more than 0. | | `items[].name` | string | no | Name of the Item Minimum length: 1 Character Maximum length: 50 Characters | | `items[].quantity` | integer | no | Number of items, Minimum length: 0 digits, Maximum length: 6 digits | | `items[].unit_price` | integer | no | Price of single unit in pennies, No length limitations | | `items[].unit_measurement` | string | no | Unit of measurment, Minimum length: 0 characters (nullable), Maximum length: 12 characters | | `items[].total` | integer | no | Total Price After Discount, Minimum length: 0 digits, Maximum length: 10 digits | | `items[].discount_total` | number | no | In negative pennies amount, Minimum length: 0 digits (nullable), Maximum length: 12 digits | | `items[].description` | string | no | The item description, Minimum length: 0 characters (nullable, Maximum length: 150 characters | | `items[].product_code` | string | no | The item catalog code. Minimum length: 0 characters (nullable), Maximum length: 100 characters | | `items[].commodity_code` | number | no | The item's commodity code, Minimum length: 0 digits (nullable), Maximum length: unlimited | | `fees` | object | no | Amount of tax in pennies No length | | `fees.tax` | number | no | The tax collected as a part of the payment - In pennies, Minimum length: 0, Maximum Length: 12 Digits | | `fees.duty` | number | no | The international fees collected as a part of the payment - In pennies, Minimum lenth: 0, Maximum Length: 12 Digits | | `fees.discount` | number | no | The total discount given for the payment - In pennies, Minimum length: 0, Maximum Length: 12 Digits | | `fees.shipping` | number | no | The shipping cost charged as a part of the payment - In pennies, Minimum lenth: 0, Maximum Length: 12 Digits | | `shipping_details` | object | no | | | `shipping_details.name` | string | no | Individual's full name/Company's name, Maximum Length: 50 Characters | | `shipping_details.email` | string | no | Email address of the addressee, Maximum Length: 100 Characters | | `shipping_details.phone` | string | no | Phone number of the addressee, Maximum Length: 50 Characters | | `shipping_details.address` | object | no | Address Object | | `shipping_details.address.line1` | string | no | Line 1 of the shipping address, No Limits. | | `shipping_details.address.line2` | string | no | Line 1 of the shipping address, No Limits. | | `shipping_details.address.postal_code` | string | no | Postal code of the shipping address, No Limits. | | `shipping_details.address.city` | string | no | City of the shipping address, No Limits. | | `shipping_details.address.state` | string | no | State of the shipping address, No Limits. | | `shipping_details.address.country` | string | no | Country of the shipping address, No Limits. | | `billing_details` | object | no | | | `billing_details.name` | string | no | Individual's full name/Company's name, No Limits. | | `billing_details.email` | string | no | Email address of the payer, No Limits. | | `billing_details.phone` | string | no | Phone number of the payer, No Limits. | | `billing_details.address` | object | no | | | `billing_details.address.line1` | string | no | Line 1 of the billing address, No Limits. | | `billing_details.address.line2` | string | no | Line 2 of the billing address, No Limits. | | `billing_details.address.postal_code` | string | no | Postal code of the billing address No Limits. | | `billing_details.address.city` | string | no | City of the billing address, No Limits. | | `billing_details.address.state` | string | no | State of the shipping address, No Limits. | | `billing_details.address.country` | string | no | Country of the billing address, No Limits. | | `buyer_name` | string | no | Buyer's name | | `buyer_email` | string | no | Buyer's email | | `buyer_phone` | string | no | Buyer's phone | ### Request example ```json { "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": true, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "buyer_perform_validation": false, "sale_type": "sale", "sale_payment_method": "multi", "language": "he" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/generate-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": true, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "buyer_perform_validation": false, "sale_type": "sale", "sale_payment_method": "multi", "language": "he" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/generate-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": true, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "buyer_perform_validation": false, "sale_type": "sale", "sale_payment_method": "multi", "language": "he" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/generate-sale", json={ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": True, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "buyer_perform_validation": False, "sale_type": "sale", "sale_payment_method": "multi", "language": "he", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Sale Created Successfully (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0 - success, 1 - error) | | `sale_url` | string | The URL of the IFRAME secured payment form to display to the buyer | | `payme_sale_id` | string | Our unique sale ID | | `payme_sale_code` | number | Our unique sale code (for display purposes only) | | `price` | number | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `transaction_id` | string | Merchant's unique sale ID for correlation with us | | `currency` | string | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | ```json { "status_code": 0, "sale_url": "https://preprod.paymeservice.com/sale/generate/XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_code": 12345678, "price": 10000, "transaction_id": "12345", "currency": "USD" } ``` ### 500 — Missing Required Information (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 1, "status_error_details": "קישור משתמש לא נמצא", "status_additional_info": null, "status_error_code": 251 } ``` - [Generate Payment with Token](https://docs-staging.payme.io/payments/hosted-fields-jsapi/post-generate-sale-hosted-fields-jsapi): How to call POST /generate-sale for Hosted Fields - JSAPI. # Generate Payment with Token This is a variant of [POST /generate-sale — Generate Payment](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale); the request and responses below are the ones documented for Hosted Fields - JSAPI. - Sandbox: `POST https://sandbox.payme.io/api/generate-sale` - Production: `POST https://live.payme.io/api/generate-sale` ## Credentials - Request body field `seller_payme_id` (required): MPL. Your private key in PayMe system. ## Overview This endpoint can be used for the following actions: Action | Description ----|---- Basic Sale (J4) | Allows you to create a sale. Authorization (J5)| The requested amount gets reserved (blocked) on the credit card of the buyer for up to 168 hours. You can find more information in our [Capture Sale Guide](https://docs-staging.payme.io/marketplaces-and-platforms/payments/capture-sale). Please note that you have to create a payment with token (Buyer Key). That enables to capture token once the buyer pays (enter the payment details). You can find more information in our [Create Payment With Buyer Key (Token) Guide](https://docs-staging.payme.io/marketplaces-and-platforms/payments/create-payment-with-buyer-key-token). **See the request example below.** * For all the sale types see [Sale Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-types). #### Callbacks Once the sale is paid successfully, we will notify the marketplace with the sale details with a POST of `type` `x-www-form-urlencoded` request to the marketplace Callback URL. You can find the sale callback attributes [Sale Callbacks](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-callbacks). #### Issuing an Invoice for a Business In the case where you are connected to our invoices services, you can send the following parameters as a part of your `generate-sale` API request to us when paying using a Token (saved card) in our platform. Please add the following parameters to your request: Parameter Name|Parameter Type|Example & Limitations --|--|-- `buyer_business_name`| `string` | The name of the business the invoice should be issued for. `buyer_business_code` | `integer` | The business code (VAT identifier) of the company the invoice is issued for. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | MPL. Your private key in PayMe system. | | `sale_price` | number | yes | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075. Note that the minimum value is 500. | | `currency` | string | yes | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `product_name` | string | yes | Short name and description of the product/service. This text will be shown in the invoice as well, if the seller has enabled the invoices module in his account panel. Limited to 500 characters | | `transaction_id` | string | no | Merchant's unique sale ID for correlation with us | | `installments` | string | no | Amount of installments for the sale. We allow you to manually set the number of installments or to specify a top limit of installments for the buyer to choose from while paying. Setting a fixed number of installments is simply entering a number between 1 and 12. The sale will be initiated with this number of installments and the buyer will not be able to change it. To set a range for the buyer to choose from, enter the following: `103` - allow up to 3 installments `106` - allow up to 6 installments `109` - allow up to 9 installments `112` - allow up to 12 installments | | `market_fee` | number | no | A decimal representing the percent of the sale price that is collected for the marketplace (includes VAT). This fee is added on top of our fees and transferred to the marketplace once a month. Default value is the market fee of the Seller, as set upon Seller creation. | | `sale_send_notification` | boolean | no | Flag to send email and/or SMS notifications | | `sale_callback_url` | string | no | Callback response to your page regarding call to our API. Default value is taken from the Merchant's settings. Note that you may not send a "localhost" URL as value | | `sale_email` | string | no | In case sale send notification is true provide the address to send email notification | | `sale_return_url` | string | no | We will redirect the IFRAME and the buyer to this URL upon payment success. Default value is taken from the Merchant's settings | | `sale_mobile` | string | no | In case sale send notification is true, provide the phone number to send SMS notification, if the seller has enabled the SMS module in his account panel | | `sale_name` | string | no | The name that will be displayed when sending a notification | | `capture_buyer` | string | no | Flag for requesting the buyer's token for this payment (0 - do not capture token, 1 - capture token). For additional information see Tokens explanation below | | `buyer_perform_validation` | boolean | no | Flag for performing an online validation of the card with the Issuer. | | `sale_type` | string | no | You can find all the sale types [Sale Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-types). | | `sale_payment_method` | string | no | the Payment method used to pay the sale. For all the payment methods see [Available Payment Methods](https://docs-staging.payme.io/payments/direct-api/available-payment-methods). | | `layout` | string | no | IFRAME payment page layout. Optional attribute which may be used with "bit" sale_payment_method. Avai lable layouts are:dynamic, qr-sms or dynamic-loose dynamic loose removes the validation for the social ID and CVV. | | `language` | string | no | Changes the language of the payment IFRAME to English, as well as the error messages. Default value is Hebrew (he) | | `order_number` | string | no | Purchase Order Number | | `items` | array | no | This is an object that should include multiple arrays. An array for each product (item) that is a part of this sale. | | `items[].name` | string | no | Name of the Item Minimum length: 1 Character Maximum length: 50 Characters | | `items[].quantity` | integer | no | Number of items, Minimum length: 0 digits, Maximum length: 6 digits | | `items[].unit_price` | integer | no | Price of single unit in pennies, No length limitations | | `items[].unit_measurement` | string | no | Unit of measurment, Minimum length: 0 characters (nullable), Maximum length: 12 characters | | `items[].total` | integer | no | Total Price After Discount, Minimum length: 0 digits, Maximum length: 10 digits | | `items[].discount_total` | number | no | In negative pennies amount, Minimum length: 0 digits (nullable), Maximum length: 12 digits | | `items[].description` | string | no | The item description, Minimum length: 0 characters (nullable, Maximum length: 150 characters | | `items[].product_code` | string | no | The item catalog code. Minimum length: 0 characters (nullable), Maximum length: 100 characters | | `items[].commodity_code` | number | no | The item's commodity code, Minimum length: 0 digits (nullable), Maximum length: unlimited | | `fees` | object | no | Amount of tax in pennies | | `fees.tax` | number | no | The tax collected as a part of the payment - In pennies, Minimum length: 0, Maximum Length: 12 Digits | | `fees.duty` | number | no | The international fees collected as a part of the payment - In pennies, Minimum lenth: 0, Maximum Length: 12 Digits | | `fees.discount` | number | no | The total discount given for the payment - In pennies, Minimum length: 0, Maximum Length: 12 Digits | | `fees.shipping` | number | no | The shipping cost charged as a part of the payment - In pennies, Minimum lenth: 0, Maximum Length: 12 Digits | | `shipping_details` | object | no | | | `shipping_details.name` | string | no | Individual's full name/Company's name, Maximum Length: 50 Characters | | `shipping_details.email` | string | no | Email address of the addressee, Maximum Length: 100 Characters | | `shipping_details.phone` | string | no | Phone number of the addressee, Maximum Length: 50 Characters | | `shipping_details.address` | object | no | Address Object | | `shipping_details.address.line1` | string | no | Line 1 of the shipping address, No Limits. | | `shipping_details.address.line2` | string | no | Line 1 of the shipping address, No Limits. | | `shipping_details.address.postal_code` | string | no | Postal code of the shipping address, No Limits. | | `shipping_details.address.city` | string | no | City of the shipping address, No Limits. | | `shipping_details.address.state` | string | no | State of the shipping address, No Limits. | | `shipping_details.address.country` | string | no | Country of the shipping address, No Limits. | | `billing_details` | object | no | | | `billing_details.name` | string | no | Individual's full name/Company's name, No Limits. | | `billing_details.email` | string | no | Email address of the payer, No Limits. | | `billing_details.phone` | string | no | Phone number of the payer, No Limits. | | `billing_details.address` | object | no | | | `billing_details.address.line1` | string | no | Line 1 of the billing address, No Limits. | | `billing_details.address.line2` | string | no | Line 2 of the billing address, No Limits. | | `billing_details.address.postal_code` | string | no | Postal code of the billing address No Limits. | | `billing_details.address.city` | string | no | City of the billing address, No Limits. | | `billing_details.address.state` | string | no | State of the shipping address, No Limits. | | `billing_details.address.country` | string | no | Country of the billing address, No Limits. | ### Request example ```json { "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": true, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "capture_buyer": false, "buyer_perform_validation": false, "sale_type": "sale", "sale_payment_method": "credit-card", "layout": "string", "language": "he" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/generate-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": true, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "capture_buyer": false, "buyer_perform_validation": false, "sale_type": "sale", "sale_payment_method": "credit-card", "layout": "string", "language": "he" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/generate-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": true, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "capture_buyer": false, "buyer_perform_validation": false, "sale_type": "sale", "sale_payment_method": "credit-card", "layout": "string", "language": "he" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/generate-sale", json={ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": True, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "capture_buyer": False, "buyer_perform_validation": False, "sale_type": "sale", "sale_payment_method": "credit-card", "layout": "string", "language": "he", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Sale Created Successfully (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0 - success, 1 - error) | | `sale_url` | string | The URL of the IFRAME secured payment form to display to the buyer | | `payme_sale_id` | string | Our unique sale ID | | `payme_sale_code` | number | Our unique sale code (for display purposes only) | | `price` | number | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `transaction_id` | string | Merchant's unique sale ID for correlation with us | | `currency` | string | Sale currency. 3-letter ISO 4217 name | ```json { "status_code": 0, "sale_url": "https://preprod.paymeservice.com/sale/generate/XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_code": 12345678, "price": 10000, "transaction_id": "12345", "currency": "USD" } ``` ### 500 — Missing Required Information (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 1, "status_error_details": "קישור משתמש לא נמצא", "status_additional_info": null, "status_error_code": 251 } ``` - [Available Payment Methods](https://docs-staging.payme.io/payments/direct-api/available-payment-methods): As PayMe offers different payment methods, you can use the `sale_payment_method` parameter in [`generate-sale`](https://docs-staging.payme.io/payments) to set your desired payment method. # Payment Methods As PayMe offers different payment methods, you can use the `sale_payment_method` parameter in [`generate-sale`](https://docs-staging.payme.io/payments) to set your desired payment method. Payment Method | Payment Method Type | PayMe `payment_method` code | API Value ---|---|---|--- Credit Card | Card Payment | 1 | credit-card Bank Transfer| Bank Transfer Payment | 2 | bank-transfer PayPal| Card/Wallet Payment | 3 | paypal Alipay QR| Wallet Payment | 4 | alipay-qr Alipay Online| Wallet Payment | 5 | alipay-online Funds Transfer| Bank Transfer Payment | 6 | funds-transfer Cash | Cash Payment | 7 | cash Cheque | Cheque Payment | 8 |cheque eCheck | Online Bank Transfer | 9 | echeck Bit| Wallet | 10 | bit BACS| Online Bank Transfer | 11 | bacs SEPA |Online Bank Transfer | 12 | sepa ApplePay| Wallet| 14 | apple-pay IL Direct Debit| Online Bank Transfer | 15 | il-direct-debit Verifone Prepaid| Prepaid card | 16 | verifone-prepaid GooglePay | Wallet | 18 | google-pay - [Pay Sale](https://docs-staging.payme.io/payments/direct-api/post-pay-sale): POST /pay-sale — Pay Sale # Pay Sale - Sandbox: `POST https://sandbox.payme.io/api/pay-sale` - Production: `POST https://live.payme.io/api/pay-sale` ## Credentials - Request body field `seller_payme_id` (required): Our unique seller ID ## Overview **This endpoint can be used only if you are using our Direct Integration method.** This endpoint allows you to pay on a sale you created. By sending this request, a few actions occur: the sale is processed, the buyer is charged, and you receive an asynchronous response with the sale data. You can find more information in the following guide - [Direct API - How to create and pay sale](/marketplaces-and-platforms/integrations/direct-api-how-to-create-and-pay-sale). ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | Our unique seller ID | | `sale_price` | string | yes | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075. Note that the minimum value is 500. | | `currency` | string | yes | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `installments` | string | yes | Amount of installments for the sale. | | `language` | string | no | The language of the response and callback. | | `sale_callback_url` | string | no | Callback response to your page regarding call to our API. Default value is taken from the Merchant's settings. Note that you may not send a "localhost" URL as value | | `sale_return_url` | string | yes | Once the payment was completed successfully, the user will be redirected to this URL | | `capture_buyer` | number | no | Flag for requesting the buyer's token for this payment (0 - do not capture token, 1 - capture token). For additional information see Tokens explanation below | | `buyer_key` | string | yes | Buyer key for an instant-payment with the token. This key is received through the use of capture_buyer. Note that this attribute cannot co-exist with the capture_buyer parameter in the same request | | `payme_sale_id` | string | yes | Our unique sale ID | | `credit_card_number` | number | yes | The card the transaction will be paid with. | | `credit_card_exp` | string | yes | The expiration date of the card used to pay for the transaction (MM/YY) | | `credit_card_cvv` | string | yes | The CVV of the card used to pay for the transaction. (3/4 digit code) | ### Request example ```json { "seller_payme_id": "string", "sale_price": "string", "currency": "string", "installments": "string", "sale_return_url": "string", "capture_buyer": 0, "buyer_key": "string", "payme_sale_id": "string", "credit_card_number": 0, "credit_card_exp": "string", "credit_card_cvv": 0 } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/pay-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "string", "sale_price": "string", "currency": "string", "installments": "string", "sale_return_url": "string", "capture_buyer": 0, "buyer_key": "string", "payme_sale_id": "string", "credit_card_number": 0, "credit_card_exp": "string", "credit_card_cvv": 0 }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/pay-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "string", "sale_price": "string", "currency": "string", "installments": "string", "sale_return_url": "string", "capture_buyer": 0, "buyer_key": "string", "payme_sale_id": "string", "credit_card_number": 0, "credit_card_exp": "string", "credit_card_cvv": 0 }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/pay-sale", json={ "seller_payme_id": "string", "sale_price": "string", "currency": "string", "installments": "string", "sale_return_url": "string", "capture_buyer": 0, "buyer_key": "string", "payme_sale_id": "string", "credit_card_number": 0, "credit_card_exp": "string", "credit_card_cvv": 0, }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the capture request (0 - success, 1 - error) | | `payme_status` | string | PayMe's payment status (success/failure) | | `payme_sale_id` | string | PayMe's unique Sale ID | | `payme_sale_code` | number | PayMe's unique Sale code | | `sale_created` | string | The date the sale was created (timestamp) | | `payme_sale_status` | string | PayMe's sale status | | `sale_status` | string | Sale status | | `currency` | string | Sale currency. 3-letter ISO 4217 name | | `transaction_id` | string | Transaction ID | | `is_token_sale` | boolean | Was the card tokenized or not | | `price` | number | Payment price | | `payme_signature` | string | PayMe's signature for the payment | | `payme_transaction_id` | string | PayMe transaction ID | | `payme_transaction_total` | string | Transaction total amount | | `payme_transaction_card_brand` | string | The card brand | | `payme_transaction_auth_number` | string | Transaction authorization number | | `payme_transaction_voucher` | string | PayMe's transaction voucher | | `buyer_name` | string | Buyer's full name | | `buyer_email` | string | Buyer's email address | | `buyer_phone` | string | Buyer's phone number | | `buyer_card_mask` | string | Card mask | | `buyer_card_exp` | string | Buyer's card expiration date | | `buyer_card_is_foreign` | boolean | Is the card foreign or domestic? (For IL Sellers only) | | `buyer_social_id` | string | Buyer's social ID number | | `installments` | number | Number of installments used for the payment | | `sale_paid_date` | string | Sale paid date | ```json { "status_code": 0, "redirect_url": null, "payme_status": "string", "status_error_code": 0, "payme_sale_id": "string", "payme_sale_code": 0, "sale_created": "string", "payme_sale_status": "string", "sale_status": "string", "currency": "string", "transaction_id": "string", "is_token_sale": true, "price": 0, "payme_signature": "string", "payme_transaction_id": "string", "payme_transaction_total": "string", "payme_transaction_card_brand": "string", "payme_transaction_auth_number": "string", "payme_transaction_voucher": "string", "buyer_name": "string", "buyer_email": "string", "buyer_phone": null, "buyer_card_mask": "string", "buyer_card_exp": "string", "buyer_card_is_foreign": true, "buyer_social_id": null, "installments": 0, "sale_paid_date": "string", "sale_release_date": null } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 0, "status_error_details": "string", "status_additional_info": "string", "status_error_code": 0 } ``` - [Order New POS Device](https://docs-staging.payme.io/payments/point-of-sale-pos/post-vas-enable): POST /vas-enable — Order New POS Device # Order New POS Device - Sandbox: `POST https://sandbox.payme.io/api/vas-enable` - Production: `POST https://live.payme.io/api/vas-enable` ## Credentials - Request body field `payme_client_key` (required): The PayMe Secret Client Key - Request body field `seller_payme_id` (required): The unique seller identifier (MPL). ## Overview In order to be initiate the process of receiving a physical Point Of Sale (POS) device, you will first need to generate a new request to `https://.payme.io/api/vas-enable` using your personal VAS identifier. Once the VAS is activated, the process will be initiated and the following operations will take place: 1. New terminal request (takes up to 5 business days) 2. Physical device internal preparation (Immediate once terminal is ready) The API request for activating the service will look as follows: ### 1st step Add the payment method via `vas-enable` ``` { "payme_client_key": "payme_client_key", "seller_payme_id": "seller_payme_id", "vas_payme_id": "vas_payme_id" } ``` ### 2nd step Add the device type via `vas-enable` ``` { "payme_client_key": "payme", "seller_payme_id":"MPL15991-MPL15991-MPL15991-MPL15991", "vas_payme_id": "VASL1545-8192915E-8192915E-8192915E", "extend_items": true, "vas_data": { "number_of_devices": 3, "items":[ { "pos_id": "123", "shipping_address": "address of shipping", "name": "name of the device" }, { "pos_id": "123", "shipping_address": "address of shipping", "name": "name of the device" } ] } } ``` Once the VAS is activated, the process will be synchronous and there's no further action required to be completed by the partner or seller until receiving the device and starting to process immidiately. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | The PayMe Secret Client Key | | `seller_payme_id` | string | yes | The unique seller identifier (MPL). | | `vas_payme_id` | string | yes | The unique activation key. | | `vas_data` | object | yes | The predefined data object that allows you to request specific device amount and a per device information. | | `vas_data.number_of_devices` | integer | yes | The number of requested devices. | | `vas_data.items` | array | yes | The devices array. The items count must be equal to `number_of_devices` value. | | `vas_data.items[].pos_id` | string | yes | The unique POS ID. This ID will be used in order to send payment request to the specific device. | | `vas_data.items[].shipping_address` | string | yes | The shipping address for the physical device. | | `vas_data.items[].name` | string | yes | The name of the device. Will be used internally for the setup process. | | `extend_items` | boolean | yes | | ### Request example ```json { "payme_client_key": "icount", "seller_payme_id": "MPL90009-90009EXM-EXAMPLE0-EXAMPLE9", "vas_payme_id": "VASL1545-8192915E-5NTSEUM1-03YNFWNU", "vas_data": { "number_of_devices": 3, "items": [ { "pos_id": "123", "shipping_address": "address of shipping", "name": "name of the device" }, { "pos_id": "123", "shipping_address": "address of shipping", "name": "name of the device" } ] } } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/vas-enable' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "icount", "seller_payme_id": "MPL90009-90009EXM-EXAMPLE0-EXAMPLE9", "vas_payme_id": "VASL1545-8192915E-5NTSEUM1-03YNFWNU", "vas_data": { "number_of_devices": 3, "items": [ { "pos_id": "123", "shipping_address": "address of shipping", "name": "name of the device" }, { "pos_id": "123", "shipping_address": "address of shipping", "name": "name of the device" } ] } }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/vas-enable", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "icount", "seller_payme_id": "MPL90009-90009EXM-EXAMPLE0-EXAMPLE9", "vas_payme_id": "VASL1545-8192915E-5NTSEUM1-03YNFWNU", "vas_data": { "number_of_devices": 3, "items": [ { "pos_id": "123", "shipping_address": "address of shipping", "name": "name of the device" }, { "pos_id": "123", "shipping_address": "address of shipping", "name": "name of the device" } ] } }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/vas-enable", json={ "payme_client_key": "icount", "seller_payme_id": "MPL90009-90009EXM-EXAMPLE0-EXAMPLE9", "vas_payme_id": "VASL1545-8192915E-5NTSEUM1-03YNFWNU", "vas_data": { "number_of_devices": 3, "items": [ { "pos_id": "123", "shipping_address": "address of shipping", "name": "name of the device", }, { "pos_id": "123", "shipping_address": "address of shipping", "name": "name of the device", }, ], }, }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | string | The status code. | | `seller_payme_id` | string | The unique seller ID. | | `message` | string | The message for either success of failure. | ```json { "status_code": 2, "seller_payme_id": "MPL00010-00010EXM-EXAMPLE0-EXAMPLE0", "message": "Zendesk ticket created" } ``` - [Pair New Device](https://docs-staging.payme.io/payments/point-of-sale-pos/post-pair): POST /vas/pos/pair — Pair New Device # Pair New Device - Sandbox: `POST https://sandbox.payme.io/api/vas/pos/pair` - Production: `POST https://live.payme.io/api/vas/pos/pair` ## Credentials - Request body field `payme_client_key` (required): Your private API Key - Request body field `seller_payme_id` (required): Your Merchant's unique ID in our system ## Overview This method is used to pair a stand-alone terminal to a POS/ECR. Each stand-alone terminal has a unique ID that is used in the paring process, this method is called first and then the pairing process is finalized by calling the authenticate method. Target URLs As a part of the pairing process, the devices will be numbered automatically - The first device - 001 and onwards. When initiating a payment request, you will need to use this identifier and mention it as a part of the API endpoint `sales` request. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | Your private API Key | | `seller_payme_id` | string | yes | Your Merchant's unique ID in our system | | `pos_id` | string | yes | The ID you must choose for your POS. Must be a string of digits, between "001" and "999" | | `terminal_id` | string | yes | A unique payment terminal identifier, this ID is displayed on the POS in the pairing process | | `name` | string | no | The name of the POS, this will be displayed on the devices screen. Usually this is the Merchant's name | ### Request example ```json { "payme_client_key": "partner_key", "seller_payme_id": "MPLXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "pos_id": "001", "terminal_id": "9000015000", "name": "John Doe" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/vas/pos/pair' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "partner_key", "seller_payme_id": "MPLXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "pos_id": "001", "terminal_id": "9000015000", "name": "John Doe" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/vas/pos/pair", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "partner_key", "seller_payme_id": "MPLXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "pos_id": "001", "terminal_id": "9000015000", "name": "John Doe" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/vas/pos/pair", json={ "payme_client_key": "partner_key", "seller_payme_id": "MPLXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "pos_id": "001", "terminal_id": "9000015000", "name": "John Doe", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0: success, otherwise error) | ```json { "status_code": 0 } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0: success, otherwise error) | | `status_error_details` | string | Error message to the client | | `status_additional_info` | string | Additional error information | | `status_error_code` | number | Our unique error code | ```json { "status_code": 1, "status_error_details": "Wrong terminalID", "status_additional_info": null, "status_error_code": -1001 } ``` - [Authenticate New Device](https://docs-staging.payme.io/payments/point-of-sale-pos/post-authenticate): POST /vas/pos/authenticate — Authenticate New Device # Authenticate New Device - Sandbox: `POST https://sandbox.payme.io/api/vas/pos/authenticate` - Production: `POST https://live.payme.io/api/vas/pos/authenticate` ## Credentials - Request body field `payme_client_key` (required): Your private API Key - Request body field `seller_payme_id` (required): Your Merchant's unique ID in our system ## Overview This method completes the pairing process started with the pair method. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | Your private API Key | | `seller_payme_id` | string | yes | Your Merchant's unique ID in our system | | `pos_id` | string | yes | The ID you must choose for your POS. Must be a string of digits, between "001" and "999" | | `terminal_id` | string | yes | A unique payment terminal identifier, this ID is displayed on the POS in the pairing process | | `verification_code` | string | no | OTP as displayed on the POS device | ### Request example ```json { "payme_client_key": "partner_key", "seller_payme_id": "MPLXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "pos_id": "001", "terminal_id": "9000015000", "verification_code": "123987" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/vas/pos/authenticate' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "partner_key", "seller_payme_id": "MPLXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "pos_id": "001", "terminal_id": "9000015000", "verification_code": "123987" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/vas/pos/authenticate", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "partner_key", "seller_payme_id": "MPLXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "pos_id": "001", "terminal_id": "9000015000", "verification_code": "123987" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/vas/pos/authenticate", json={ "payme_client_key": "partner_key", "seller_payme_id": "MPLXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "pos_id": "001", "terminal_id": "9000015000", "verification_code": "123987", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) - [New POS Payment](https://docs-staging.payme.io/payments/point-of-sale-pos/post-payment): POST /sales — New POS Payment # New POS Payment - Sandbox: `POST https://sandbox.payme.io/api/sales` - Production: `POST https://live.payme.io/api/sales` ## Credentials - Request body field `seller_payme_id` (required): PayMe's unqiue seller ID ## Overview Calling this method will "push" a payment request to the POS, synchronously awaiting the payment result. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | PayMe's unqiue seller ID | | `product_name` | string | yes | Product's description | | `sale_price` | number | yes | Sale Price | | `sale_type` | string | no | You can find all the sale types [Sale Types](/marketplaces-and-platforms/lists-statuses/sale-types). | | `currency` | string | no | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `transaction_id` | string | yes | Transaction ID | | `sale_callback_url` | string | yes | Sale Callback URL | | `payment` | object | yes | | | `payment.method` | string | yes | Payment method | | `payment.pos_id` | string | yes | The ID you must choose for your POS. Must be a string of digits, between "001" and "999" | | `customer` | object | no | The customer object is **not** mandatory. **If this object is added** to the request, it should include its **required fields**: name, email and phone. | | `customer.name` | string | no | Customer name | | `customer.email` | string | no | Customer email | | `customer.zip_code` | string | no | Customer address zip code | | `customer.phone` | string | no | Customer mobile phone number | | `customer.social_id` | string | no | Customer social ID / national ID for additional verification | | `language` | string | no | Customer language | ### Request example ```json { "seller_payme_id": "MPLXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "product_name": "My Product", "sale_price": 10000, "currency": "USD", "transaction_id": "12345", "sale_callback_url": "https://www.example.com/payment/callback", "payment": { "method": "emv", "pos_id": "001" }, "customer": { "name": "John Due", "email": "test@test.com", "phone": "+498963648018" }, "language": "en" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/sales' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPLXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "product_name": "My Product", "sale_price": 10000, "currency": "USD", "transaction_id": "12345", "sale_callback_url": "https://www.example.com/payment/callback", "payment": { "method": "emv", "pos_id": "001" }, "customer": { "name": "John Due", "email": "test@test.com", "phone": "+498963648018" }, "language": "en" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/sales", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPLXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "product_name": "My Product", "sale_price": 10000, "currency": "USD", "transaction_id": "12345", "sale_callback_url": "https://www.example.com/payment/callback", "payment": { "method": "emv", "pos_id": "001" }, "customer": { "name": "John Due", "email": "test@test.com", "phone": "+498963648018" }, "language": "en" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/sales", json={ "seller_payme_id": "MPLXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "product_name": "My Product", "sale_price": 10000, "currency": "USD", "transaction_id": "12345", "sale_callback_url": "https://www.example.com/payment/callback", "payment": { "method": "emv", "pos_id": "001", }, "customer": { "name": "John Due", "email": "test@test.com", "phone": "+498963648018", }, "language": "en", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | PayMe's payment status (success/failure) | | `payme_status` | string | PayMe's payment status (success/failure) | | `payme_sale_id` | string | PayMe's unique Sale ID | | `payme_sale_code` | integer | PayMe's unique Sale code | | `sale_created` | string | The date the sale was created (timestamp) | | `payme_sale_status` | string | PayMe's sale status | | `sale_status` | string | Sale status | | `currency` | string | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `transaction_id` | string | Transaction ID | | `is_token_sale` | boolean | Was the card tokenized or not | | `price` | integer | Payment price | | `payme_signature` | string | PayMe's signature for the payment | | `sale_description` | string | Sale description | | `payme_transaction_id` | string | PayMe transaction ID | | `payme_transaction_total` | string | Transaction total amount | | `payme_transaction_card_brand` | string | The card brand | | `payme_transaction_auth_number` | string | Transaction authorization number | | `buyer_name` | string | Buyer's full name | | `buyer_email` | string | Buyer's email address | | `buyer_phone` | string | Buyer's phone number | | `buyer_card_mask` | string | Card mask | | `buyer_card_exp` | string | Buyer's card expiration date | | `buyer_card_is_foreign` | boolean | Is the card foreign or domestic? (For IL Sellers only) | | `buyer_social_id` | string | Buyer's social ID number | | `installments` | integer | Number of installments used for the payment | | `sale_paid_date` | string | Sale paid date | ```json { "status_code": 0, "payme_status": "success", "status_error_code": 0, "payme_sale_id": "SALE1688-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_code": 12346578, "sale_created": "2023-06-29 13:33:54", "payme_sale_status": "authorized", "sale_status": "authorized", "currency": "ILS", "transaction_id": "string", "is_token_sale": false, "price": 100, "payme_signature": "db1c276**********c5b39", "sale_description": "bbb", "sale_deferred_months": null, "payme_transaction_id": "TRAN1688-034834SZ-OYNALKNE-DWOXFEUZ", "payme_transaction_total": "100", "payme_transaction_card_brand": "Mastercard", "payme_transaction_auth_number": "12345678", "payme_transaction_voucher": null, "payme_transaction_emv_uid": "2306**********102613", "payme_transaction_acquirer": "PayMe", "payme_transaction_auth_source": "CreditCompany", "payme_transaction_card_issuer": "Isracard", "payme_transaction_credit_type": "RegularCredit", "buyer_name": "First Name", "buyer_email": "test@example.com", "buyer_phone": "+15417543010", "buyer_card_mask": "532610******5846", "buyer_card_exp": "0426", "buyer_card_is_foreign": false, "buyer_social_id": "123456782", "installments": 1, "transaction_first_payment": "100", "transaction_periodical_payment": 0, "transaction_arn": "2306**********2613", "sale_paid_date": "2023-06-29 13:33:54", "sale_release_date": null, "sale_3ds": false, "redirect_url": null } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0 - success, 1 - error) | | `status_error_details` | string | Error message | | `status_additional_info` | string | Additional error information | | `status_error_code` | number | Our unique error code | ```json { "status_code": 1, "status_error_details": "קישור משתמש לא נמצא", "status_additional_info": null, "status_error_code": 251 } ``` - [Refund POS Sale](https://docs-staging.payme.io/payments/point-of-sale-pos/put-sales): PUT /sales — Refund POS Sale # Refund POS Sale - Sandbox: `PUT https://sandbox.payme.io/api/sales` - Production: `PUT https://live.payme.io/api/sales` ## Credentials - Request body field `seller_payme_id` (optional): PayMe's unqiue seller ID In order to refund a sale paid via a POS device, you can use PUT function which will trigger a manual refund request sent back to the device. ### You will need to chain the sale GUID unique identifier to the endpoint URL in the following form: `https://.payme.io/api/sales/{sale_guid}` #### Example: `https://.payme.io/api/sales/SALEGUID-TEST123-TEST123-TEST123` The request will trigger a refund that will be sent to the designated device per the device ID mentioned in the request (see request example below) ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | no | PayMe's unqiue seller ID | | `product_name` | string | no | Product's description | | `currency` | string | no | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `transaction_id` | string | no | The external transaction ID. | | `sale_callback_url` | string | no | The callback url for the specific sale. | | `payment` | object | no | The payment object. | | `payment.method` | string | no | The payment method. | | `payment.pos_id` | string | no | The POS ID - the device that will be used to process the refund request. | | `payment.action` | string | no | The action - must be `refund` in order to complete this action. | | `payment.amount` | string | no | The sale amount in Agorot | | `language` | string | no | The language of the customer's interface. | ### Request example ```json { "seller_payme_id": "string", "sale_price": 0, "currency": "USD", "payment": { "method": "pos", "pos_id": "002", "action": "refund" }, "customer": { "name": "string", "email": "string", "phone": "string", "zip_code": "string", "social_id": "string" }, "language": "he" } ``` ## Code samples ### curl ```bash curl -X PUT 'https://sandbox.payme.io/api/sales' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "string", "sale_price": 0, "currency": "USD", "payment": { "method": "pos", "pos_id": "002", "action": "refund" }, "customer": { "name": "string", "email": "string", "phone": "string", "zip_code": "string", "social_id": "string" }, "language": "he" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/sales", { method: "PUT", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "string", "sale_price": 0, "currency": "USD", "payment": { "method": "pos", "pos_id": "002", "action": "refund" }, "customer": { "name": "string", "email": "string", "phone": "string", "zip_code": "string", "social_id": "string" }, "language": "he" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.put( "https://sandbox.payme.io/api/sales", json={ "seller_payme_id": "string", "sale_price": 0, "currency": "USD", "payment": { "method": "pos", "pos_id": "002", "action": "refund", }, "customer": { "name": "string", "email": "string", "phone": "string", "zip_code": "string", "social_id": "string", }, "language": "he", }, ) print(response.text) ``` ### PHP ```php 'PUT', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | PayMe's payment status (success/failure) | | `payme_status` | string | Sale status | | `payme_sale_id` | string | PayMe's unique Sale ID | | `payme_sale_code` | integer | PayMe's unique Sale code | | `sale_created` | string | The date the sale was created (timestamp) | | `payme_sale_status` | string | PayMe's sale status | | `sale_status` | string | Sale status | | `currency` | string | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `transaction_id` | string | Transaction ID | | `is_token_sale` | boolean | Was the card tokenized or not | | `price` | integer | Payment price | | `payme_signature` | string | PayMe's signature for the payment | | `sale_description` | string | Sale description | | `payme_transaction_id` | string | PayMe transaction ID | | `payme_transaction_total` | string | Transaction total amount | | `payme_transaction_card_brand` | string | The card brand | | `payme_transaction_auth_number` | string | Transaction authorization number | | `buyer_name` | string | Buyer's full name | | `buyer_email` | string | Buyer's email address | | `buyer_phone` | string | Buyer's phone number | | `buyer_card_mask` | string | Card mask | | `buyer_card_exp` | string | Buyer's card expiration date | | `buyer_card_is_foreign` | boolean | Is the card foreign or domestic? (For IL Sellers only) | | `buyer_social_id` | string | Buyer's social ID number | | `installments` | integer | Number of installments used for the payment | | `sale_paid_date` | string | Sale paid date | ```json { "status_code": 0, "payme_status": "success", "status_error_code": 0, "payme_sale_id": "SALE1688-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_code": 12346578, "sale_created": "2023-06-29 13:33:54", "payme_sale_status": "authorized", "sale_status": "authorized", "currency": "ILS", "transaction_id": "string", "is_token_sale": false, "price": 100, "payme_signature": "db1c276**********c5b39", "sale_description": "bbb", "sale_deferred_months": null, "payme_transaction_id": "TRAN1688-034834SZ-OYNALKNE-DWOXFEUZ", "payme_transaction_total": "100", "payme_transaction_card_brand": "Mastercard", "payme_transaction_auth_number": "12345678", "payme_transaction_voucher": null, "payme_transaction_emv_uid": "2306**********102613", "payme_transaction_acquirer": "PayMe", "payme_transaction_auth_source": "CreditCompany", "payme_transaction_card_issuer": "Isracard", "payme_transaction_credit_type": "RegularCredit", "buyer_name": "First Name", "buyer_email": "test@example.com", "buyer_phone": "+15417543010", "buyer_card_mask": "532610******5846", "buyer_card_exp": "0426", "buyer_card_is_foreign": false, "buyer_social_id": "123456782", "installments": 1, "transaction_first_payment": "100", "transaction_periodical_payment": 0, "transaction_arn": "2306**********2613", "sale_paid_date": "2023-06-29 13:33:54", "sale_release_date": null, "sale_3ds": false, "redirect_url": null } ``` - [Refund Sale](https://docs-staging.payme.io/payments/post-sale-actions/post-refund-sale): POST /refund-sale — Refund Sale # Refund Sale - Sandbox: `POST https://sandbox.payme.io/api/refund-sale` - Production: `POST https://live.payme.io/api/refund-sale` ## Credentials - Request body field `payme_client_key` (optional): PayMe partner key. Only partners (platforms managing many sellers) have one; a merchant authenticates with seller_payme_id alone. Can also be sent in the PayMe-Partner-Key header. - Request body field `seller_payme_id` (required): MPL. Your private key in PayMe system. ## Overview Refund request enable you to reimburse a charge that was previously generated but remains unreimbursed. The funds will be returned to the initial payment method used for the charge. ### Callback Once the sale is refunded successfully, we will update the marketplace with the sale details with a POST request of type `x-www-form-urlencoded` to the marketplace Callback URL. #### Note: You can refund multiple times per sale as long as you do not exceed the total amount of the sale. If you do not send the `sale_refund_amount' parameter, the sale will be fully refunded. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | no | PayMe partner key. Only partners (platforms managing many sellers) have one; a merchant authenticates with seller_payme_id alone. Can also be sent in the PayMe-Partner-Key header. | | `seller_payme_id` | string | yes | MPL. Your private key in PayMe system. | | `payme_sale_id` | string | yes | Our unique sale ID. | | `sale_refund_amount` | integer | no | **Used only for partial refunds**, for a full refund exclude this attribute. For example: if the amount is 50.75 (max 2 decimal points) the value that recieved is 5075. Note that the minimum value is 500. | | `language` | string | no | Changes the error message language to English. | ### Request example ```json { "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 1000, "language": "he" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/refund-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 1000, "language": "he" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/refund-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 1000, "language": "he" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/refund-sale", json={ "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 1000, "language": "he", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status of the request (0 - success, 1 - error). | | `status_error_code` | integer | Our unique error code. | | `payme_status` | string | Status of the request (success, error) | | `refunded_from_creditcard` | boolean | Return true if seller has not enough money for refund and we complete the refund from the seller credit card. | | `sale_invoice_number` | integer | Sale invoice Number. | | `sale_invoice_url` | string | Sale invoice URL, if the seller has enabled the invoices module in his account panel. | | `sale_refund_buffer` | integer | The refund buffer of this sale. | | `sale_status` | string | Refund status. | | `payme_transaction_total` | integer | The refund amount that the buyer will get. | | `payme_transaction_total_aft_deduction` | integer | The amount that the seller will be charge on. | | `payme_transaction_id` | string | The transaction unique id. | | `payme_transaction_card_brand` | string | Card brand. | | `payme_transaction_auth_number` | string | Authorization number from credit company. | | `payme_transaction_voucher` | string | Transaction voucher | | `payme_signature` | string | MD5 Signature | | `payme_transaction_acquirer` | string | Transaction acquirer | ```json { "status_code": 0, "status_error_code": 0, "payme_status": "success", "refunded_from_creditcard": false, "sale_invoice_number": null, "sale_invoice_url": null, "sale_refund_buffer": 18800, "sale_status": "partial-refund", "payme_transaction_total": 1000, "payme_transaction_total_aft_deduction": 1000, "payme_transaction_id": "TRANDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_transaction_card_brand": "XXXXXXXX", "payme_transaction_auth_number": "72****4", "payme_transaction_voucher": "24****9", "payme_signature": "b71e**************ca5a", "payme_transaction_arn": null } ``` - [Void Sale](https://docs-staging.payme.io/payments/post-sale-actions/void-sale): How to call POST /refund-sale for Post Sale Actions. # Void Sale This is a variant of [POST /refund-sale — Refund Sale](https://docs-staging.payme.io/payments/post-sale-actions/post-refund-sale); the request and responses below are the ones documented for Post Sale Actions. - Sandbox: `POST https://sandbox.payme.io/api/refund-sale` - Production: `POST https://live.payme.io/api/refund-sale` ## Credentials - Request body field `seller_payme_id` (required): MPL. Your private key in PayMe system. ## Overview In order to initiatea void for an authorization, you will be able to do so using the same API call for a refund. In order to be eligible for a void, the request must be initiated for: 1. Sale type must be authorization 2. The amount required to be voided must be the equal to amount requested and authorized initially. #### Sale Types You can find all the sale statuses [Sale Statuses](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-statuses). ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | MPL. Your private key in PayMe system. | | `payme_sale_id` | string | yes | Our unique sale ID. | | `sale_currency` | string | no | Sale currency. | | `language` | string | no | Changes the error message language to English. | ### Request example ```json { "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 1000, "language": "he" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/refund-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 1000, "language": "he" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/refund-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 1000, "language": "he" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/refund-sale", json={ "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 1000, "language": "he", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status of the request (0 - success, 1 - error). | | `status_error_code` | integer | Our unique error code. | | `payme_status` | string | | | `refunded_from_creditcard` | boolean | Return true if seller has not enough money for refund and we complete the refund from the seller credit card. | | `sale_invoice_number` | integer | Sale invoice Number. | | `sale_invoice_url` | string | Sale invoice URL, if the seller has enabled the invoices module in his account panel. | | `sale_refund_buffer` | integer | The refund buffer of this sale. | | `sale_status` | string | Refund status. | | `payme_transaction_total` | integer | The refund amount that the buyer will get. | | `payme_transaction_total_aft_deduction` | integer | The amount that the seller will be charge on. | | `payme_transaction_id` | string | The transaction unique id. | | `payme_transaction_card_brand` | string | Card brand. | | `payme_transaction_auth_number` | string | Authorization number from credit company. | | `payme_transaction_voucher` | string | Transaction voucher | | `payme_signature` | string | MD5 Signature | ```json { "status_code": 0, "status_error_code": 0, "payme_status": "success", "refunded_from_creditcard": false, "sale_invoice_number": null, "sale_invoice_url": null, "sale_refund_buffer": 18800, "sale_status": "partial-refund", "payme_transaction_total": 1000, "payme_transaction_total_aft_deduction": 1000, "payme_transaction_id": "TRANDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_transaction_card_brand": "XXXXXXXX", "payme_transaction_auth_number": "72****4", "payme_transaction_voucher": "24****9", "payme_signature": "b71e**************ca5a", "payme_transaction_arn": null } ``` - [Capture Sale](https://docs-staging.payme.io/payments/post-sale-actions/post-capture-sale): POST /capture-sale — Capture Sale # Capture Sale - Sandbox: `POST https://sandbox.payme.io/api/capture-sale` - Production: `POST https://live.payme.io/api/capture-sale` ## Credentials - Request body field `payme_client_key` (optional): PayMe Partner Key. - Request body field `seller_payme_id` (optional): MPL. Your private key in PayMe system. ## Overview This endpoint enable you to execute the sale after authorization (`generate-sale` with `sale_type` = "authorize"). For more information, go to the [Capture Sale (Authorization) Guide](/marketplaces-and-platforms/payments/capture-sale). ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | no | PayMe Partner Key. | | `seller_payme_id` | string | no | MPL. Your private key in PayMe system. | | `payme_sale_id` | string | no | Our unique sale ID | ### Request example ```json { "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/capture-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/capture-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/capture-sale", json={ "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status of the request (0 - success, 1 - error) | | `payme_status` | string | Status of the request (success, error) | | `payme_sale_id` | string | Our unique sale ID. | | `payme_sale_code` | integer | Sale code | | `sale_created` | string | The date the sale was created (timestamp) | | `payme_sale_status` | string | Sale status. You can find all the sale statuses [Sale Statuses](/marketplaces-and-platforms/lists-statuses/sale-statuses). | | `sale_status` | string | Sale status. You can find all the sale statuses [Sale Statuses](/marketplaces-and-platforms/lists-statuses/sale-statuses). | | `currency` | string | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `transaction_id` | string | The transaction ID. | | `is_token_sale` | boolean | Indicates if the sale paid with token. | | `price` | integer | The sale price. | | `payme_signature` | string | PayMe's signature for the payment | | `sale_description` | string | Sale description | | `payme_transaction_id` | string | PayMe transaction ID | | `payme_transaction_total` | string | Transaction total amount | | `payme_transaction_card_brand` | string | The card brand | | `payme_transaction_auth_number` | string | Transaction authorization number | | `buyer_name` | string | Buyer's full name | | `buyer_email` | string | Buyer's email address | | `buyer_phone` | string | Buyer's phone number | | `buyer_card_mask` | string | Card mask | | `buyer_card_exp` | string | Buyer's card expiration date | | `buyer_card_is_foreign` | boolean | Is the card foreign or domestic? (For IL Sellers only) | | `buyer_social_id` | string | Buyer's social ID number | | `installments` | integer | Number of installments used for the payment | | `sale_paid_date` | string | Sale paid date | ```json { "status_code": 0, "payme_status": "success", "status_error_code": 0, "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_code": 1111111, "sale_created": "2023-06-22 14:01:47", "payme_sale_status": "completed", "sale_status": "completed", "currency": "ILS", "transaction_id": "12345", "is_token_sale": false, "price": 150000, "payme_signature": "93a1ca34ed43bc00c62b9f467c40be8e", "sale_description": "Computer", "sale_deferred_months": null, "payme_transaction_id": "TRANDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_transaction_total": "150000", "payme_transaction_card_brand": "Mastercard", "payme_transaction_auth_number": "8906759", "payme_transaction_voucher": "111111", "payme_transaction_emv_uid": null, "payme_transaction_acquirer": "PayMe", "payme_transaction_auth_source": "VoiceMail", "payme_transaction_card_issuer": "Isracard", "payme_transaction_credit_type": "RegularCredit", "buyer_name": "Test User", "buyer_email": "test@payme.io", "buyer_phone": "9725254448888", "buyer_card_mask": "532610******5846", "buyer_card_exp": "0426", "buyer_card_is_foreign": false, "buyer_social_id": "123456789", "installments": 1, "transaction_first_payment": 150000, "transaction_periodical_payment": 0, "transaction_arn": null, "sale_paid_date": "2023-06-22 14:04:28", "sale_release_date": null, "sale_3ds": false } ``` - [Cancel Multi Payment Page](https://docs-staging.payme.io/payments/post-sale-actions/post-cancel-template): POST /cancel-template — Cancel Multi Payment Page # Cancel Multi Payment Page - Sandbox: `POST https://sandbox.payme.io/api/cancel-template` - Production: `POST https://live.payme.io/api/cancel-template` ## Credentials - Request body field `seller_payme_id` (required): MPL. Your private key in PayMe system. ## Overview This endpoint enable you to cancle a Multi Payment Page. Multi Payment Page enables payments on a single sale link, by multiple buyers. You can find more information in our [Multi Payment Page Guide](/marketplaces-and-platforms/payments/multi-payment-page). ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | MPL. Your private key in PayMe system. | | `payme_sale_id` | string | yes | Our unique sale ID. | ### Request example ```json { "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 1000, "language": "he" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/cancel-template' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 1000, "language": "he" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/cancel-template", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 1000, "language": "he" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/cancel-template", json={ "payme_client_key": "XXXXXXXX", "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_refund_amount": 1000, "language": "he", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status of the request (0 - success, 1 - error). | ```json { "status_code": 0, "status_error_code": 0, "payme_status": "success", "refunded_from_creditcard": false, "sale_invoice_number": null, "sale_invoice_url": null, "sale_refund_buffer": 18800, "sale_status": "partial-refund", "payme_transaction_total": 1000, "payme_transaction_total_aft_deduction": 1000, "payme_transaction_id": "TRANDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_transaction_card_brand": "XXXXXXXX", "payme_transaction_auth_number": "72****4", "payme_transaction_voucher": "24****9", "payme_signature": "b71e**************ca5a", "payme_transaction_arn": null } ``` ### 251 — Seller not found (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status of the request (0 - success, 1 - error). | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | integer | | | `session` | string | | ```json { "status_code": 1, "status_error_details": "מוכר לא נמצא", "status_additional_info": "seller_payme_id", "status_error_code": 251, "session": "MfH3Hc80" } ``` ### 305 — This operation cannot be completed due to an inappropriate sale status (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status of the request (0 - success, 1 - error). | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | integer | | | `session` | string | | ```json { "status_code": 1, "status_error_details": "לא ניתן להשלים פעולה זו עקב סטטוס מכירה לא מתאים", "status_additional_info": "canceled", "status_error_code": 305, "session": "NGQ1QpYB" } ``` - [Activate Service (Apple Pay)](https://docs-staging.payme.io/payments/apple-pay/post-vas-enable-apple-pay): How to call POST /vas-enable for Apple Pay. # Activate Service (Apple Pay) This is a variant of [POST /vas-enable — Order New POS Device](https://docs-staging.payme.io/payments/point-of-sale-pos/post-vas-enable); the request and responses below are the ones documented for Apple Pay. - Sandbox: `POST https://sandbox.payme.io/api/vas-enable` - Production: `POST https://live.payme.io/api/vas-enable` ## Credentials - Request body field `payme_client_key` (required): Your PayMe API Partner Key. - Request body field `seller_payme_id` (required): The unique seller ID the service is activated for. - Request body field `vas_payme_id` (required): The service activation unique partner ID. ## Overview #### **Apple Pay VAS-Enable** In order to be able to use Apple Pay in our platform, you will need to set up the service via API. ### Website Enrollment Procedure After you added the Apple's file into the proper folder and path of your website, you can use our VAS Enable request to sign your website for the Apple Pay service on our platform. By using the Activate service API request, you will need to register your websites to PayMes system. The request works as in the following form: ```json { "payme_client_key": "payme_partner_key", "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "vas_data": { "websites": [ "payme.io", "marketplace.payme.io" ] }, "language": "en" } ``` A successful response will be 200 and includes a payload in the form of: ```json { "status_code": 0, "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "vas_description": "Payments Account", "vas_type": "AlternativePaymentMethod", "vas_api_key": "", "vas_is_active": true, "vas_payer_type": 2, "vas_price_currency": "ILS", "vas_price_setup_fixed": 0, "vas_price_periodic_fixed": 0, "vas_price_periodic_variable": "0.00", "vas_price_usage_fixed": 0, "vas_price_usage_variable": "0.00", "vas_market_fee": null, "vas_period": 1, "vas_data": { "websites": [ "test5.paymeservice.com" ] } } ``` A failed response will be 500 and includes a payload in the form of: ```json { "status_code": 1, "status_error_details": "The service was not activated", "status_additional_info": null, "status_error_code": 720 } ``` ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | Your PayMe API Partner Key. | | `seller_payme_id` | string | yes | The unique seller ID the service is activated for. | | `vas_payme_id` | string | yes | The service activation unique partner ID. | | `vas_data` | object | yes | | | `vas_data.websites` | array | yes | The websites domains the service is activated for. Example: `https://payme.io` | | `language` | string | yes | | ### Request example ```json { "payme_client_key": "payme_partner_key", "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "vas_data": { "websites": [ "payme.io", "marketplace.payme.io" ] }, "language": "en" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/vas-enable' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "payme_partner_key", "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "vas_data": { "websites": [ "payme.io", "marketplace.payme.io" ] }, "language": "en" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/vas-enable", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "payme_partner_key", "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "vas_data": { "websites": [ "payme.io", "marketplace.payme.io" ] }, "language": "en" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/vas-enable", json={ "payme_client_key": "payme_partner_key", "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "vas_data": { "websites": [ "payme.io", "marketplace.payme.io", ], }, "language": "en", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | 0 - Success 1 - Failure | | `seller_payme_id` | string | Our unique seller ID. | | `vas_payme_id` | string | The partner unique service API key. | | `vas_description` | string | The description of the service that was activated. | | `vas_type` | string | The type of the service that was activated. You can find all the VAS types [VAS Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/vas-types). | | `vas_api_key` | string | Empty by default. | | `vas_is_active` | boolean | Was the service activated successfully | | `vas_payer_type` | number | Internal payer identity. 1 = Partner 2 = Seller 3 = Reseller | | `vas_price_currency` | string | The currency that the service is charged in. | | `vas_price_setup_fixed` | number | Partner account configuration of the setup costs. | | `vas_price_periodic_fixed` | number | Partner account configuration of the periodical costs. | | `vas_price_periodic_variable` | string | Partner account configuration of the periodical costs. | | `vas_price_usage_fixed` | number | Partner account configuration of the fixed costs. | | `vas_price_usage_variable` | string | Partner account configuration of the usage costs. | | `vas_period` | number | | | `vas_data` | object | The peiod of the VAS charge. Instant = 1, Daily = 2, Monthly = 3, Yearly = 4 | | `vas_data.websites` | array | The websites domains the service is activated for. | ```json { "status_code": 0, "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "vas_description": "Payments Account", "vas_type": "AlternativePaymentMethod", "vas_api_key": "", "vas_is_active": true, "vas_payer_type": 2, "vas_price_currency": "ILS", "vas_price_setup_fixed": 0, "vas_price_periodic_fixed": 0, "vas_price_periodic_variable": "0.00", "vas_price_usage_fixed": 0, "vas_price_usage_variable": "0.00", "vas_market_fee": null, "vas_period": 1, "vas_data": { "websites": [ "test5.paymeservice.com" ] } } ``` ### 500 — Request Failed (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status code - will always be 1 for failed requests. | | `status_error_details` | string | Reasons for the failed request. | | `status_additional_info` | string | Null | | `status_error_code` | number | Error code for further support. | ```json { "status_code": 1, "status_error_details": "The service was not activated", "status_additional_info": null, "status_error_code": 720 } ``` - [Generate Sale with Apple Pay](https://docs-staging.payme.io/payments/apple-pay/post-generate-sale-apple-pay): How to call POST /generate-sale for Apple Pay. # Generate Sale with Apple Pay This is a variant of [POST /generate-sale — Generate Payment](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale); the request and responses below are the ones documented for Apple Pay. - Sandbox: `POST https://sandbox.payme.io/api/generate-sale` - Production: `POST https://live.payme.io/api/generate-sale` ## Credentials - Request body field `seller_payme_id` (required): Our unique seller ID (MPL). ## Overview In order to initiate the process of paying using Apple Pay APM, you will first need to initiate a generate-sale request to our API. The request shall include "apple-pay" as the `sale_payment_method`. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | Our unique seller ID (MPL). | | `sale_price` | string | yes | The sale price. | | `currency` | string | yes | The sale currency (ISO 4217 Code). | | `product_name` | string | yes | What is the payment for. | | `language` | string | no | The language of the user interface. | | `sale_payment_method` | string | yes | The payment method used for the transaction. | | `sale_type` | string | yes | The required sale type. | ### Request example ```json { "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_payment_method": "apple-pay", "sale_type": "sale" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/generate-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_payment_method": "apple-pay", "sale_type": "sale" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/generate-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_payment_method": "apple-pay", "sale_type": "sale" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/generate-sale", json={ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_payment_method": "apple-pay", "sale_type": "sale", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | 0 - Success 1 - Failure | | `sale_url` | string | The URL to complete the payment. | | `payme_sale_id` | string | Our unique sale ID | | `payme_sale_code` | number | Our unique sale code (for display purposes only) | | `price` | number | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `transaction_id` | string | Merchant's unique sale ID for correlation with us | | `currency` | string | The currency of the payment. | | `sale_payment_method` | string | The payment method used to generate the new payment. | ```json { "status_code": 0, "sale_url": "https://preprod.paymeservice.com/sale/generate/Sale_guid", "payme_sale_id": "SALEguid", "payme_sale_code": 1032526, "price": 1000, "transaction_id": "", "currency": "ILS", "sale_payment_method": "apple-pay" } ``` ### 500 — Internal Server Error (error) - [Activate Service (Google Pay)](https://docs-staging.payme.io/payments/google-pay/post-vas-enable-google-pay): How to call POST /vas-enable for Google Pay. # Activate Service (Google Pay) This is a variant of [POST /vas-enable — Order New POS Device](https://docs-staging.payme.io/payments/point-of-sale-pos/post-vas-enable); the request and responses below are the ones documented for Google Pay. - Sandbox: `POST https://sandbox.payme.io/api/vas-enable` - Production: `POST https://live.payme.io/api/vas-enable` ## Credentials - Request body field `payme_client_key` (required): Your PayMe API Partner Key. - Request body field `seller_payme_id` (required): The unique seller ID the service is activated for. - Request body field `vas_payme_id` (required): The service activation unique partner ID. ## Overview #### **Google Pay VAS-Enable** In order to be able to use Google Pay in our platform, you will need to set up the service via API, using our VAS Enable request. The request works as in the following form: ```json { "payme_client_key": "payme_partner_key", "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "language": "en" } ``` A successful response will be 200 and includes a payload in the form of: ```json { "status_code": 0, "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "vas_description": "Payments Account", "vas_type": "AlternativePaymentMethod", "vas_api_key": "", "vas_is_active": true, "vas_payer_type": 2, "vas_price_currency": "ILS", "vas_price_setup_fixed": 0, "vas_price_periodic_fixed": 0, "vas_price_periodic_variable": "0.00", "vas_price_usage_fixed": 0, "vas_price_usage_variable": "0.00", "vas_market_fee": null, "vas_period": 1 } ``` A failed response will be 500 and includes a payload in the form of: ```json { "status_code": 1, "status_error_details": "The service was not activated", "status_additional_info": null, "status_error_code": 720 } ``` ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | Your PayMe API Partner Key. | | `seller_payme_id` | string | yes | The unique seller ID the service is activated for. | | `vas_payme_id` | string | yes | The service activation unique partner ID. | | `language` | string | yes | | ### Request example ```json { "payme_client_key": "payme_partnerkey", "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "language": "he" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/vas-enable' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "payme_partnerkey", "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "language": "he" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/vas-enable", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "payme_partnerkey", "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "language": "he" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/vas-enable", json={ "payme_client_key": "payme_partnerkey", "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "vas_payme_id": "VASLDEMO-VASLDEMO-VASLDEMO-1234567", "language": "he", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | 0 - Success 1 - Failure | | `seller_payme_id` | string | Our unique seller ID. | | `vas_payme_id` | string | The partner unique service API key. | | `vas_description` | string | The description of the service that was activated. | | `vas_type` | string | The type of the service that was activated. You can find all the VAS types [VAS Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/vas-types). | | `vas_api_key` | string | Empty by default. | | `vas_is_active` | boolean | Was the service activated successfully | | `vas_payer_type` | number | Internal payer identity. 1 = Partner 2 = Seller 3 = Reseller | | `vas_price_currency` | string | The currency that the service is charged in. | | `vas_price_setup_fixed` | number | Partner account configuration of the setup costs. | | `vas_price_periodic_fixed` | number | Partner account configuration of the periodical costs. | | `vas_price_periodic_variable` | string | Partner account configuration of the periodical costs. | | `vas_price_usage_fixed` | number | Partner account configuration of the fixed costs. | | `vas_price_usage_variable` | string | Partner account configuration of the usage costs. | | `vas_period` | number | | ### 500 — Request Failed (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status code - will always be 1 for failed requests. | | `status_error_details` | string | Reasons for the failed request. | | `status_additional_info` | string | | | `status_error_code` | number | Error code for further support. | - [Generate Sale with Google Pay](https://docs-staging.payme.io/payments/google-pay/post-generate-sale-google-pay): How to call POST /generate-sale for Google Pay. # Generate Sale with Google Pay This is a variant of [POST /generate-sale — Generate Payment](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale); the request and responses below are the ones documented for Google Pay. - Sandbox: `POST https://sandbox.payme.io/api/generate-sale` - Production: `POST https://live.payme.io/api/generate-sale` ## Credentials - Request body field `seller_payme_id` (required): Our unique seller ID (MPL). ## Overview In order to initiate the process of paying using Google Pay APM, you will first need to initiate a generate-sale request to our API. The request shall include "google-pay" as the `sale_payment_method`. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | Our unique seller ID (MPL). | | `sale_price` | string | yes | The sale price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `currency` | string | yes | The sale currency (ISO 4217 Code). | | `product_name` | string | yes | What is the payment for. | | `language` | string | no | The language of the user interface. | | `sale_payment_method` | string | yes | The payment method used for the transaction. You can use also `multi` to allow buyer to select his preffered payment method. | | `sale_type` | string | yes | The required sale type. | ### Request example No example is documented; this template is generated from the fields — replace the placeholder values. ```json { "seller_payme_id": "", "sale_price": "", "currency": "", "product_name": "", "language": "", "sale_payment_method": "", "sale_type": "" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/generate-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "", "sale_price": "", "currency": "", "product_name": "", "sale_payment_method": "", "sale_type": "" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/generate-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "", "sale_price": "", "currency": "", "product_name": "", "sale_payment_method": "", "sale_type": "" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/generate-sale", json={ "seller_payme_id": "", "sale_price": "", "currency": "", "product_name": "", "sale_payment_method": "", "sale_type": "", }, ) print(response.text) ``` ### PHP ```php ", "sale_price": "", "currency": "", "product_name": "", "sale_payment_method": "", "sale_type": "" } BODY; $ch = curl_init('https://sandbox.payme.io/api/generate-sale'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | 0 - Success 1 - Failure | | `sale_url` | string | The URL to complete the payment. | | `payme_sale_id` | string | Our unique sale ID | | `payme_sale_code` | number | Our unique sale code (for display purposes only) | | `price` | number | Sale final price. | | `transaction_id` | string | Merchant's unique sale ID for correlation with us | | `currency` | string | The currency of the payment. | | `sale_payment_method` | string | The payment method used to generate the new payment. | ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status code - will always be 1 for failed requests. | | `status_error_details` | string | Reasons for the failed request. | | `status_additional_info` | string | | | `status_error_code` | number | Error code for further support. | - [Generate New Authorization](https://docs-staging.payme.io/payments/il-direct-debit/post-generate-sale-il-direct-debit): How to call POST /generate-sale for IL Direct Debit. # Generate New Authorization This is a variant of [POST /generate-sale — Generate Payment](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale); the request and responses below are the ones documented for IL Direct Debit. - Sandbox: `POST https://sandbox.payme.io/api/generate-sale` - Production: `POST https://live.payme.io/api/generate-sale` ## Credentials - Request body field `seller_payme_id` (required): The MPL the authorization will be given for ## Overview The Israeli Direct Debit alternative payment method works in a two-phase setup: 1. Setting up the bank authorization <- **You are here** 2. Completing the payment using the bank authorization ### Bank Authorization Setup In order to setup the bank Authorization, you will need to use our generate-sale endpoint, using a few specific parameters. 1. `sale_type = token` 2. `sale_payment_method = il-direct-debit` The authorization page is based on our `hosted-payment-page` and will collect information regarding the buyer's identity and bank account. After the buyer completes the setup, the authorization will be sent to the bank and will be `inactive` until we receive an update (takes up to 96 hours). ### Callbacks You will get two callbacks: 1. **Callback that indicates that the sale complete** - Not relevant, as the `sale_type` is from type "token" and not sale. * You can find all the sale types [Sale Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-types) * You can find all the sale callbacks [Sale Callbacks](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-callbacks) 2. **Callback that inditates the authorization status** - You can find all the bank authorization statuses [Bank Authorization Statuses](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/bank-authorization-statuses). ``` { "status": 1, "error_code": "11", "internal_reference_id": 10000, "customer_name": "Test test", "charge_limit": 200 } ``` ### Testing Information for testing can be found here - [Israeli Direct Debit Testing Information](https://docs-staging.payme.io/payments/introduction/test-cards-and-payment-methods#israeli-direct-debit-testing-information). Please note that in our sandbox environment you will receive only bank authorization statuses from type 1 or 2 (Success/failure). You can find all the bank authorization statuses [Bank Authorization Statuses](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/bank-authorization-statuses). ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | The MPL the authorization will be given for | | `sale_price` | string | yes | Must be included, won't be charged as a part of the authorization setup | | `currency` | string | yes | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `product_name` | string | yes | Use a generic value here (will not affect the authorization setup process) | | `language` | string | no | The language the page will be presented in | | `sale_type` | string | yes | The sale type. For authorization setup, use `token` by default | | `sale_payment_method` | string | yes | The sale payment method. Must be `il-direct-debit` for the authorization setup process | | `sale_return_url` | string | no | The URL the user will be redirected to after completing the authorization setup process | ### Request example ```json { "seller_payme_id": "MPL00009-00009EXM-EXAMPLE0-EXAMPLE9", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_type": "token", "sale_payment_method": "il-direct-debit", "sale_return_url": "https://sport5.co.il" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/generate-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPL00009-00009EXM-EXAMPLE0-EXAMPLE9", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_type": "token", "sale_payment_method": "il-direct-debit", "sale_return_url": "https://sport5.co.il" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/generate-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPL00009-00009EXM-EXAMPLE0-EXAMPLE9", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_type": "token", "sale_payment_method": "il-direct-debit", "sale_return_url": "https://sport5.co.il" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/generate-sale", json={ "seller_payme_id": "MPL00009-00009EXM-EXAMPLE0-EXAMPLE9", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_type": "token", "sale_payment_method": "il-direct-debit", "sale_return_url": "https://sport5.co.il", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | string | Status of the request (0 - success, 1 - error) | | `sale_url` | string | The URL of the IFRAME secured payment form to display to the buyer | | `payme_sale_id` | string | Our unique sale ID | | `payme_sale_code` | integer | Our unique sale code (for display purposes only) | | `price` | integer | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `transaction_id` | string | Transaction ID | | `currency` | string | | | `sale_payment_method` | string | The sale payment method. Must be il-direct-debit for the authorization setup process | ```json { "status_code": 0, "sale_url": "https://sandbox.payme.io/sale/generate/SALETEST-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALE1687-957072WX-0MEX63QM-GMHDMGNU", "payme_sale_code": 1234567, "price": 1000, "transaction_id": "12345", "currency": "ILS", "sale_payment_method": "il-direct-debit" } ``` - [Generate New Payment](https://docs-staging.payme.io/payments/il-direct-debit/post-generate-sale-2-il-direct-debit): How to call POST /generate-sale for IL Direct Debit. # Generate New Payment This is a variant of [POST /generate-sale — Generate Payment](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale); the request and responses below are the ones documented for IL Direct Debit. - Sandbox: `POST https://sandbox.payme.io/api/generate-sale` - Production: `POST https://live.payme.io/api/generate-sale` ## Credentials - Request body field `seller_payme_id` (required): The MPL the authorization will be given for ## Overview The Israeli Direct Debit alternative payment method works in a two-phase setup: 1. Setting up the bank authorization 2. Completing the payment using the bank authorization <- **You are here** ### Generate a new payment using Israeli Direct Debit In order to setup a new payment using the Israeli Direct Debit alternative payment method, you will need to use our `generate-sale` endpoint, using a few specific parameters. 1. `sale_type = sale` 2. `sale_payment_method = il-direct-debit` 3. include a `buyer-key` parameter as a part of your `generate-sale` request in order to initiate the payment flow ### Callbacks Status | Description ---- | ---- Success | In case the payment was successful, you won't get any callback. Please note that the payment process can take up to 8 days. Failure | In case that payment failed, you will get a callback indicates on failure. ### Testing Information for testing can be found here - [Israeli Direct Debit Testing Information](https://docs-staging.payme.io/payments/introduction/test-cards-and-payment-methods#israeli-direct-debit-testing-information). ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | The MPL the authorization will be given for | | `sale_price` | string | yes | Must be included, won't be charged as a part of the authorization setup | | `currency` | string | yes | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `product_name` | string | yes | Use a generic value here (will not affect the authorization setup process) | | `language` | string | no | The language the page will be presented in | | `sale_type` | string | yes | The sale type. For authorization setup, use `token` by default | | `sale_payment_method` | string | yes | The sale payment method. Must be `il-direct-debit` for the authorization setup process | | `sale_return_url` | string | no | The URL the user will be redirected to after completing the authorization setup process | ### Request example ```json { "seller_payme_id": "MPL00009-00009EXM-EXAMPLE0-EXAMPLE9", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_type": "token", "sale_payment_method": "il-direct-debit", "sale_return_url": "https://sport5.co.il" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/generate-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPL00009-00009EXM-EXAMPLE0-EXAMPLE9", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_type": "token", "sale_payment_method": "il-direct-debit", "sale_return_url": "https://sport5.co.il" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/generate-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPL00009-00009EXM-EXAMPLE0-EXAMPLE9", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_type": "token", "sale_payment_method": "il-direct-debit", "sale_return_url": "https://sport5.co.il" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/generate-sale", json={ "seller_payme_id": "MPL00009-00009EXM-EXAMPLE0-EXAMPLE9", "sale_price": "1000", "currency": "ILS", "product_name": "Shirt", "language": "en", "sale_type": "token", "sale_payment_method": "il-direct-debit", "sale_return_url": "https://sport5.co.il", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | string | Status of the request (0 - success, 1 - error) | | `sale_url` | string | The URL of the IFRAME secured payment form to display to the buyer | | `payme_sale_id` | string | Our unique sale ID | | `payme_sale_code` | integer | Our unique sale code (for display purposes only) | | `price` | integer | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `transaction_id` | string | Transaction ID | | `currency` | string | | | `sale_payment_method` | string | The sale payment method. Must be il-direct-debit for the authorization setup process | ```json { "status_code": 0, "sale_url": "https://sandbox.payme.io/sale/generate/SALETEST-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "SALE1687-957072WX-0MEX63QM-GMHDMGNU", "payme_sale_code": 1234567, "price": 1000, "transaction_id": "12345", "currency": "ILS", "sale_payment_method": "il-direct-debit" } ``` - [Generate](https://docs-staging.payme.io/payments/subscriptions/post-generate-subscription): POST /generate-subscription — Generate # Generate - Sandbox: `POST https://sandbox.payme.io/api/generate-subscription` - Production: `POST https://live.payme.io/api/generate-subscription` ## Credentials - Request body field `payme_client_key` (required): PayMe Partner Key. - Request body field `seller_payme_id` (required): MPL. Your private key in PayMe system. ## Overview This endpoint is used to generate new subscriptions. You can find more information in our guide - [How to create a subscription ](/marketplaces-and-platforms/payments/how-to-create-subscription). ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | PayMe Partner Key. | | `seller_payme_id` | string | yes | MPL. Your private key in PayMe system. | | `sub_currency` | string | yes | Subscription currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `sub_price` | string | yes | A single iteration final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075. Note that the minimum value is 500 | | `sub_description` | string | yes | The description of the service/product | | `sub_iteration_type` | string | yes | 1 - Daily, 2 - Weekly, 3 - Monthly, 4 - Yearly | | `language` | string | no | Changes the language of the payment IFRAME to English, as well as the error messages. Default value is Hebrew (he) | | `sub_start_date` | string | no | Subscription initiation date. For iteration type = 3 (monthly) the day value should be between 1 to 28 | | `sub_payment_method` | string | no | Sale Payment Method (for the list see [Payment Methods](/payments/direct-api/available-payment-methods)) | | `sub_type` | number | no | subscription type: 1-regular, 10-template | | `buyer_key` | string | no | Buyer key for subscription payment with the token. Relevant only for sub_type = regular. This key is received through the use of capture_buyer. Note that with this attribute no need to activate pay-subscription. | | `subscription_id` | string | no | Merchant's unique subscription ID for correlation with us | | `sub_iterations` | number | no | The iterations count set for the subscription. Default value is set to unlimited by -1 value. | | `sub_callback_url` | string | no | Callback response to your page regarding updates on subscription events. | | `sub_return_url` | string | no | Once the subscription was paid successfully, the user will be redirected to this URL Relevant to the first subscription iteration, if it is paid through our iframe. | | `sub_indicative_name` | string | no | Indicative name for the subscribition | | `sub_email_address` | string | no | Email address of the subscription payer | | `sub_indicative_mobile` | string | no | Phone number to send receipt | | `sub_send_notification` | boolean | no | Indication if to send notifications on subscription events. | ### Request example ```json { "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sub_price": 500, "sub_currency": "USD", "sub_description": "Subscription for something", "sub_iteration_type": "3", "sub_iterations": 12, "sub_start_date": "1440354488", "sub_callback_url": "https://www.example.com/payment/callback", "sub_return_url": "https://www.example.com/payment/success", "buyer_key": "XXXXXXXX", "language": "en" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/generate-subscription' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sub_price": 500, "sub_currency": "USD", "sub_description": "Subscription for something", "sub_iteration_type": "3", "sub_iterations": 12, "sub_start_date": "1440354488", "sub_callback_url": "https://www.example.com/payment/callback", "sub_return_url": "https://www.example.com/payment/success", "buyer_key": "XXXXXXXX", "language": "en" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/generate-subscription", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sub_price": 500, "sub_currency": "USD", "sub_description": "Subscription for something", "sub_iteration_type": "3", "sub_iterations": 12, "sub_start_date": "1440354488", "sub_callback_url": "https://www.example.com/payment/callback", "sub_return_url": "https://www.example.com/payment/success", "buyer_key": "XXXXXXXX", "language": "en" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/generate-subscription", json={ "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sub_price": 500, "sub_currency": "USD", "sub_description": "Subscription for something", "sub_iteration_type": "3", "sub_iterations": 12, "sub_start_date": "1440354488", "sub_callback_url": "https://www.example.com/payment/callback", "sub_return_url": "https://www.example.com/payment/success", "buyer_key": "XXXXXXXX", "language": "en", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `sub_url` | string | Subscription Unique URL | | `status_code` | string | Status code (0 - sucess, 1 - failed) | | `payme_status` | string | PayMe updated status` | | `seller_payme_id` | string | | | `seller_id` | string | Our unique seller ID | | `sub_payme_id` | string | PayMe's unique subscription ID | | `sub_payme_code` | string | PayMe's subscription code | | `subscription_id` | string | Subscription unique ID | | `sub_created` | string | The date the subscription was created | | `sub_start_date` | string | Subscription initiation date | | `sub_prev_date` | string | Previous subscription payment date | | `sub_next_date` | string | Subscription next payment due date | | `sub_status` | string | Subscription status (0 - active, 1 - inactive) | | `sub_iteration_type` | string | 1 - Daily, 2 - Weekly, 3 - Monthly, 4 - Yearly | | `sub_currency` | string | Subscription currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `sub_price` | string | A single iteration final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075. Note that the minimum value is 500 | | `sub_description` | string | Subscription description - What is the subscription for? | | `sub_iterations` | string | The iterations count set for the subscription according to the request command | | `sub_iterations_completed` | number | The number of iterations completed for the specific subscription | | `sub_iterations_left` | string | Count of iteration left for the specific subscription | | `sub_paid` | boolean | Was the subscription fully paid or not | | `status_error_code` | number | Error code in case of an error | | `sub_error_text` | string | Error description in case of an error | ```json { "sub_url": "string", "status_code": "0", "payme_status": "string", "status_error_code": "string", "seller_payme_id": "string", "seller_id": "string", "sub_payme_id": "string", "sub_payme_code": "string", "subscription_id": "string", "sub_created": "string", "sub_start_date": "string", "sub_prev_date": "string", "sub_status": "string", "sub_next_date": "string", "sub_iteration_type": "string", "sub_currency": "string", "sub_price": "string", "sub_description": "string", "sub_iterations": "string", "sub_iterations_completed": 0, "sub_iterations_left": "string", "sub_paid": true, "sub_error_text": "string" } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status code 1 (for failure) | | `status_error_details` | string | What caused the error | | `status_additional_info` | string | The parameters related to the error | | `status_error_code` | number | Status error code - 1 | ```json { "status_code": 1, "status_error_details": "Required parameter is missing", "status_additional_info": "seller_payme_id", "status_error_code": 1 } ``` - [Recurring Payments](https://docs-staging.payme.io/payments/subscriptions/recurring-payments): Recurring payments help you to oversee regular payments for subscriptions, providing convenience to customers and predictable revenue streams for your business. # Recurring Payments Recurring payments help you to oversee regular payments for subscriptions, providing convenience to customers and predictable revenue streams for your business. PayMe's subscriptions are a common use case for recurring payments, allowing customers to easily manage and pay for services on a regular basis. PayMe's tokenization secures recurring payments by replacing sensitive data with unique tokens, simplifies compliance by reducing the scope of PCI DSS requirements for your business. - [Pay](https://docs-staging.payme.io/payments/subscriptions/post-generate-subscription-2): POST /pay-subscription — Pay # Pay - Sandbox: `POST https://sandbox.payme.io/api/pay-subscription` - Production: `POST https://live.payme.io/api/pay-subscription` ## Credentials No credentials are documented for this endpoint. ## Overview **Relevant only for Direct API Integration** This endpoint is used to pay subscriptions. **No API key is needed.** The subscription (`sub_payme_id`) identifies the seller, so — like pay-sale — this call can be made from the buyer's browser. Do not send `seller_payme_id` or `payme_client_key` here. Only a subscription whose status is initial, failed or failed-retry can be paid; any other status returns error `305`. You can find more information in our guide - [How to create a subscription ](/marketplaces-and-platforms/payments/how-to-create-subscription). ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `sub_payme_id` | string | yes | Our unique subscription ID | | `credit_card_number` | string | yes | Buyer's credit card number | | `credit_card_cvv` | string | yes | Buyer's credit card CVV | | `credit_card_exp` | string | yes | Buyer's credit card expiary date | | `buyer_email` | string | yes | Buyer's email address | | `buyer_name` | string | yes | Buyer's full name | ### Request example ```json { "sub_payme_id": "SUB16885-68336QPL-UQSSS1CC-SYKXI53N", "credit_card_number": "4580458045804580", "credit_card_cvv": "123", "credit_card_exp": "0130", "buyer_email": "user2@example.com", "buyer_name": "sarit hadad" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/pay-subscription' \ -H 'Content-Type: application/json' \ --data-raw '{ "sub_payme_id": "SUB16885-68336QPL-UQSSS1CC-SYKXI53N", "credit_card_number": "4580458045804580", "credit_card_cvv": "123", "credit_card_exp": "0130", "buyer_email": "user2@example.com", "buyer_name": "sarit hadad" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/pay-subscription", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "sub_payme_id": "SUB16885-68336QPL-UQSSS1CC-SYKXI53N", "credit_card_number": "4580458045804580", "credit_card_cvv": "123", "credit_card_exp": "0130", "buyer_email": "user2@example.com", "buyer_name": "sarit hadad" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/pay-subscription", json={ "sub_payme_id": "SUB16885-68336QPL-UQSSS1CC-SYKXI53N", "credit_card_number": "4580458045804580", "credit_card_cvv": "123", "credit_card_exp": "0130", "buyer_email": "user2@example.com", "buyer_name": "sarit hadad", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Cancellation status code ( 0 - Success, 1 - Failure) | | `payme_status` | string | PayMe status | | `seller_payme_id` | string | Our unique seller ID (MPL) | | `sub_payme_id` | string | Subscription ID | | `sub_payme_code` | integer | Subscription code | | `sub_created` | string | Subscription creation timestamp | | `sub_start_date` | string | Subscription start timestamp | | `sub_prev_date` | string | Subscription last payment date | | `sub_next_date` | string | Subscription next payment date | | `sub_status` | integer | You can find all the subscription statuses [Subscription Statuses](/marketplaces-and-platforms/lists-statuses/subscription-statuses) | | `sub_iteration_type` | integer | You can find all the subscription iteration types [Subscription Iteration Types](/marketplaces-and-platforms/lists-statuses/subscription-iteration-types) | | `sub_currency` | string | Subscription currency | | `sub_price` | integer | Total subscription price | | `sub_description` | string | Subscription description | | `sub_iterations` | integer | Number of iterations | | `sub_iterations_completed` | integer | Number of iterations that was paid | | `sub_iterations_skipped` | integer | The count of unpaid iterations and their corresponding dates have elapsed. | | `sub_iterations_left` | integer | The count of iterations left | | `sub_paid` | boolean | Indicates if the current iteration paid | | `sub_payment_date` | string | The payment due date | | `buyer_card_mask` | string | Buyer's credit card number | | `buyer_card_exp` | string | Buyer's credit card expiary date | | `buyer_name` | string | Buyer's full name | | `buyer_email` | string | Buyer's email address | | `buyer_phone` | string | Buyer's phone number | | `buyer_social_id` | string | Buyer's social ID | ```json { "status_code": 0, "payme_status": "success", "status_error_code": 0, "seller_payme_id": "MPL90005-90005EXM-EXAMPLE0-EXAMPLE9", "sub_payme_id": "SUB16885-68336QPL-UQSSS1CC-SYKXI53N", "sub_payme_code": 477004, "sub_created": "2023-07-05 17:45:36", "sub_start_date": "2023-07-05 17:45:36", "sub_prev_date": null, "sub_next_date": "2023-07-05 17:45:36", "sub_status": 2, "sub_iteration_type": 1, "sub_currency": "USD", "sub_price": 100, "sub_description": "sub-description", "sub_iterations": -1, "sub_iterations_completed": 0, "sub_iterations_skipped": 0, "sub_iterations_left": -1, "sub_paid": true, "sub_error_text": null, "sub_payment_date": "2022-08-15 15:51:29", "buyer_card_mask": "458045******4580", "buyer_card_exp": "0130", "buyer_name": "Jhon Doe", "buyer_email": "user3@example.com", "buyer_phone": null, "buyer_social_id": null } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status code 1 (for failure) | | `status_error_details` | string | What caused the error | | `status_additional_info` | string | The parameters related to the error | | `status_error_code` | number | Status error code - 1 | ```json { "status_code": 1, "status_error_details": "Required parameter is missing", "status_additional_info": "seller_payme_id", "status_error_code": 1 } ``` - [Cancel](https://docs-staging.payme.io/payments/subscriptions/postcancel-subscription): POST /cancel-subscription — Cancel # Cancel - Sandbox: `POST https://sandbox.payme.io/api/cancel-subscription` - Production: `POST https://live.payme.io/api/cancel-subscription` ## Credentials - Request body field `seller_payme_id` (required): Our unique seller ID ## Overview This endpoint is used to cancel existing subscriptions. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | Our unique seller ID | | `sub_payme_id` | string | yes | Our unique subscription ID | | `language` | string | no | Changes the error message language to English. Default value is Hebrew (he) | ### Request example ```json { "seller_payme_id": "string", "sub_payme_id": "string" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/cancel-subscription' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "string", "sub_payme_id": "string" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/cancel-subscription", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "string", "sub_payme_id": "string" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/cancel-subscription", json={ "seller_payme_id": "string", "sub_payme_id": "string", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | string | Cancellation status code ( 0 - Success, 1 - Failure) | ```json { "status_code": "string" } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | string | Cancellation status code ( 0 - Success, 1 - Failure) | ```json { "status_code": "string" } ``` - [Pause](https://docs-staging.payme.io/payments/subscriptions/post-pause-subscription): POST /pause-subscription — Pause # Pause - Sandbox: `POST https://sandbox.payme.io/api/pause-subscription` - Production: `POST https://live.payme.io/api/pause-subscription` ## Credentials - Request body field `seller_payme_id` (optional): MPL. Your private key in PayMe system. ## Overview **Relevant only for Direct API Integration** This endpoint is used to pause subscriptions. You can find more information in our guide - [How to create a subscription ](/marketplaces-and-platforms/payments/how-to-create-subscription). ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | no | MPL. Your private key in PayMe system. | | `sub_payme_id` | string | no | PayMe's unique subscription ID | ### Request example ```json { "seller_payme_id": "MPL00007-00007EXM-EXAMPLE0-EXAMPLE7", "sub_payme_id": "SUB16999-507640UD-83RNQDGN-YHSXHXHG" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/pause-subscription' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPL00007-00007EXM-EXAMPLE0-EXAMPLE7", "sub_payme_id": "SUB16999-507640UD-83RNQDGN-YHSXHXHG" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/pause-subscription", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPL00007-00007EXM-EXAMPLE0-EXAMPLE7", "sub_payme_id": "SUB16999-507640UD-83RNQDGN-YHSXHXHG" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/pause-subscription", json={ "seller_payme_id": "MPL00007-00007EXM-EXAMPLE0-EXAMPLE7", "sub_payme_id": "SUB16999-507640UD-83RNQDGN-YHSXHXHG", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `payme_status` | string | | | `status_error_code` | integer | | | `seller_payme_id` | string | | | `seller_id` | string | | | `sub_payme_id` | string | | | `sub_payme_code` | integer | | | `subscription_id` | string | | | `sub_created` | string | | | `sub_start_date` | string | | | `sub_prev_date` | string | | | `sub_next_date` | string | | | `sub_status` | integer | | | `sub_iteration_type` | integer | | | `sub_currency` | string | | | `sub_price` | integer | | | `sub_description` | string | | | `sub_iterations` | integer | | | `sub_iterations_completed` | integer | | | `sub_iterations_skipped` | integer | | | `sub_iterations_left` | integer | | | `sub_paid` | boolean | | | `sub_error_text` | string | | | `sub_payment_date` | string | | | `buyer_card_mask` | string | | | `buyer_card_exp` | string | | | `buyer_name` | string | | | `buyer_email` | string | | | `buyer_phone` | string | | | `buyer_social_id` | string | | ```json { "status_code": 0, "payme_status": "success", "status_error_code": 0, "seller_payme_id": "MPL00007-00007EXM-EXAMPLE0-EXAMPLE7", "seller_id": null, "sub_payme_id": "SUB16999-507640UD-83RNQDGN-YHSXHXHG", "sub_payme_code": 343324, "subscription_id": null, "sub_created": "2023-11-14 10:32:44", "sub_start_date": "2023-11-14 08:00:00", "sub_prev_date": null, "sub_next_date": "2023-11-14 08:00:00", "sub_status": 3, "sub_iteration_type": 1, "sub_currency": "ILS", "sub_price": 10000, "sub_description": "blablabla", "sub_iterations": 1, "sub_iterations_completed": 0, "sub_iterations_skipped": 0, "sub_iterations_left": 1, "sub_paid": true, "sub_error_text": "הושהה על ידי המשתמש בתאריך 14/11/2023 10:33:35", "sub_payment_date": "2023-10-31 14:23:49", "buyer_card_mask": "532610******5846", "buyer_card_exp": "0426", "buyer_name": "Ran Tester", "buyer_email": "TestTest@paymeservice.com", "buyer_phone": "05222222", "buyer_social_id": "123456789" } ``` - [Resume](https://docs-staging.payme.io/payments/subscriptions/patch-subscriptions-sub-payme-id-resume): PATCH /subscriptions/{sub_payme_id}/resume — Resume # Resume - Sandbox: `PATCH https://sandbox.payme.io/api/subscriptions/{sub_payme_id}/resume` - Production: `PATCH https://live.payme.io/api/subscriptions/{sub_payme_id}/resume` ## Credentials - Header `PayMe-Merchant-Key` (API key) ## Overview **Relevant only for Direct API Integration** This endpoint is used to resume subscriptions is in status "paused". You can find more information in our guide - [How to create a subscription ](/marketplaces-and-platforms/payments/how-to-create-subscription). ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Merchant-Key` | header | string | no | MPL. Your private key in PayMe system. | | `sub_payme_id` | path | string | yes | | ## Request body Content type: `application/json` ## Code samples ### curl ```bash curl -X PATCH 'https://sandbox.payme.io/api/subscriptions//resume' \ -H 'Content-Type: application/json' \ -H 'PayMe-Merchant-Key: ' \ --data-raw '{}' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/subscriptions//resume", { method: "PATCH", headers: { "Content-Type": "application/json", "PayMe-Merchant-Key": "", }, body: JSON.stringify({}), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.patch( "https://sandbox.payme.io/api/subscriptions//resume", headers={ "PayMe-Merchant-Key": "", }, json={}, ) print(response.text) ``` ### PHP ```php /resume'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Merchant-Key: ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) - [Update Price](https://docs-staging.payme.io/payments/subscriptions/patch-subscriptions-sub-id-set-price): PATCH /subscriptions/{sub_id}/set-price — Update Price # Update Price - Sandbox: `PATCH https://sandbox.payme.io/api/subscriptions/{sub_id}/set-price` - Production: `PATCH https://live.payme.io/api/subscriptions/{sub_id}/set-price` ## Credentials - Request body field `seller_payme_id` (required): MPL. Your private key in PayMe system. ## Overview This endpoint is used to update a subscription price. This will apply subscriptions in status "active" or subscription template in status "initial". You can find more information in our guide - [Subscriptions ](/payments/subscriptions/post-generate-subscription). ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sub_id` | path | string | yes | | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | MPL. Your private key in PayMe system. | | `sub_price` | string | yes | A single iteration final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075. Note that the minimum value is 500 | ### Request example ```json { "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sub_price": 500 } ``` ## Code samples ### curl ```bash curl -X PATCH 'https://sandbox.payme.io/api/subscriptions//set-price' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sub_price": 500 }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/subscriptions//set-price", { method: "PATCH", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sub_price": 500 }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.patch( "https://sandbox.payme.io/api/subscriptions//set-price", json={ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sub_price": 500, }, ) print(response.text) ``` ### PHP ```php /set-price'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status of the request (0 - success, 1 - error)> Allowed values `0` `1` | ### 400 (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status of the request (0 - success, 1 - error)> Allowed values `0` `1` | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | - [Capture Buyer Token](https://docs-staging.payme.io/payments/tokenization/post-capture-buyer-token): POST /capture-buyer-token — Capture Buyer Token # Capture Buyer Token - Sandbox: `POST https://sandbox.payme.io/api/capture-buyer-token` - Production: `POST https://live.payme.io/api/capture-buyer-token` ## Credentials - Request body field `seller_payme_id` (required): Our unique seller ID ## Overview This endpoint can be used only if you are PCI compliant and are able to handle raw credit card infromation. This end-point is used to create a new token, by sending a request with the full credit card data and getting a response with the token. This token can be used later on to perform sales and other payment actions. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | Our unique seller ID | | `buyer_name` | string | no | Buyer's full name | | `buyer_social_id` | string | no | Buyer's social ID number | | `buyer_email` | string | no | Buyer's email address | | `buyer_phone` | string | no | Buyer's phone number | | `buyer_zip_code` | string | no | Buyer's address zip code | | `credit_card_number` | integer | yes | Card number | | `credit_card_exp` | string | yes | Buyer's card exp (MMYY) | | `credit_card_cvv` | integer | yes | | | `buyer_perform_validation` | boolean | no | Flag for performing an online validation of the card with the Issuer. | ### Request example ```json { "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "buyer_name": "Idan testing", "buyer_social_id": "123456789", "buyer_email": "TestTest@paymeservice.com", "buyer_phone": "05222222", "buyer_zip_code": "1q2w3exx", "credit_card_number": 4111111111111111, "credit_card_exp": "0322", "credit_card_cvv": 123 } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/capture-buyer-token' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "buyer_name": "Idan testing", "buyer_social_id": "123456789", "buyer_email": "TestTest@paymeservice.com", "buyer_phone": "05222222", "buyer_zip_code": "1q2w3exx", "credit_card_number": 4111111111111111, "credit_card_exp": "0322", "credit_card_cvv": 123 }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/capture-buyer-token", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "buyer_name": "Idan testing", "buyer_social_id": "123456789", "buyer_email": "TestTest@paymeservice.com", "buyer_phone": "05222222", "buyer_zip_code": "1q2w3exx", "credit_card_number": 4111111111111111, "credit_card_exp": "0322", "credit_card_cvv": 123 }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/capture-buyer-token", json={ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "buyer_name": "Idan testing", "buyer_social_id": "123456789", "buyer_email": "TestTest@paymeservice.com", "buyer_phone": "05222222", "buyer_zip_code": "1q2w3exx", "credit_card_number": 4111111111111111, "credit_card_exp": "0322", "credit_card_cvv": 123, }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Action status code (0 - Success, 1 - Failure) | | `buyer_key` | string | Buyer's unique token | | `buyer_name` | string | Buyer's full name | | `buyer_email` | string | Buyer's email address | | `buyer_phone` | string | Buyer's phone number | | `buyer_card_mask` | string | Buyer's card mask | | `buyer_card_exp` | string | Buyer's card exp (MMYY) | | `buyer_social_id` | string | Buyer's social ID number | | `buyer_is_permanent` | boolean | Is the token temporary or permanant | | `buyer_status` | integer | The status's buyer | ```json { "status_code": 0, "buyer_key": "BUYER168-6667348Q-V8Z99RXJ-CQ60HNGY", "buyer_name": "Ran Tester", "buyer_email": "TestTest@paymeservice.com", "buyer_phone": "05222222", "buyer_card_mask": "532610******5846", "buyer_card_exp": "0426", "buyer_social_id": "123456789", "buyer_is_permanent": false, "buyer_status": null } ``` ### 356 (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `status_error_details` | string | | | `status_additional_info` | boolean | | | `status_error_code` | integer | | | `session` | string | | ```json { "status_code": 1, "status_error_details": "תוקף כרטיס אשראי לא תקין", "status_additional_info": false, "status_error_code": 356, "session": "khANe7Jl" } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | integer | | | `session` | string | | ```json { "status_code": 1, "status_error_details": "Required parameter is missing", "status_additional_info": "credit_card_cvv", "status_error_code": 1, "session": "0PFThooQ" } ``` - [Generate Sale with Token](https://docs-staging.payme.io/payments/tokenization/post-generate-sale-tokenization): How to call POST /generate-sale for Tokenization. # Generate Sale with Token This is a variant of [POST /generate-sale — Generate Payment](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale); the request and responses below are the ones documented for Tokenization. - Sandbox: `POST https://sandbox.payme.io/api/generate-sale` - Production: `POST https://live.payme.io/api/generate-sale` ## Credentials - Request body field `seller_payme_id` (required): your seller ID (MPL). It authenticates the request, so send it only from your server. ## Overview #### Generating tokens Please yeste that you can receive a token representing the buyer (including credit card information) as part of the [`generate-sale`](https://docs.paymeservice.com/docs/payme-public/b3A6MjYyMzkxODU-generate-sale) API call. This token can be used to generate future server-to-server sales without requiring the buyer to re-enter his credit card information. The token will be returned only as part of the callback. #### Obtaining Tokens There are two ways of obtaining a token: In order to receive a token in addition to charging the credit card use the `capture_buyer` attribute. In order to receive a token without charging the credit card use the dedicated `sale_type` attribute and set the value to token. Attribute| Description ---|--- `capture_buyer`| `1` Flag for requesting the buyer's token in addition to charging the credit card (0 - do yest capture token, 1 - capture token) `sale_type` |`token` Flag for requesting the buyer's token without charging the credit card #### Charging Tokens After generating a token you may charge the buyer at any point by using the buyer_key attribute when generating a new sale. Attribute| Description ---|--- `buyer_key` |`XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX` Buyer key for an instant-payment with the token ## Parameters This endpoint takes yes path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | MPL. Your private key in PayMe system. | | `sale_price` | integer | no | For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075. Note that the minimum value is 500. | | `currency` | string | no | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `product_name` | string | no | Short name and description of the product/service. This text will be shown in the invoice as well, if the seller has enabled the invoices module in his account panel. Limited to 500 characters | | `transaction_id` | string | no | Merchant's unique sale ID for correlation with us | | `installments` | string | no | Amount of installments for the sale. We allow you to manually set the number of installments or to specify a top limit of installments for the buyer to choose from while paying. Setting a fixed number of installments is simply entering a number between 1 and 12. The sale will be initiated with this number of installments and the buyer will not be able to change it. To set a range for the buyer to choose from, enter the following: 103 - allow up to 3 installments 106 - allow up to 6 installments 109 - allow up to 9 installments 112 - allow up to 12 installments | | `market_fee` | number | no | A decimal representing the percent of the sale price that is collected for the marketplace (includes VAT). This fee is added on top of our fees and transferred to the marketplace once a month. Default value is the market fee of the Seller, as set upon Seller creation. | | `sale_send_notification` | boolean | no | Flag to send email and/or SMS notifications | | `sale_callback_url` | string | no | Callback response to your page regarding call to our API. Default value is taken from the Merchant's settings. Note that you may not send a "localhost" URL as value | | `sale_email` | string | no | In case sale send notification is true provide the address to send email notification | | `sale_return_url` | string | no | We will redirect the IFRAME and the buyer to this URL upon payment success. Default value is taken from the Merchant's settings | | `sale_mobile` | string | no | In case sale send notification is true, provide the phone number to send SMS notification, if the seller has enabled the SMS module in his account panel | | `sale_name` | string | no | The name that will be displayed when sending a notification | | `capture_buyer` | boolean | no | Flag for requesting the buyer's token for this payment (0 - do not capture token, 1 - capture token). For additional information see Tokens explanation below | | `buyer_perform_validation` | boolean | no | Flag for performing an online validation of the card with the Issuer. | | `sale_type` | string | no | You can find all the sale types [Sale Types](https://docs-staging.payme.io/marketplaces-and-platforms/lists-statuses/sale-types). | | `sale_payment_method` | string | no | the Payment method used to pay the sale. For all the payment methods see [Available Payment Methods](https://docs-staging.payme.io/payments/direct-api/available-payment-methods). | | `layout` | string | no | IFRAME payment page layout. Optional attribute which may be used with "bit" sale_payment_method. Avai lable layouts are:dynamic, qr-sms or dynamic-loose dynamic loose removes the validation for the social ID and CVV. | | `language` | string | no | Changes the language of the payment IFRAME to English, as well as the error messages. Default value is Hebrew (he) | ### Request example ```json { "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": true, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "capture_buyer": false, "buyer_perform_validation": false, "sale_type": "sale", "sale_payment_method": "credit-card", "layout": "string", "language": "he" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/generate-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": true, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "capture_buyer": false, "buyer_perform_validation": false, "sale_type": "sale", "sale_payment_method": "credit-card", "layout": "string", "language": "he" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/generate-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": true, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "capture_buyer": false, "buyer_perform_validation": false, "sale_type": "sale", "sale_payment_method": "credit-card", "layout": "string", "language": "he" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/generate-sale", json={ "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "sale_price": 1000, "currency": "ILS", "product_name": "Smartphone", "transaction_id": "12345", "installments": "1", "market_fee": 0.5, "sale_send_notification": True, "sale_callback_url": "https://www.payme.io", "sale_email": "test@payme.io", "sale_return_url": "https://www.payme.io", "sale_mobile": "+9725254448888", "sale_name": "Test User", "capture_buyer": False, "buyer_perform_validation": False, "sale_type": "sale", "sale_payment_method": "credit-card", "layout": "string", "language": "he", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status of the request (0 - success, 1 - error) | | `sale_url` | string | The URL of the IFRAME secured payment form to display to the buyer | | `payme_sale_id` | string | Our unique sale ID | | `payme_sale_code` | integer | Our unique sale code (for display purposes only) | | `price` | integer | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `transaction_id` | string | Merchant's unique sale ID for correlation with us | | `currency` | string | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | ```json { "status_code": 0, "sale_url": "string", "payme_sale_id": "string", "payme_sale_code": 12345678, "price": 10000, "transaction_id": "12345", "currency": "string" } ``` - [Get Buyer Key](https://docs-staging.payme.io/payments/tokenization/post-get-buyer-key): POST /get-buyer-key — Get Buyer Key # Get Buyer Key - Sandbox: `POST https://sandbox.payme.io/api/get-buyer-key` - Production: `POST https://live.payme.io/api/get-buyer-key` ## Credentials - Request body field `seller_payme_id` (required): Our unique seller ID. ## Overview This API endpoint will allow you to get the buyer-key created and used to pay for a certain payment request in our system. #### Use Case for Israeli Direct Debit Once a new authorization request is created and the buyer is approved, a new buyer key is generated behind the scenes and can be obtained using this API endpoint. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_sale_id` | string | yes | Our unique sale ID. | | `seller_payme_id` | string | yes | Our unique seller ID. | ### Request example ```json { "payme_sale_id": "SALE1686-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_payme_id": "MPL16852-XXXXXXXX-XXXXXXXX-XXXXXXXX" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/get-buyer-key' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_sale_id": "SALE1686-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_payme_id": "MPL16852-XXXXXXXX-XXXXXXXX-XXXXXXXX" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/get-buyer-key", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_sale_id": "SALE1686-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_payme_id": "MPL16852-XXXXXXXX-XXXXXXXX-XXXXXXXX" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/get-buyer-key", json={ "payme_sale_id": "SALE1686-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_payme_id": "MPL16852-XXXXXXXX-XXXXXXXX-XXXXXXXX", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `payme_sale_id` | string | Our unique sale ID. | | `buyer_key` | string | Buyer's unique token. | | `buyer_card_mask` | string | Buyer's card mask. | | `buyer_card_expiry` | string | Buyer's card exp (MMYY). | | `buyer_card_brand` | string | Buyer's card brand. | | `status_code` | string | | ```json { "payme_sale_id": "MPL90005-90005EXM-EXAMPLE0-EXAMPLE9", "buyer_key": "BUYER166-5640185F-UFEKYAYD-WLJSO6QS", "buyer_card_mask": "532610******5846", "buyer_card_expiry": "0426", "buyer_card_brand": "099474924", "buyer_is_permanent": null, "status_code": null } ``` ### 600 (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | integer | | | `session` | string | | ```json { "status_code": 1, "status_error_details": "Buyer not found", "status_additional_info": "No Buyer for Sale", "status_error_code": 600, "session": "St4K2Azk" } ``` - [Get card details by token](https://docs-staging.payme.io/payments/tokenization/post-buyer-token-to-card-number): POST /buyer-token-to-card-number — Get card details by token # Get card details by token - Sandbox: `POST https://sandbox.payme.io/api/buyer-token-to-card-number` - Production: `POST https://live.payme.io/api/buyer-token-to-card-number` ## Credentials - Request body field `seller_payme_id` (optional): Our unique seller ID. ## Overview This endpoint can be used only if you are PCI compliant and allow to handle raw credit card infromation. This end-point is used for receiving the full credit card data by sending a request with the buyer token. Please note that in the response you won't receive CVV details, as we don't save it due to regulation. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | no | Our unique seller ID. | | `buyer_uuid2` | string | no | Buyer's public key | | `buyer_key` | string | no | Buyer's private key | ### Request example ```json { "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "buyer_uuid2": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "buyer_key": "BUYER111-XXXXXXXX-XXXXXXXX-XXXXXXXX" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/buyer-token-to-card-number' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "buyer_uuid2": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "buyer_key": "BUYER111-XXXXXXXX-XXXXXXXX-XXXXXXXX" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/buyer-token-to-card-number", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "buyer_uuid2": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "buyer_key": "BUYER111-XXXXXXXX-XXXXXXXX-XXXXXXXX" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/buyer-token-to-card-number", json={ "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "buyer_uuid2": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "buyer_key": "BUYER111-XXXXXXXX-XXXXXXXX-XXXXXXXX", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `buyer_key` | string | Buyer's unique token. | | `buyer_card_number` | string | Buyer's card mask. | | `buyer_card_exp_month` | string | Buyer's card exp (MMYY). | | `buyer_card_exp_year` | string | Credit card expiration date | ```json { "buyer_key": "BUYER111-XXXXXXXX-XXXXXXXX-XXXXXXXX", "buyer_card_number": "532**********846", "buyer_card_exp_month": "04", "buyer_card_exp_year": "26", "status_code": 0 } ``` - [Create Seller](https://docs-staging.payme.io/payments/merchants-management/post-create-seller): POST /create-seller — Create Seller # Create Seller - Sandbox: `POST https://sandbox.payme.io/api/create-seller` - Production: `POST https://live.payme.io/api/create-seller` ## Credentials - Request body field `payme_client_key` (required): PayMe Partner Key. ## Overview **Relevant only to PayMe's partners.** This endpoint allows you to create a seller as one of PayMe's partners. You can find more information in the following guide - [How to Create New Sellers](/marketplaces-and-platforms/sellers/create-seller). ##### Testing For testing purposes you can use the following testing values: Attributes |Value ---|--- seller_social_id| `9999999999` seller_email |`random@paymeservice.com` Note that by using this email you will not receive any automatic emails sent from the system seller_bank_code| `54` seller_bank_branch| `123` Any 3 digits seller_bank_account_number| `123456` Any 6 digits #### Callback upon Seller creation or update Once the Seller is created or updated, we will notify the marketplace with the Seller details with a POST request of type `x-www-form-urlencoded` to the marketplace Default Callback URL. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | PayMe Partner Key. | | `seller_first_name` | string | yes | Seller's first name | | `seller_last_name` | string | yes | Seller's last name | | `seller_social_id` | string | yes | Seller's social ID | | `seller_birthdate` | string | yes | Seller's personal birth date. ( dd/mm/yyyy structured) | | `seller_social_id_issued` | string | yes | Seller's personal social ID issuing day.( dd/mm/yyyy structured) | | `seller_gender` | number | yes | Seller's gender ( 0- Male, 1- Female) | | `seller_email` | string | yes | Seller's email address | | `seller_phone` | string | yes | Seller's phone number | | `seller_contact_email` | string | no | Seller's contact email | | `seller_contact_phone` | string | no | Seller's contact phone number that will be displayed to the buyers. If not stated, will be copied from seller_phone | | `seller_bank_code` | number | yes | Seller's bank code (Israeli only) Please see the full list of banks [Banks in Israel](/marketplaces-and-platforms/lists-statuses/banks-in-israel). | | `seller_bank_branch` | number | yes | Seller's bank branch code | | `seller_bank_account_number` | string | yes | Seller's bank account number | | `seller_description` | string | yes | Seller’s description, including offered product line and services. Limited to 255 characters. | | `seller_site_url` | string | yes | Seller’s site URL. | | `seller_person_business_type` | number | yes | Business MCC (Merchant category code). List of codes [MCC List](/marketplaces-and-platforms/lists-statuses/mcc-list). | | `seller_inc` | number | yes | Seller incorporation type (IL Only) You can find all the seller incorporation types [Seller Incorporation Types (IL)](/marketplaces-and-platforms/lists-statuses/seller-incorporation-types-il). | | `seller_inc_code` | string | no | Seller's business ID (ח.פ, ע.מ), required when seller_inc is not 1. | | `seller_retail_type` | number | no | Seller's retail type. (1 - Card not present (online) seller, 2 - Card present seller). | | `seller_merchant_name` | string | yes | Seller's merchant name, required when seller_inc is not 1. | | `seller_address_city` | string | yes | Seller's business address - City. | | `seller_address_street` | string | yes | Seller's business address - Street. | | `seller_address_street_number` | string | yes | Street number | | `seller_address_country` | string | yes | Seller's business address - Country code according to the ISO 3166. You can fond all the country codes [here](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes). | | `market_fee` | number | no | A decimal between 0.00 and 60.00 representing the percent of the sale price that is collected for the marketplace (includes VAT). This fee is added on top of our fees and transferred to the marketplace once a month. Default value is 0 | | `language` | string | no | Changes the error message language to English. Default value is Hebrew (he). | | `seller_plan` | string | no | A predefined set of settings for the seller. If required, this value will be provided by your Account Manager. | | `seller_merchant_name_en` | string | no | The seller's international name in English | | `seller_additional_details` | object | no | | | `seller_additional_details.first_name` | string | no | Seller's first name | | `seller_additional_details.last_name` | string | no | Seller's last name | | `seller_additional_details.social_id` | string | no | Seller's social ID | | `seller_additional_details.social_id_issued` | string | no | The social id document issuing date ( dd/mm/yyyy structured) | | `seller_additional_details.type` | array | no | Possible Role. An individual can have multiple roles in a company. You can find all the individual seller types [Individual Seller Types](/marketplaces-and-platforms/lists-statuses/individual-seller-types). | | `seller_additional_details.type_copy` | array | no | Possible Role. An individual can have multiple roles in a company. You can find all the individual seller types [Individual Seller Types](/marketplaces-and-platforms/lists-statuses/individual-seller-types). | | `seller_additional_details.email` | string | no | Seller's Email | | `seller_additional_details.files` | object | no | Files related to the individual, like id | | `seller_additional_details.files.type` | number | no | You can find [File Types](/marketplaces-and-platforms/lists-statuses/file-types) the file types you can upload. Only individual types are valid: 90-95. | | `seller_additional_details.files.url` | string | no | File URL | | `seller_additional_details.files.base64` | string | no | The base64 encoded file | | `seller_additional_details.files.name` | string | no | File name with extension. Allowed file extensions: `pdf`, `jpg`, `jpeg`, `png`, `bmp`, `tiff`, `doc`, `docx` | | `seller_additional_details.files.mime_type` | string | no | The mime type of the file. Most common mime types are supported, such as `application/pdf`, `application/msword`, `image/png`, `image/jpg`, `image/jpeg`, `image/tiff`, `jfif`. | | `seller_dba` | string | no | The seller's legal/registered name in Hebrew. | | `seller_dba_en` | string | no | The seller's legal/registered international name in English. | | `seller_id` | string | no | Merchant's unique seller ID for correlation with us. | ### Request example ```json { "payme_client_key": "string", "seller_id": "1234", "seller_first_name": "string", "seller_last_name": "string", "seller_social_id": "string", "seller_birthdate": "string", "seller_social_id_issued": "string", "seller_gender": 0, "seller_email": "string", "seller_phone": "string", "seller_bank_code ": 0, "seller_bank_branch": 0, "seller_bank_account_number": "string", "seller_description": "string", "seller_site_url": "string", "seller_person_business_type": 0, "seller_inc": 0, "seller_retail_type": 1, "seller_merchant_name": "string", "seller_address_city": "string", "seller_address_street": "string", "seller_address_street_number": "string", "seller_address_country": "string", "market_fee": 0, "seller_registration_date": "string" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/create-seller' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "string", "seller_id": "1234", "seller_first_name": "string", "seller_last_name": "string", "seller_social_id": "string", "seller_birthdate": "string", "seller_social_id_issued": "string", "seller_gender": 0, "seller_email": "string", "seller_phone": "string", "seller_bank_code ": 0, "seller_bank_branch": 0, "seller_bank_account_number": "string", "seller_description": "string", "seller_site_url": "string", "seller_person_business_type": 0, "seller_inc": 0, "seller_retail_type": 1, "seller_merchant_name": "string", "seller_address_city": "string", "seller_address_street": "string", "seller_address_street_number": "string", "seller_address_country": "string", "market_fee": 0, "seller_registration_date": "string" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/create-seller", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "string", "seller_id": "1234", "seller_first_name": "string", "seller_last_name": "string", "seller_social_id": "string", "seller_birthdate": "string", "seller_social_id_issued": "string", "seller_gender": 0, "seller_email": "string", "seller_phone": "string", "seller_bank_code ": 0, "seller_bank_branch": 0, "seller_bank_account_number": "string", "seller_description": "string", "seller_site_url": "string", "seller_person_business_type": 0, "seller_inc": 0, "seller_retail_type": 1, "seller_merchant_name": "string", "seller_address_city": "string", "seller_address_street": "string", "seller_address_street_number": "string", "seller_address_country": "string", "market_fee": 0, "seller_registration_date": "string" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/create-seller", json={ "payme_client_key": "string", "seller_id": "1234", "seller_first_name": "string", "seller_last_name": "string", "seller_social_id": "string", "seller_birthdate": "string", "seller_social_id_issued": "string", "seller_gender": 0, "seller_email": "string", "seller_phone": "string", "seller_bank_code ": 0, "seller_bank_branch": 0, "seller_bank_account_number": "string", "seller_description": "string", "seller_site_url": "string", "seller_person_business_type": 0, "seller_inc": 0, "seller_retail_type": 1, "seller_merchant_name": "string", "seller_address_city": "string", "seller_address_street": "string", "seller_address_street_number": "string", "seller_address_country": "string", "market_fee": 0, "seller_registration_date": "string", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0 - success, 1 - error) | | `seller_payme_id` | string | The MPL the authorization will be given for | | `seller_payme_secret` | string | The seller's secret key | | `seller_public_key` | object | PayMe seller's public key details | | `seller_public_key.uuid` | string | PayMe seller's public key | | `seller_public_key.description` | string | PayMe seller's public key description | | `seller_public_key.is_active` | boolean | Indicates if the public key is active or not (active = true) | | `seller_id` | string | The seller's ID | | `seller_dashboard_signup_link` | string | Link for the signup process | ```json { "status_code": 0, "seller_payme_id": "string", "seller_payme_secret": "string", "seller_public_key": { "uuid": "string", "description": "string", "is_active": true }, "seller_id": "string", "seller_dashboard_signup_link": "string" } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 0, "status_error_details": "string", "status_additional_info": null, "status_error_code": 0 } ``` - [Update Seller](https://docs-staging.payme.io/payments/merchants-management/post-update-seller): POST /update-seller — Update Seller # Update Seller - Sandbox: `POST https://sandbox.payme.io/api/update-seller` - Production: `POST https://live.payme.io/api/update-seller` ## Credentials - Request body field `payme_client_key` (required): PayMe Partner Key. - Request body field `seller_payme_id` (required): MPL. Your private key in PayMe system. ## Overview **Relevant only to PayMe's partners.** You can update your sellers information using the update-seller endpoint easily. ##### Testing For testing purposes you can use the following testing values: Attributes |Value ---|--- seller_social_id| `9999999999` seller_email |`random@paymeservice.com` Note that by using this email you will not receive any automatic emails sent from the system seller_bank_code| `54` seller_bank_branch| `123` Any 3 digits seller_bank_account_number| `123456` Any 6 digits #### Callback upon Seller creation or update Once the Seller is created or updated, we will notify the marketplace with the Seller details with a POST request of type `x-www-form-urlencoded` to the marketplace Default Callback URL. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | PayMe Partner Key. | | `seller_payme_id` | string | yes | MPL. Your private key in PayMe system. | | `seller_first_name` | string | yes | Seller's first name | | `seller_last_name` | string | yes | Seller's last name | | `seller_social_id` | string | yes | Seller's social ID | | `seller_birthdate` | string | yes | Seller's personal birth date. ( dd-mm-yyyy structured) | | `seller_social_id_issued` | string | yes | Seller's personal social ID issuing day.( dd-mm-yyyy structured) | | `seller_gender` | number | yes | Seller's gender ( 0- Male, 1- Female) | | `seller_email` | string | yes | Seller's email address | | `seller_phone` | string | yes | Seller's phone number | | `seller_contact_email` | string | no | Seller's contact email | | `seller_contact_phone` | string | no | Seller's contact phone number that will be displayed to the buyers. If not stated, will be copied from seller_phone | | `seller_bank_code` | number | yes | Seller's bank code (Israeli only) Please see the full list of banks [Banks in Israel](/marketplaces-and-platforms/lists-statuses/banks-in-israel). | | `seller_bank_branch` | number | yes | Seller's bank branch code | | `seller_bank_account_number` | string | yes | Seller's bank account number | | `seller_description` | string | yes | Seller’s description, including offered product line and services. Limited to 255 characters. | | `seller_site_url` | string | yes | Seller’s site URL. | | `seller_person_business_type` | number | yes | Business MCC (Merchant category code). List of codes [MCC List](/marketplaces-and-platforms/lists-statuses/mcc-list). | | `seller_inc` | number | yes | Seller incorporation type (IL Only) You can find all the seller incorporation types [Seller Incorporation Types (IL)](/marketplaces-and-platforms/lists-statuses/seller-incorporation-types-il). | | `seller_inc_code` | string | no | Seller's business ID (ח.פ, ע.מ), required when seller_inc is not 1. | | `seller_retail_type` | number | no | Seller's retail type. (1 - Card not present (online) seller, 2 - Card present seller). | | `seller_merchant_name` | string | yes | Seller's merchant name, required when seller_inc is not 1. | | `seller_address_city` | string | yes | Seller's business address - City. | | `seller_address_street` | string | yes | Seller's business address - Street. | | `seller_address_street_number` | string | yes | Street number | | `seller_address_country` | string | yes | Seller's business address - Country code according to the ISO 3166. You can fond all the country codes [here](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes). | | `market_fee` | number | no | A decimal between 0.00 and 60.00 representing the percent of the sale price that is collected for the marketplace (includes VAT). This fee is added on top of our fees and transferred to the marketplace once a month. Default value is 0 | | `language` | string | no | Changes the error message language to English. Default value is Hebrew (he). | | `seller_plan` | string | no | A predefined set of settings for the seller. If required, this value will be provided by your Account Manager. | | `seller_merchant_name_en` | string | no | The seller's international name in English | | `seller_additional_details` | object | no | | | `seller_additional_details.first_name` | string | no | Seller's first name | | `seller_additional_details.last_name` | string | no | Seller's last name | | `seller_additional_details.social_id` | string | no | Seller's social ID | | `seller_additional_details.type` | array | no | Possible Role. An individual can have multiple roles in a company. You can find all the individual seller types [Individual Seller Types](/marketplaces-and-platforms/lists-statuses/individual-seller-types). | | `seller_additional_details.email` | string | no | Seller's Email | | `seller_dba` | string | no | The seller's legal/registered name in Hebrew. | | `seller_dba_en` | string | no | The seller's legal/registered international name in English. | ### Request example ```json { "payme_client_key": "string", "seller_id": "1234", "seller_first_name": "string", "seller_last_name": "string", "seller_social_id": "string", "seller_birthdate": "string", "seller_social_id_issued": "string", "seller_gender": 0, "seller_email": "string", "seller_phone": "string", "seller_bank_code ": 0, "seller_bank_branch": 0, "seller_bank_account_number": "string", "seller_description": "string", "seller_site_url": "string", "seller_person_business_type": 0, "seller_inc": 0, "seller_retail_type": 1, "seller_merchant_name": "string", "seller_address_city": "string", "seller_address_street": "string", "seller_address_street_number": "string", "seller_address_country": "string", "market_fee": 0, "seller_registration_date": "string" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/update-seller' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "string", "seller_id": "1234", "seller_first_name": "string", "seller_last_name": "string", "seller_social_id": "string", "seller_birthdate": "string", "seller_social_id_issued": "string", "seller_gender": 0, "seller_email": "string", "seller_phone": "string", "seller_bank_code ": 0, "seller_bank_branch": 0, "seller_bank_account_number": "string", "seller_description": "string", "seller_site_url": "string", "seller_person_business_type": 0, "seller_inc": 0, "seller_retail_type": 1, "seller_merchant_name": "string", "seller_address_city": "string", "seller_address_street": "string", "seller_address_street_number": "string", "seller_address_country": "string", "market_fee": 0, "seller_registration_date": "string" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/update-seller", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "string", "seller_id": "1234", "seller_first_name": "string", "seller_last_name": "string", "seller_social_id": "string", "seller_birthdate": "string", "seller_social_id_issued": "string", "seller_gender": 0, "seller_email": "string", "seller_phone": "string", "seller_bank_code ": 0, "seller_bank_branch": 0, "seller_bank_account_number": "string", "seller_description": "string", "seller_site_url": "string", "seller_person_business_type": 0, "seller_inc": 0, "seller_retail_type": 1, "seller_merchant_name": "string", "seller_address_city": "string", "seller_address_street": "string", "seller_address_street_number": "string", "seller_address_country": "string", "market_fee": 0, "seller_registration_date": "string" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/update-seller", json={ "payme_client_key": "string", "seller_id": "1234", "seller_first_name": "string", "seller_last_name": "string", "seller_social_id": "string", "seller_birthdate": "string", "seller_social_id_issued": "string", "seller_gender": 0, "seller_email": "string", "seller_phone": "string", "seller_bank_code ": 0, "seller_bank_branch": 0, "seller_bank_account_number": "string", "seller_description": "string", "seller_site_url": "string", "seller_person_business_type": 0, "seller_inc": 0, "seller_retail_type": 1, "seller_merchant_name": "string", "seller_address_city": "string", "seller_address_street": "string", "seller_address_street_number": "string", "seller_address_country": "string", "market_fee": 0, "seller_registration_date": "string", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0 - success, 1 - error) | | `seller_payme_id` | string | The MPL the authorization will be given for | | `seller_payme_secret` | string | The seller's secret key | | `seller_public_key` | object | PayMe seller's public key details | | `seller_public_key.uuid` | string | PayMe seller's public key | | `seller_public_key.description` | string | PayMe seller's public key description | | `seller_public_key.is_active` | boolean | Indicates if the public key is active or not (active = true) | | `seller_id` | string | The seller's ID | | `seller_dashboard_signup_link` | string | Link for the signup process | ```json { "status_code": 0, "seller_payme_id": "string", "seller_payme_secret": "string", "seller_public_key": { "uuid": "string", "description": "string", "is_active": true }, "seller_id": "string", "seller_dashboard_signup_link": "string" } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 0, "status_error_details": "string", "status_additional_info": null, "status_error_code": 0 } ``` - [Upload Seller Files](https://docs-staging.payme.io/payments/merchants-management/post-upload-seller-files): POST /upload-seller-files — Upload Seller Files # Upload Seller Files - Sandbox: `POST https://sandbox.payme.io/api/upload-seller-files` - Production: `POST https://live.payme.io/api/upload-seller-files` ## Credentials - Request body field `payme_client_key` (required): Your private key provided by us for authentication - Request body field `seller_payme_id` (required): Our unique seller ID ## Overview This endpoint is used to upload files of a seller. You can find [File Types](/marketplaces-and-platforms/lists-statuses/file-types) the file types you can upload. Uploading files can be done using one or both of the following formats: #### URL of the file Attribute|Description ---------|---------- name|`social_id.pdf` File name with extension type| `1` The document type code url| `https://www.mysite.com/files/social_id.pdf` The URL of the file mime_type| `application/pdf` The mime type of the file #### base64 encoded file Attribute|Description ---------|---------- name|`social_id.pdf` File name with extension type|`1` The document type code base64|The base64 encoded file mime_type|`application/pdf` The mime type of the file ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | Your private key provided by us for authentication | | `seller_payme_id` | string | yes | Our unique seller ID | | `seller_files` | array | yes | Array of files according to the format described below | | `seller_files[].name` | string | yes | File name with extension. Allowed file extensions: `pdf`, `jpg`, `jpeg`, `png`, `bmp`, `tiff`, `doc`, `docx`. | | `seller_files[].type` | number | yes | You can find [File Types](/marketplaces-and-platforms/lists-statuses/file-types) the file types you can upload. | | `seller_files[].url` | string | no | File URL | | `seller_files[].base64` | string | no | The base64 encoded file | | `seller_files[].mime_type` | string | yes | The mime type of the file. Most common mime types are supported, such as `application/pdf`, `application/msword`, `image/png`, `image/jpg`, `image/jpeg`, `image/tiff`, `jfif`. | ### Request example ```json { "payme_client_key": "XXXXXXXX", "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_files": [ { "name": "dummy.pdf", "type": 1, "url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf", "mime_type": "application/pdf" }, { "name": "test.png", "type": 2, "base64": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAAklEQVR4AewaftIAAAkOSURBVO3BabDdZWEH4OecXKUUQeAmYRGtW2lLRVBIUkNhJgI6shgWW1nUCJgmpRMoEATNQLmFRtZWIhJEqLLHChkEKYsKKTTQkOgkECgoCtqyhL0hjEswtx/eD3/PnHO3JPeac8/veURERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERLShmvhdt+BgPIhJWpuMxRotwhTD5xHsgutxtNY+g6s0ugLTDZ9f4804G2dq7R9xhkZfwLnaQF0MxbuwWLPb/X7tj6s0u8Pv10ycodnt2kSXGIqTVbbHKpuGkxWv4y02HScrVmB3baguhmKS4hassumYpPiaTUc3/ljxNW2qLoaiW/GMTUcN2yiesenYVuVZbaouflevwek1snr1rabSa2T16ltNpVeb6tLeTsGFKtfi0wZ2Gs5V2RUr8ZqNYz5mqpyFHgO7HNNV/hC/xBobx13YX+VTuM7A7sYUxdPYSbEGmxnFatrTHlimb9/CEZrth+9p7SXciBl4EJNUHsOfaG0hDld8Egv0bS7maDYT87W2BGuwL67H0SpvYIzWzsdpijk4R9+OxTc0uwCztXYd9sI7cTbOVLwLP9O3Gbhcm+jSnu5VvIxulYtwMtZq9mF8T+VsnKlYhj0ww/rbEQsUSzFR5Tv4ONZq9jeYrzINVytexSQbZh+co7gBR6k8gl2wVrPzMVtlL9yPsXgBR+sANe3nMNyk2B6rDM6L6Fa8Fas12gJrFA9ikmY/xbsxH8dr9HmchzXY0uBsjVcUL2C8ZrthueJ6HK1RHb9VnIJ/1uhyTMdyfMDg7ImligcwWbNP4NuKs3GmRjvjccUh+I42VNd+xinWYpXB+Ry6FUdgtWav41brb5ziFwbvdJUDtLYCj1p/4xT/a/BOUzlAazfiN0a5uvazQvEmzDc4hymex7cMjxWKXXCKwTlUsRjLDI8VioMw1eAcprgar+pgde3nv3ClYiZ6cbH+7a5YZPhci0WKC9GLE/RtC+ysuNfwOQtPK25GLw7Qt/ejrvgPHa5Le/ocluMrihNwgmJbvKLRWMWzhtcUfBknKi7GxXgJYzUaq/KM4bUTvosDFbcpluAvNBqn8qwOV9e+LkENu2r0Ms7XaJ1ijOH396jhUJVu9GKGyjqVuuF3EGqYrTIJvdhXZZ3KGB2urv2tRA01PKc4FR9VeVHxNiPnZtTwFpXL8F7Fiyo7GTkXoYbdVb6v8oLKjjpc3eiyA55XHKLy34rJRt7r2EplquKXeEox2chbgQ+qTFU8pjJZh6sbfR5W/IHKnYrtcLi+bWt4vIafKzZXuVOxF3bTt27D42GVzRVv4PuKadhCa1vizUa5uvZzHHq1Ng77KpaqXKxyI7o1ewR7WX9fwhNa+xD+SLFMZZ7KPVr7Nbaz/r6NO7R2pMoylXkq92j2DqzWAbq0l7fjCkWv4jO4BrfiIMUqXKqyFtNwleJFrc3CVwzdFJyu6FVMxgN4FH+mWIw7VB7F2TgD26BXa+fj84ZuOj6h6FVsh+exFl2Kq/GEyq24HkdhAnq1dhsONIqN0V5Wowc7YE/FoTgLOyueww6arcByHKG1HbEN/hpP4wrNTsQ2WIbbVJ5CD/bGuxXH4SyMU/wn9tbsHqzBRzR7HZthD+yHh7FQoxr+QXEXHlD5EXpwDLZWnIqzUFd8E5/VbCG2wwTNHsL2mIIP4l7co1E3ZikW4HEREREREREREREREREREREREaNXTee6DkdhDuYa2OWYrtFtOEj/puJmrV2OGQbveYzDRCw1sCfxTo1OxDz9uwR/p7W/wo06RE1nmYglGs3BXH37EO7Xvz3xQ80exAT9+yH21Lcv4p80moil+nYmevTtZXRr9la8amDn4gs6QJfOcSrONzRH4nrFo/hzld2wXLEEXRq9CRMU++JujS7CydgDx+NSze7C/obmShyrmIcTVWbjAmyL2/ExjfZSrMMYzR7Crjgd38CPjXJjdI770YMe9OCLGIO7cZ/WfoNZmIMjNVqFWzEDdbyGB1TW4SbMws80uwszsCW6cK1m16AHPViEzyq+jme0thMOxERcqdH9+BX2w3uxEM+r/ASr8TGt3YfjFT/HA0a5uujPj1HDXK39CIsV+2i2Euv0bblivI3nUtSwVGuXqOyt2b/o20q8oRivA9TFhvqJYqyhG6tYZeS8jqcV4w3NNuhSrNIB6mJDbaV4zdB8ABMUC42srRSrDc10lYU6QJfYUB9WLDF4h2Kh4t/xdSNnArZULDF4l+JvFSfhKR2gS2yIY7G14ip9ew+e0GwO5hpZJymewGJ9m4n5mk3EUh2iLjbEJYqr8aShe8zI+kscqeixfh7XQbrE+roBmytm6N9PUVN5FtvjJryGrYyMmxX34Vr9uwyXKXbFQ4r/w0IcrgPUxfqYhSMUn8SvDM0OqOG32BJLDL9b0K2YamgeRg37Kg7DOTpAXQzVRzBPMQ//Zv1NVUzEPobPBThYcTBesX7uxsWK2TpAXQzF+3Gn4gc40YZZpLKH4XEKZitOx3dtmEWKzfA+o1xdDNZ7sELxOPaz4cao1G18M3Gh4hKcZ8ONUakb5epiMHbCE4qX8KcG9g7M1r8DVFbauI7BfMUCzDKw47Cb/h2gstIo1yUGsgP+R/EGxhqc+/E27I+PavZ23KD4Be608Xwa/6q4HUca2C64QnEqLtTsGByruBLrjHI1neFoXGtwTsKXFdvhOZUjsEDffoD9FMfjqwZnd6zQ6JuYZnDeh0cUn8I1invxJKbp2+k4T3EzphrYCxivA9RFf76k0QKDdylqWKtvb6CGFTaeuSr7YJrBOwRT9O92jBcRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERETGa/D8Rm8iOzF+WUQAAAABJRU5ErkJggg==", "mime_type": "image/png" } ] } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/upload-seller-files' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "XXXXXXXX", "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_files": [ { "name": "dummy.pdf", "type": 1, "url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf", "mime_type": "application/pdf" }, { "name": "test.png", "type": 2, "base64": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAAklEQVR4AewaftIAAAkOSURBVO3BabDdZWEH4OecXKUUQeAmYRGtW2lLRVBIUkNhJgI6shgWW1nUCJgmpRMoEATNQLmFRtZWIhJEqLLHChkEKYsKKTTQkOgkECgoCtqyhL0hjEswtx/eD3/PnHO3JPeac8/veURERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERLShmvhdt+BgPIhJWpuMxRotwhTD5xHsgutxtNY+g6s0ugLTDZ9f4804G2dq7R9xhkZfwLnaQF0MxbuwWLPb/X7tj6s0u8Pv10ycodnt2kSXGIqTVbbHKpuGkxWv4y02HScrVmB3baguhmKS4hassumYpPiaTUc3/ljxNW2qLoaiW/GMTUcN2yiesenYVuVZbaouflevwek1snr1rabSa2T16ltNpVeb6tLeTsGFKtfi0wZ2Gs5V2RUr8ZqNYz5mqpyFHgO7HNNV/hC/xBobx13YX+VTuM7A7sYUxdPYSbEGmxnFatrTHlimb9/CEZrth+9p7SXciBl4EJNUHsOfaG0hDld8Egv0bS7maDYT87W2BGuwL67H0SpvYIzWzsdpijk4R9+OxTc0uwCztXYd9sI7cTbOVLwLP9O3Gbhcm+jSnu5VvIxulYtwMtZq9mF8T+VsnKlYhj0ww/rbEQsUSzFR5Tv4ONZq9jeYrzINVytexSQbZh+co7gBR6k8gl2wVrPzMVtlL9yPsXgBR+sANe3nMNyk2B6rDM6L6Fa8Fas12gJrFA9ikmY/xbsxH8dr9HmchzXY0uBsjVcUL2C8ZrthueJ6HK1RHb9VnIJ/1uhyTMdyfMDg7ImligcwWbNP4NuKs3GmRjvjccUh+I42VNd+xinWYpXB+Ry6FUdgtWav41brb5ziFwbvdJUDtLYCj1p/4xT/a/BOUzlAazfiN0a5uvazQvEmzDc4hymex7cMjxWKXXCKwTlUsRjLDI8VioMw1eAcprgar+pgde3nv3ClYiZ6cbH+7a5YZPhci0WKC9GLE/RtC+ysuNfwOQtPK25GLw7Qt/ejrvgPHa5Le/ocluMrihNwgmJbvKLRWMWzhtcUfBknKi7GxXgJYzUaq/KM4bUTvosDFbcpluAvNBqn8qwOV9e+LkENu2r0Ms7XaJ1ijOH396jhUJVu9GKGyjqVuuF3EGqYrTIJvdhXZZ3KGB2urv2tRA01PKc4FR9VeVHxNiPnZtTwFpXL8F7Fiyo7GTkXoYbdVb6v8oLKjjpc3eiyA55XHKLy34rJRt7r2EplquKXeEox2chbgQ+qTFU8pjJZh6sbfR5W/IHKnYrtcLi+bWt4vIafKzZXuVOxF3bTt27D42GVzRVv4PuKadhCa1vizUa5uvZzHHq1Ng77KpaqXKxyI7o1ewR7WX9fwhNa+xD+SLFMZZ7KPVr7Nbaz/r6NO7R2pMoylXkq92j2DqzWAbq0l7fjCkWv4jO4BrfiIMUqXKqyFtNwleJFrc3CVwzdFJyu6FVMxgN4FH+mWIw7VB7F2TgD26BXa+fj84ZuOj6h6FVsh+exFl2Kq/GEyq24HkdhAnq1dhsONIqN0V5Wowc7YE/FoTgLOyueww6arcByHKG1HbEN/hpP4wrNTsQ2WIbbVJ5CD/bGuxXH4SyMU/wn9tbsHqzBRzR7HZthD+yHh7FQoxr+QXEXHlD5EXpwDLZWnIqzUFd8E5/VbCG2wwTNHsL2mIIP4l7co1E3ZikW4HEREREREREREREREREREREREaNXTee6DkdhDuYa2OWYrtFtOEj/puJmrV2OGQbveYzDRCw1sCfxTo1OxDz9uwR/p7W/wo06RE1nmYglGs3BXH37EO7Xvz3xQ80exAT9+yH21Lcv4p80moil+nYmevTtZXRr9la8amDn4gs6QJfOcSrONzRH4nrFo/hzld2wXLEEXRq9CRMU++JujS7CydgDx+NSze7C/obmShyrmIcTVWbjAmyL2/ExjfZSrMMYzR7Crjgd38CPjXJjdI770YMe9OCLGIO7cZ/WfoNZmIMjNVqFWzEDdbyGB1TW4SbMws80uwszsCW6cK1m16AHPViEzyq+jme0thMOxERcqdH9+BX2w3uxEM+r/ASr8TGt3YfjFT/HA0a5uujPj1HDXK39CIsV+2i2Euv0bblivI3nUtSwVGuXqOyt2b/o20q8oRivA9TFhvqJYqyhG6tYZeS8jqcV4w3NNuhSrNIB6mJDbaV4zdB8ABMUC42srRSrDc10lYU6QJfYUB9WLDF4h2Kh4t/xdSNnArZULDF4l+JvFSfhKR2gS2yIY7G14ip9ew+e0GwO5hpZJymewGJ9m4n5mk3EUh2iLjbEJYqr8aShe8zI+kscqeixfh7XQbrE+roBmytm6N9PUVN5FtvjJryGrYyMmxX34Vr9uwyXKXbFQ4r/w0IcrgPUxfqYhSMUn8SvDM0OqOG32BJLDL9b0K2YamgeRg37Kg7DOTpAXQzVRzBPMQ//Zv1NVUzEPobPBThYcTBesX7uxsWK2TpAXQzF+3Gn4gc40YZZpLKH4XEKZitOx3dtmEWKzfA+o1xdDNZ7sELxOPaz4cao1G18M3Gh4hKcZ8ONUakb5epiMHbCE4qX8KcG9g7M1r8DVFbauI7BfMUCzDKw47Cb/h2gstIo1yUGsgP+R/EGxhqc+/E27I+PavZ23KD4Be608Xwa/6q4HUca2C64QnEqLtTsGByruBLrjHI1neFoXGtwTsKXFdvhOZUjsEDffoD9FMfjqwZnd6zQ6JuYZnDeh0cUn8I1invxJKbp2+k4T3EzphrYCxivA9RFf76k0QKDdylqWKtvb6CGFTaeuSr7YJrBOwRT9O92jBcRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERETGa/D8Rm8iOzF+WUQAAAABJRU5ErkJggg==", "mime_type": "image/png" } ] }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/upload-seller-files", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "XXXXXXXX", "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_files": [ { "name": "dummy.pdf", "type": 1, "url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf", "mime_type": "application/pdf" }, { "name": "test.png", "type": 2, "base64": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAAklEQVR4AewaftIAAAkOSURBVO3BabDdZWEH4OecXKUUQeAmYRGtW2lLRVBIUkNhJgI6shgWW1nUCJgmpRMoEATNQLmFRtZWIhJEqLLHChkEKYsKKTTQkOgkECgoCtqyhL0hjEswtx/eD3/PnHO3JPeac8/veURERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERLShmvhdt+BgPIhJWpuMxRotwhTD5xHsgutxtNY+g6s0ugLTDZ9f4804G2dq7R9xhkZfwLnaQF0MxbuwWLPb/X7tj6s0u8Pv10ycodnt2kSXGIqTVbbHKpuGkxWv4y02HScrVmB3baguhmKS4hassumYpPiaTUc3/ljxNW2qLoaiW/GMTUcN2yiesenYVuVZbaouflevwek1snr1rabSa2T16ltNpVeb6tLeTsGFKtfi0wZ2Gs5V2RUr8ZqNYz5mqpyFHgO7HNNV/hC/xBobx13YX+VTuM7A7sYUxdPYSbEGmxnFatrTHlimb9/CEZrth+9p7SXciBl4EJNUHsOfaG0hDld8Egv0bS7maDYT87W2BGuwL67H0SpvYIzWzsdpijk4R9+OxTc0uwCztXYd9sI7cTbOVLwLP9O3Gbhcm+jSnu5VvIxulYtwMtZq9mF8T+VsnKlYhj0ww/rbEQsUSzFR5Tv4ONZq9jeYrzINVytexSQbZh+co7gBR6k8gl2wVrPzMVtlL9yPsXgBR+sANe3nMNyk2B6rDM6L6Fa8Fas12gJrFA9ikmY/xbsxH8dr9HmchzXY0uBsjVcUL2C8ZrthueJ6HK1RHb9VnIJ/1uhyTMdyfMDg7ImligcwWbNP4NuKs3GmRjvjccUh+I42VNd+xinWYpXB+Ry6FUdgtWav41brb5ziFwbvdJUDtLYCj1p/4xT/a/BOUzlAazfiN0a5uvazQvEmzDc4hymex7cMjxWKXXCKwTlUsRjLDI8VioMw1eAcprgar+pgde3nv3ClYiZ6cbH+7a5YZPhci0WKC9GLE/RtC+ysuNfwOQtPK25GLw7Qt/ejrvgPHa5Le/ocluMrihNwgmJbvKLRWMWzhtcUfBknKi7GxXgJYzUaq/KM4bUTvosDFbcpluAvNBqn8qwOV9e+LkENu2r0Ms7XaJ1ijOH396jhUJVu9GKGyjqVuuF3EGqYrTIJvdhXZZ3KGB2urv2tRA01PKc4FR9VeVHxNiPnZtTwFpXL8F7Fiyo7GTkXoYbdVb6v8oLKjjpc3eiyA55XHKLy34rJRt7r2EplquKXeEox2chbgQ+qTFU8pjJZh6sbfR5W/IHKnYrtcLi+bWt4vIafKzZXuVOxF3bTt27D42GVzRVv4PuKadhCa1vizUa5uvZzHHq1Ng77KpaqXKxyI7o1ewR7WX9fwhNa+xD+SLFMZZ7KPVr7Nbaz/r6NO7R2pMoylXkq92j2DqzWAbq0l7fjCkWv4jO4BrfiIMUqXKqyFtNwleJFrc3CVwzdFJyu6FVMxgN4FH+mWIw7VB7F2TgD26BXa+fj84ZuOj6h6FVsh+exFl2Kq/GEyq24HkdhAnq1dhsONIqN0V5Wowc7YE/FoTgLOyueww6arcByHKG1HbEN/hpP4wrNTsQ2WIbbVJ5CD/bGuxXH4SyMU/wn9tbsHqzBRzR7HZthD+yHh7FQoxr+QXEXHlD5EXpwDLZWnIqzUFd8E5/VbCG2wwTNHsL2mIIP4l7co1E3ZikW4HEREREREREREREREREREREREaNXTee6DkdhDuYa2OWYrtFtOEj/puJmrV2OGQbveYzDRCw1sCfxTo1OxDz9uwR/p7W/wo06RE1nmYglGs3BXH37EO7Xvz3xQ80exAT9+yH21Lcv4p80moil+nYmevTtZXRr9la8amDn4gs6QJfOcSrONzRH4nrFo/hzld2wXLEEXRq9CRMU++JujS7CydgDx+NSze7C/obmShyrmIcTVWbjAmyL2/ExjfZSrMMYzR7Crjgd38CPjXJjdI770YMe9OCLGIO7cZ/WfoNZmIMjNVqFWzEDdbyGB1TW4SbMws80uwszsCW6cK1m16AHPViEzyq+jme0thMOxERcqdH9+BX2w3uxEM+r/ASr8TGt3YfjFT/HA0a5uujPj1HDXK39CIsV+2i2Euv0bblivI3nUtSwVGuXqOyt2b/o20q8oRivA9TFhvqJYqyhG6tYZeS8jqcV4w3NNuhSrNIB6mJDbaV4zdB8ABMUC42srRSrDc10lYU6QJfYUB9WLDF4h2Kh4t/xdSNnArZULDF4l+JvFSfhKR2gS2yIY7G14ip9ew+e0GwO5hpZJymewGJ9m4n5mk3EUh2iLjbEJYqr8aShe8zI+kscqeixfh7XQbrE+roBmytm6N9PUVN5FtvjJryGrYyMmxX34Vr9uwyXKXbFQ4r/w0IcrgPUxfqYhSMUn8SvDM0OqOG32BJLDL9b0K2YamgeRg37Kg7DOTpAXQzVRzBPMQ//Zv1NVUzEPobPBThYcTBesX7uxsWK2TpAXQzF+3Gn4gc40YZZpLKH4XEKZitOx3dtmEWKzfA+o1xdDNZ7sELxOPaz4cao1G18M3Gh4hKcZ8ONUakb5epiMHbCE4qX8KcG9g7M1r8DVFbauI7BfMUCzDKw47Cb/h2gstIo1yUGsgP+R/EGxhqc+/E27I+PavZ23KD4Be608Xwa/6q4HUca2C64QnEqLtTsGByruBLrjHI1neFoXGtwTsKXFdvhOZUjsEDffoD9FMfjqwZnd6zQ6JuYZnDeh0cUn8I1invxJKbp2+k4T3EzphrYCxivA9RFf76k0QKDdylqWKtvb6CGFTaeuSr7YJrBOwRT9O92jBcRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERETGa/D8Rm8iOzF+WUQAAAABJRU5ErkJggg==", "mime_type": "image/png" } ] }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/upload-seller-files", json={ "payme_client_key": "XXXXXXXX", "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_files": [ { "name": "dummy.pdf", "type": 1, "url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf", "mime_type": "application/pdf", }, { "name": "test.png", "type": 2, "base64": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAAklEQVR4AewaftIAAAkOSURBVO3BabDdZWEH4OecXKUUQeAmYRGtW2lLRVBIUkNhJgI6shgWW1nUCJgmpRMoEATNQLmFRtZWIhJEqLLHChkEKYsKKTTQkOgkECgoCtqyhL0hjEswtx/eD3/PnHO3JPeac8/veURERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERLShmvhdt+BgPIhJWpuMxRotwhTD5xHsgutxtNY+g6s0ugLTDZ9f4804G2dq7R9xhkZfwLnaQF0MxbuwWLPb/X7tj6s0u8Pv10ycodnt2kSXGIqTVbbHKpuGkxWv4y02HScrVmB3baguhmKS4hassumYpPiaTUc3/ljxNW2qLoaiW/GMTUcN2yiesenYVuVZbaouflevwek1snr1rabSa2T16ltNpVeb6tLeTsGFKtfi0wZ2Gs5V2RUr8ZqNYz5mqpyFHgO7HNNV/hC/xBobx13YX+VTuM7A7sYUxdPYSbEGmxnFatrTHlimb9/CEZrth+9p7SXciBl4EJNUHsOfaG0hDld8Egv0bS7maDYT87W2BGuwL67H0SpvYIzWzsdpijk4R9+OxTc0uwCztXYd9sI7cTbOVLwLP9O3Gbhcm+jSnu5VvIxulYtwMtZq9mF8T+VsnKlYhj0ww/rbEQsUSzFR5Tv4ONZq9jeYrzINVytexSQbZh+co7gBR6k8gl2wVrPzMVtlL9yPsXgBR+sANe3nMNyk2B6rDM6L6Fa8Fas12gJrFA9ikmY/xbsxH8dr9HmchzXY0uBsjVcUL2C8ZrthueJ6HK1RHb9VnIJ/1uhyTMdyfMDg7ImligcwWbNP4NuKs3GmRjvjccUh+I42VNd+xinWYpXB+Ry6FUdgtWav41brb5ziFwbvdJUDtLYCj1p/4xT/a/BOUzlAazfiN0a5uvazQvEmzDc4hymex7cMjxWKXXCKwTlUsRjLDI8VioMw1eAcprgar+pgde3nv3ClYiZ6cbH+7a5YZPhci0WKC9GLE/RtC+ysuNfwOQtPK25GLw7Qt/ejrvgPHa5Le/ocluMrihNwgmJbvKLRWMWzhtcUfBknKi7GxXgJYzUaq/KM4bUTvosDFbcpluAvNBqn8qwOV9e+LkENu2r0Ms7XaJ1ijOH396jhUJVu9GKGyjqVuuF3EGqYrTIJvdhXZZ3KGB2urv2tRA01PKc4FR9VeVHxNiPnZtTwFpXL8F7Fiyo7GTkXoYbdVb6v8oLKjjpc3eiyA55XHKLy34rJRt7r2EplquKXeEox2chbgQ+qTFU8pjJZh6sbfR5W/IHKnYrtcLi+bWt4vIafKzZXuVOxF3bTt27D42GVzRVv4PuKadhCa1vizUa5uvZzHHq1Ng77KpaqXKxyI7o1ewR7WX9fwhNa+xD+SLFMZZ7KPVr7Nbaz/r6NO7R2pMoylXkq92j2DqzWAbq0l7fjCkWv4jO4BrfiIMUqXKqyFtNwleJFrc3CVwzdFJyu6FVMxgN4FH+mWIw7VB7F2TgD26BXa+fj84ZuOj6h6FVsh+exFl2Kq/GEyq24HkdhAnq1dhsONIqN0V5Wowc7YE/FoTgLOyueww6arcByHKG1HbEN/hpP4wrNTsQ2WIbbVJ5CD/bGuxXH4SyMU/wn9tbsHqzBRzR7HZthD+yHh7FQoxr+QXEXHlD5EXpwDLZWnIqzUFd8E5/VbCG2wwTNHsL2mIIP4l7co1E3ZikW4HEREREREREREREREREREREREaNXTee6DkdhDuYa2OWYrtFtOEj/puJmrV2OGQbveYzDRCw1sCfxTo1OxDz9uwR/p7W/wo06RE1nmYglGs3BXH37EO7Xvz3xQ80exAT9+yH21Lcv4p80moil+nYmevTtZXRr9la8amDn4gs6QJfOcSrONzRH4nrFo/hzld2wXLEEXRq9CRMU++JujS7CydgDx+NSze7C/obmShyrmIcTVWbjAmyL2/ExjfZSrMMYzR7Crjgd38CPjXJjdI770YMe9OCLGIO7cZ/WfoNZmIMjNVqFWzEDdbyGB1TW4SbMws80uwszsCW6cK1m16AHPViEzyq+jme0thMOxERcqdH9+BX2w3uxEM+r/ASr8TGt3YfjFT/HA0a5uujPj1HDXK39CIsV+2i2Euv0bblivI3nUtSwVGuXqOyt2b/o20q8oRivA9TFhvqJYqyhG6tYZeS8jqcV4w3NNuhSrNIB6mJDbaV4zdB8ABMUC42srRSrDc10lYU6QJfYUB9WLDF4h2Kh4t/xdSNnArZULDF4l+JvFSfhKR2gS2yIY7G14ip9ew+e0GwO5hpZJymewGJ9m4n5mk3EUh2iLjbEJYqr8aShe8zI+kscqeixfh7XQbrE+roBmytm6N9PUVN5FtvjJryGrYyMmxX34Vr9uwyXKXbFQ4r/w0IcrgPUxfqYhSMUn8SvDM0OqOG32BJLDL9b0K2YamgeRg37Kg7DOTpAXQzVRzBPMQ//Zv1NVUzEPobPBThYcTBesX7uxsWK2TpAXQzF+3Gn4gc40YZZpLKH4XEKZitOx3dtmEWKzfA+o1xdDNZ7sELxOPaz4cao1G18M3Gh4hKcZ8ONUakb5epiMHbCE4qX8KcG9g7M1r8DVFbauI7BfMUCzDKw47Cb/h2gstIo1yUGsgP+R/EGxhqc+/E27I+PavZ23KD4Be608Xwa/6q4HUca2C64QnEqLtTsGByruBLrjHI1neFoXGtwTsKXFdvhOZUjsEDffoD9FMfjqwZnd6zQ6JuYZnDeh0cUn8I1invxJKbp2+k4T3EzphrYCxivA9RFf76k0QKDdylqWKtvb6CGFTaeuSr7YJrBOwRT9O92jBcRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERETGa/D8Rm8iOzF+WUQAAAABJRU5ErkJggg==", "mime_type": "image/png", }, ], }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0 - success, 1 - error) | ```json { "status_code": 1 } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 0, "status_error_details": "string", "status_additional_info": "string", "status_error_code": 0 } ``` - [Retrieve Seller's Additional Services Data](https://docs-staging.payme.io/payments/merchants-management/post-get-vas-seller): POST /get-vas-seller — Retrieve Seller's Additional Services Data # Retrieve Seller's Additional Services Data - Sandbox: `POST https://sandbox.payme.io/api/get-vas-seller` - Production: `POST https://live.payme.io/api/get-vas-seller` ## Credentials - Request body field `payme_client_key` (required): The PayMe client key - Request body field `seller_payme_id` (required): The MPL of the seller ## Overview This endpoint is used to retrieve seller's additional services data. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | The PayMe client key | | `seller_payme_id` | string | yes | The MPL of the seller | ### Request example ```json { "payme_client_key": "", "seller_payme_id": "MPL00011-00011EXM-EXAMPLE0-EXAMPLE1" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/get-vas-seller' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "", "seller_payme_id": "MPL00011-00011EXM-EXAMPLE0-EXAMPLE1" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/get-vas-seller", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "", "seller_payme_id": "MPL00011-00011EXM-EXAMPLE0-EXAMPLE1" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/get-vas-seller", json={ "payme_client_key": "", "seller_payme_id": "MPL00011-00011EXM-EXAMPLE0-EXAMPLE1", }, ) print(response.text) ``` ### PHP ```php ", "seller_payme_id": "MPL00011-00011EXM-EXAMPLE0-EXAMPLE1" } BODY; $ch = curl_init('https://sandbox.payme.io/api/get-vas-seller'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | 0 success 1 failrue | | `seller_payme_id` | string | The MPL of the seller | | `vas_payme_id` | string | The VAS guid | | `items_count` | integer | VASes count | | `items` | array | | | `items[].vas_description` | string | The VAS description | | `items[].vas_type` | string | The VAS type | | `items[].vas_api_key` | string | The VAS Guid | | `items[].vas_is_active` | boolean | Is the VAS active or not | | `items[].vas_payer_type` | integer | The payer type | | `items[].vas_price_currency` | string | VAS fee currency | | `items[].vas_price_setup_fixed` | integer | VAS setup price (fixed) | | `items[].vas_price_periodic_fixed` | integer | VAS periodic price (fixed) | | `items[].vas_price_periodic_variable` | string | VAS periodic price (fixed) | | `items[].vas_price_usage_fixed` | integer | VAS usage price (fixed) | | `items[].vas_price_usage_variable` | string | VAS usage price (fixed) | | `items[].vas_market_fee` | string | VAS market fee | | `items[].vas_period` | integer | VAS period \| Code ----\|---- Instant \| 1 Daily \| 2 Monthly \| 3 Yearly \| 4 | | `items[].vas_data` | array | Data that saved under the VAS | ```json { "status_code": 0, "seller_payme_id": "MPL16581-DEMO-DEMO-DEMO", "vas_payme_id": null, "items_count": 15, "items": [ { "vas_description": "עמלת סליקה", "vas_type": "Settlements", "vas_api_key": null, "vas_is_active": true, "vas_payer_type": 2, "vas_price_currency": "ILS", "vas_price_setup_fixed": 0, "vas_price_periodic_fixed": 0, "vas_price_periodic_variable": "0.00", "vas_price_usage_fixed": 0, "vas_price_usage_variable": "0.00", "vas_market_fee": null, "vas_period": 1, "vas_data": [] } ] } ``` - [Withdraw Balance](https://docs-staging.payme.io/payments/merchants-management/post-withdraw-balance): POST /withdraw-balance — Withdraw Balance # Withdraw Balance - Sandbox: `POST https://sandbox.payme.io/api/withdraw-balance` - Production: `POST https://live.payme.io/api/withdraw-balance` ## Credentials - Request body field `payme_client_key` (required): Your private key provided by us for authentication - Request body field `seller_payme_id` (required): Our unique seller ID ## Overview This endpoint is used to generate a new request to withdraw balance. #### Notes * Until we obtain and verify the 3 mandatory documents (`Social Id, Bank, Corporate Certificate`), funds will not be available for withdrawal to the Seller's bank account. * **Partial-withdrawal** - In order to create a partial-withdrawal, you will need to add another parameter to your request which states which transactions you are willing to get the balance for to your bank account. Parameter|Description ---|--- `transaction_ids`| The transaction GUIDs that will be included as a part of your withdrawal request. ### Withdrawal Callback Notification Types Notification |Description --|-- withdrawal-complete |A withdrawal was completed successfully Attribute| Description --|-- status_code |`0` Status of the request (0 - success, 1 - error) notify_type |`withdrawal-complete` seller_payme_id| `XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX` tran_payme_code| `123456` Our unique Withdrawal code tran_created |`2016-01-01 15:15:15` tran_type |`40` Financial Transaction type Bank Withdrawal tran_currency |`USD` tran_total |`10000` tran_description| `משיכה לבנק ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | Your private key provided by us for authentication | | `seller_payme_id` | string | yes | Our unique seller ID | | `withdrawal_currency` | string | yes | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `language` | string | no | Changes the error message language to English. Default value is Hebrew (he) | | `transaction_ids` | array | no | The transaction IDs that will be used for the partial withdrawal request. Transaction guids can be fetched using our `get-transcations` API endpoint. Example: TRANDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX | ### Request example ```json { "payme_client_key": "string", "seller_payme_id": "string", "withdrawal_currency": "string" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/withdraw-balance' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "string", "seller_payme_id": "string", "withdrawal_currency": "string" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/withdraw-balance", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "string", "seller_payme_id": "string", "withdrawal_currency": "string" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/withdraw-balance", json={ "payme_client_key": "string", "seller_payme_id": "string", "withdrawal_currency": "string", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0 - success, 1 - error) | ```json { "status_code": 0 } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 0, "status_error_details": "string", "status_additional_info": null, "status_error_code": 0 } ``` - [Get Seller Public Key](https://docs-staging.payme.io/payments/merchants-management/get-sellers-mpl-public-keys): GET /sellers/{seller_payme_id}/public-keys — Get Seller Public Key # Get Seller Public Key - Sandbox: `GET https://sandbox.payme.io/api/sellers/{seller_payme_id}/public-keys` - Production: `GET https://live.payme.io/api/sellers/{seller_payme_id}/public-keys` ## Credentials - Header `PayMe-Partner-Key` (API key) ## Overview This API endpoint will allow you as a partner to get the unique public keys used for various services in our system. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Partner-Key` | header | string | yes | The PayMe unique partner key. | | `seller_payme_id` | path | string | yes | | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/sellers//public-keys' \ -H 'PayMe-Partner-Key: ' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/sellers//public-keys", { method: "GET", headers: { "PayMe-Partner-Key": "", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/sellers//public-keys", headers={ "PayMe-Partner-Key": "", }, ) print(response.text) ``` ### PHP ```php /public-keys'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'PayMe-Partner-Key: ', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status code 0 - Success Status code 1 - Failure | | `page` | integer | Page presented | | `items_total` | integer | Total count of items | | `items_per_page` | integer | Items per page count | | `seller_payme_id` | string | The unique seller ID | | `items` | array | | | `items[].uuid` | string | The unique public key | | `items[].description` | string | The public key title | ```json { "status_code": 0, "page": 1, "items_total": 1, "items_per_page": 1, "seller_payme_id": "MPL151111-1111111-SAUCJ4KX-TVEDZCIN", "items": [ { "uuid": "12345678-7c83-46fc-ac97-12345678", "description": "PayMe-Public-Key" } ] } ``` - [Delayed Market Fee](https://docs-staging.payme.io/payments/merchants-management/patch-sales-guid-external-market-fee): PATCH /sales/{guid}/external-market-fee — Delayed Market Fee # Delayed Market Fee - Sandbox: `PATCH https://sandbox.payme.io/api/sales/{guid}/external-market-fee` - Production: `PATCH https://live.payme.io/api/sales/{guid}/external-market-fee` ## Credentials - Header `PayMe-Partner-Key` (API key) and Header `PayMe-Merchant-Key` (API key) ## Overview This endpoint allows you to create a new charge (fee) that is connected to a sale and is limited by the transaction amount. ### Limitations 1. You must include at least one of the following - `market_fee_percentage` or `market_fee_fixed` 2. The sale must be generated by the MPL 3. `market_fee_percentage` - can be from 0.0 to 60.0 4. `market_fee_fixed` - limited to the amount settled to the wallet and cannot be higher than that. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Partner-Key` | header | string | no | The partner secret key. | | `PayMe-Merchant-Key` | header | string | no | The MPL of the seller. | | `guid` | path | string | yes | | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `market_fee_percentage` | number | no | The percentage that will be charged. Limited to be between 0 to 60. | | `market_fee_fixed` | integer | no | The fixed market fee - limited to the amount settled to the wallet. | ### Request example ```json { "market_fee_percentage": 10.2, "market_fee_fixed": 15000 } ``` ## Code samples ### curl ```bash curl -X PATCH 'https://sandbox.payme.io/api/sales//external-market-fee' \ -H 'Content-Type: application/json' \ -H 'PayMe-Partner-Key: ' \ -H 'PayMe-Merchant-Key: ' \ --data-raw '{ "market_fee_percentage": 10.2, "market_fee_fixed": 15000 }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/sales//external-market-fee", { method: "PATCH", headers: { "Content-Type": "application/json", "PayMe-Partner-Key": "", "PayMe-Merchant-Key": "", }, body: JSON.stringify({ "market_fee_percentage": 10.2, "market_fee_fixed": 15000 }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.patch( "https://sandbox.payme.io/api/sales//external-market-fee", headers={ "PayMe-Partner-Key": "", "PayMe-Merchant-Key": "", }, json={ "market_fee_percentage": 10.2, "market_fee_fixed": 15000, }, ) print(response.text) ``` ### PHP ```php /external-market-fee'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Partner-Key: ', 'PayMe-Merchant-Key: ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | 0 - Sucess 1 - Failure | | `payme_status` | string | The status of the action. | | `payme_sale_id` | string | The sale the fee was associated with. | ```json { "status_code": 0, "payme_status": "success", "payme_sale_id": "SALEGUID-SALEGUID-SALEGUID-SALEGUID" } ``` - [Create Individual](https://docs-staging.payme.io/payments/merchants-management/post-sellers-mpl-key-individuals): POST /sellers/{mpl_key}/individuals — Create Individual # Create Individual - Sandbox: `POST https://sandbox.payme.io/api/sellers/{mpl_key}/individuals` - Production: `POST https://live.payme.io/api/sellers/{mpl_key}/individuals` ## Credentials - Header `PayMe-Merchant-Key` (API key) - Header `PayMe-Signature` (optional): Example: sk_test__123123213123 ## Overview Using this method, you will be able to create a new individual under your company. When creating an individual, you will need to set it's roles based on the following list: Role | Enum -- | -- Owner | 1 Signatory | 2 Director | 4 Executive | 8 Back Office | 16 ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Signature` | header | string | no | Example: sk_test__123123213123 | | `PayMe-Merchant-Key` | header | string | no | Example: MPL123-123-123 | | `mpl_key` | path | string | yes | | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `first_name` | string | no | Individual's first name in the company's local language. | | `first_name_en` | string | no | Individual's first name in English. | | `last_name` | string | no | Individual's last name in the company's local language. | | `last_name_en` | string | no | Individual's last name in english. | | `national_id` | string | no | Individual's national ID. | | `social_id` | string | no | Individual's national ID (Will be deprecated). | | `social_id_issued` | string | no | Individual's Social ID issuing date. | | `social_id_country` | string | no | Individual's Social ID issuing country. | | `birthdate` | string | no | The birthdate of the individual. | | `gender` | string | no | The gender of the individual. | | `email` | string | no | The email address of the individual. Must be in an email address format. | | `phone` | string | no | The phone number of the individual. | | `bank` | string | no | The bank code of the invdividual. | | `bank_account` | string | no | The bank account number of the invdividual. | | `bank_account_branch` | string | no | The bank account branch of the invdividual. | | `bank_account_number_foreign` | string | no | The foreign bank account number of the individual. | | `bank_routing_number_foreign` | string | no | The foreign bank account routing number of the individual. | | `iban` | string | no | The individual's bank account IBAN. | | `is_active` | boolean | no | The indicator whether the individual is a part of the company or not. | | `block_reason` | string | no | The block reason of the individual from accessing PayMe's platform and data. | | `account_status` | string | no | The individual's account status. | | `address_street` | string | no | The street address of the individual. | | `address_street_intl` | string | no | The international street address of the individual. | | `address_street_number` | string | no | The street address number of the individual. | | `address_zip` | string | no | The street address ZIP code of the individual. | | `address_city` | string | no | The street address city of the individual. | | `address_city_intl` | string | no | The international street address city of the individual. | | `address_country` | string | no | The street address country of the individual. | | `address_state` | string | no | The street address state of the individual. | | `additional_data` | string | no | Any additional data that needs to be stored under the individual in a JSON format. | | `role` | array | no | 1 => "Owner", 2 => "Signatory", 4 => "Director", 8 => "Executive", 16 => "Back Office", | | `is_primary` | boolean | no | Setting the primary flag under the company whether the individual is the primary of the company. | | `ownership_percentage` | string | no | Example: "20.5" | | `business_title` | string | no | The business title of the individual. | ### Request example ```json { "individual_first_name": "John", "individual_first_name_en": "John", "individual_last_name": "Doe", "individual_last_name_en": "Doe", "individual_national_id": "1234567890", "individual_social_id": "987654321", "individual_social_id_issued": "2022-01-01", "individual_social_id_country": "US", "individual_birthdate": "1990-01-01", "individual_gender": "Male", "individual_email": "johndoe@example.com", "individual_phone": "1234567890", "individual_bank": "PayMe Bank", "individual_bank_account": "9876543210", "individual_bank_account_branch": "Main Branch", "individual_bank_account_number_foreign": "1234567890", "individual_bank_routing_number_foreign": "ABCDEFG12345", "individual_iban": "US00 ABCD 1234 5678 90", "individual_is_active": true, "individual_block_reason": "No reason", "individual_account_status": "Active", "individual_address_street": "123 PayMe St.", "individual_address_street_intl": "123 PayMe St.", "individual_address_street_number": "123", "individual_address_zip": "12345", "individual_address_city": "PayMe City", "individual_address_city_intl": "PayMe City", "individual_address_country": "US", "individual_address_state": "PayMe State", "individual_additional_data": "Additional data here" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/sellers//individuals' \ -H 'Content-Type: application/json' \ -H 'PayMe-Signature: ' \ -H 'PayMe-Merchant-Key: ' \ --data-raw '{ "individual_first_name": "John", "individual_first_name_en": "John", "individual_last_name": "Doe", "individual_last_name_en": "Doe", "individual_national_id": "1234567890", "individual_social_id": "987654321", "individual_social_id_issued": "2022-01-01", "individual_social_id_country": "US", "individual_birthdate": "1990-01-01", "individual_gender": "Male", "individual_email": "johndoe@example.com", "individual_phone": "1234567890", "individual_bank": "PayMe Bank", "individual_bank_account": "9876543210", "individual_bank_account_branch": "Main Branch", "individual_bank_account_number_foreign": "1234567890", "individual_bank_routing_number_foreign": "ABCDEFG12345", "individual_iban": "US00 ABCD 1234 5678 90", "individual_is_active": true, "individual_block_reason": "No reason", "individual_account_status": "Active", "individual_address_street": "123 PayMe St.", "individual_address_street_intl": "123 PayMe St.", "individual_address_street_number": "123", "individual_address_zip": "12345", "individual_address_city": "PayMe City", "individual_address_city_intl": "PayMe City", "individual_address_country": "US", "individual_address_state": "PayMe State", "individual_additional_data": "Additional data here" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/sellers//individuals", { method: "POST", headers: { "Content-Type": "application/json", "PayMe-Signature": "", "PayMe-Merchant-Key": "", }, body: JSON.stringify({ "individual_first_name": "John", "individual_first_name_en": "John", "individual_last_name": "Doe", "individual_last_name_en": "Doe", "individual_national_id": "1234567890", "individual_social_id": "987654321", "individual_social_id_issued": "2022-01-01", "individual_social_id_country": "US", "individual_birthdate": "1990-01-01", "individual_gender": "Male", "individual_email": "johndoe@example.com", "individual_phone": "1234567890", "individual_bank": "PayMe Bank", "individual_bank_account": "9876543210", "individual_bank_account_branch": "Main Branch", "individual_bank_account_number_foreign": "1234567890", "individual_bank_routing_number_foreign": "ABCDEFG12345", "individual_iban": "US00 ABCD 1234 5678 90", "individual_is_active": true, "individual_block_reason": "No reason", "individual_account_status": "Active", "individual_address_street": "123 PayMe St.", "individual_address_street_intl": "123 PayMe St.", "individual_address_street_number": "123", "individual_address_zip": "12345", "individual_address_city": "PayMe City", "individual_address_city_intl": "PayMe City", "individual_address_country": "US", "individual_address_state": "PayMe State", "individual_additional_data": "Additional data here" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/sellers//individuals", headers={ "PayMe-Signature": "", "PayMe-Merchant-Key": "", }, json={ "individual_first_name": "John", "individual_first_name_en": "John", "individual_last_name": "Doe", "individual_last_name_en": "Doe", "individual_national_id": "1234567890", "individual_social_id": "987654321", "individual_social_id_issued": "2022-01-01", "individual_social_id_country": "US", "individual_birthdate": "1990-01-01", "individual_gender": "Male", "individual_email": "johndoe@example.com", "individual_phone": "1234567890", "individual_bank": "PayMe Bank", "individual_bank_account": "9876543210", "individual_bank_account_branch": "Main Branch", "individual_bank_account_number_foreign": "1234567890", "individual_bank_routing_number_foreign": "ABCDEFG12345", "individual_iban": "US00 ABCD 1234 5678 90", "individual_is_active": True, "individual_block_reason": "No reason", "individual_account_status": "Active", "individual_address_street": "123 PayMe St.", "individual_address_street_intl": "123 PayMe St.", "individual_address_street_number": "123", "individual_address_zip": "12345", "individual_address_city": "PayMe City", "individual_address_city_intl": "PayMe City", "individual_address_country": "US", "individual_address_state": "PayMe State", "individual_additional_data": "Additional data here", }, ) print(response.text) ``` ### PHP ```php /individuals'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Signature: ', 'PayMe-Merchant-Key: ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) - [Update Individual](https://docs-staging.payme.io/payments/merchants-management/post-sellers-mpl-key-individuals-2): POST /sellers/{mpl_key}/individuals/{individual_key} — Update Individual # Update Individual - Sandbox: `POST https://sandbox.payme.io/api/sellers/{mpl_key}/individuals/{individual_key}` - Production: `POST https://live.payme.io/api/sellers/{mpl_key}/individuals/{individual_key}` ## Credentials No credentials are documented for this endpoint. ## Overview Using this method, you will be able to update an existing individual under your company. When creating an individual, you will need to set it's roles based on the following list: Role | Enum -- | -- Owner | 1 Signatory | 2 Director | 4 Executive | 8 Back Office | 16 ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mpl_key` | path | string | yes | | | `individual_key` | path | string | yes | | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `first_name` | string | no | Individual's first name in the company's local language. | | `first_name_en` | string | no | Individual's first name in English. | | `last_name` | string | no | Individual's last name in the company's local language. | | `last_name_en` | string | no | Individual's last name in english. | | `national_id` | string | no | Individual's national ID. | | `social_id` | string | no | Individual's national ID (Will be deprecated). | | `social_id_issued` | string | no | Individual's Social ID issuing date. | | `social_id_country` | string | no | Individual's Social ID issuing country. | | `birthdate` | string | no | The birthdate of the individual. | | `gender` | string | no | The gender of the individual. | | `email` | string | no | The email address of the individual. Must be in an email address format. | | `phone` | string | no | The phone number of the individual. | | `bank` | string | no | The bank code of the invdividual. | | `bank_account` | string | no | The bank account number of the invdividual. | | `bank_account_branch` | string | no | The bank account branch of the invdividual. | | `bank_account_number_foreign` | string | no | The foreign bank account number of the individual. | | `bank_routing_number_foreign` | string | no | The foreign bank account routing number of the individual. | | `iban` | string | no | The individual's bank account IBAN. | | `is_active` | boolean | no | The indicator whether the individual is a part of the company or not. | | `block_reason` | string | no | The block reason of the individual from accessing PayMe's platform and data. | | `account_status` | string | no | The individual's account status. | | `address_street` | string | no | The street address of the individual. | | `address_street_intl` | string | no | The international street address of the individual. | | `address_street_number` | string | no | The street address number of the individual. | | `address_zip` | string | no | The street address ZIP code of the individual. | | `address_city` | string | no | The street address city of the individual. | | `address_city_intl` | string | no | The international street address city of the individual. | | `address_country` | string | no | The street address country of the individual. | | `address_state` | string | no | The street address state of the individual. | | `additional_data` | string | no | Any additional data that needs to be stored under the individual in a JSON format. | | `role` | array | no | 1 => "Owner", 2 => "Signatory", 4 => "Director", 8 => "Executive", 16 => "Back Office", | | `is_primary` | boolean | no | Setting the primary flag under the company whether the individual is the primary of the company. | | `ownership_percentage` | string | no | Example: "20.5" | | `individual_business_title` | string | no | The business title of the individual. | ### Request example ```json { "individual_first_name": "John", "individual_first_name_en": "John", "individual_last_name": "Doe", "individual_last_name_en": "Doe", "individual_national_id": "1234567890", "individual_social_id": "987654321", "individual_social_id_issued": "2022-01-01", "individual_social_id_country": "US", "individual_birthdate": "1990-01-01", "individual_gender": "Male", "individual_email": "johndoe@example.com", "individual_phone": "1234567890", "individual_bank": "PayMe Bank", "individual_bank_account": "9876543210", "individual_bank_account_branch": "Main Branch", "individual_bank_account_number_foreign": "1234567890", "individual_bank_routing_number_foreign": "ABCDEFG12345", "individual_iban": "US00 ABCD 1234 5678 90", "individual_is_active": true, "individual_block_reason": "No reason", "individual_account_status": "Active", "individual_address_street": "123 PayMe St.", "individual_address_street_intl": "123 PayMe St.", "individual_address_street_number": "123", "individual_address_zip": "12345", "individual_address_city": "PayMe City", "individual_address_city_intl": "PayMe City", "individual_address_country": "US", "individual_address_state": "PayMe State", "individual_additional_data": "Additional data here" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/sellers//individuals/' \ -H 'Content-Type: application/json' \ --data-raw '{ "individual_first_name": "John", "individual_first_name_en": "John", "individual_last_name": "Doe", "individual_last_name_en": "Doe", "individual_national_id": "1234567890", "individual_social_id": "987654321", "individual_social_id_issued": "2022-01-01", "individual_social_id_country": "US", "individual_birthdate": "1990-01-01", "individual_gender": "Male", "individual_email": "johndoe@example.com", "individual_phone": "1234567890", "individual_bank": "PayMe Bank", "individual_bank_account": "9876543210", "individual_bank_account_branch": "Main Branch", "individual_bank_account_number_foreign": "1234567890", "individual_bank_routing_number_foreign": "ABCDEFG12345", "individual_iban": "US00 ABCD 1234 5678 90", "individual_is_active": true, "individual_block_reason": "No reason", "individual_account_status": "Active", "individual_address_street": "123 PayMe St.", "individual_address_street_intl": "123 PayMe St.", "individual_address_street_number": "123", "individual_address_zip": "12345", "individual_address_city": "PayMe City", "individual_address_city_intl": "PayMe City", "individual_address_country": "US", "individual_address_state": "PayMe State", "individual_additional_data": "Additional data here" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/sellers//individuals/", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "individual_first_name": "John", "individual_first_name_en": "John", "individual_last_name": "Doe", "individual_last_name_en": "Doe", "individual_national_id": "1234567890", "individual_social_id": "987654321", "individual_social_id_issued": "2022-01-01", "individual_social_id_country": "US", "individual_birthdate": "1990-01-01", "individual_gender": "Male", "individual_email": "johndoe@example.com", "individual_phone": "1234567890", "individual_bank": "PayMe Bank", "individual_bank_account": "9876543210", "individual_bank_account_branch": "Main Branch", "individual_bank_account_number_foreign": "1234567890", "individual_bank_routing_number_foreign": "ABCDEFG12345", "individual_iban": "US00 ABCD 1234 5678 90", "individual_is_active": true, "individual_block_reason": "No reason", "individual_account_status": "Active", "individual_address_street": "123 PayMe St.", "individual_address_street_intl": "123 PayMe St.", "individual_address_street_number": "123", "individual_address_zip": "12345", "individual_address_city": "PayMe City", "individual_address_city_intl": "PayMe City", "individual_address_country": "US", "individual_address_state": "PayMe State", "individual_additional_data": "Additional data here" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/sellers//individuals/", json={ "individual_first_name": "John", "individual_first_name_en": "John", "individual_last_name": "Doe", "individual_last_name_en": "Doe", "individual_national_id": "1234567890", "individual_social_id": "987654321", "individual_social_id_issued": "2022-01-01", "individual_social_id_country": "US", "individual_birthdate": "1990-01-01", "individual_gender": "Male", "individual_email": "johndoe@example.com", "individual_phone": "1234567890", "individual_bank": "PayMe Bank", "individual_bank_account": "9876543210", "individual_bank_account_branch": "Main Branch", "individual_bank_account_number_foreign": "1234567890", "individual_bank_routing_number_foreign": "ABCDEFG12345", "individual_iban": "US00 ABCD 1234 5678 90", "individual_is_active": True, "individual_block_reason": "No reason", "individual_account_status": "Active", "individual_address_street": "123 PayMe St.", "individual_address_street_intl": "123 PayMe St.", "individual_address_street_number": "123", "individual_address_zip": "12345", "individual_address_city": "PayMe City", "individual_address_city_intl": "PayMe City", "individual_address_country": "US", "individual_address_state": "PayMe State", "individual_additional_data": "Additional data here", }, ) print(response.text) ``` ### PHP ```php /individuals/'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) - [Get-Individuals by Company ID](https://docs-staging.payme.io/payments/merchants-management/get-sellers-mpl-key-individuals): GET /sellers/{mpl_key}/individuals — Get-Individuals by Company ID # Get-Individuals by Company ID - Sandbox: `GET https://sandbox.payme.io/api/sellers/{mpl_key}/individuals` - Production: `GET https://live.payme.io/api/sellers/{mpl_key}/individuals` ## Credentials - Header `PayMe-Signature` (API key) This route will help you receive all of the data regarding the individuals ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Signature` | header | string | no | Example: sk_test__123ASD | | `mpl_key` | path | string | yes | | ## Request body Content type: `application/json` ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/sellers//individuals' \ -H 'Content-Type: application/json' \ -H 'PayMe-Signature: ' \ --data-raw '{}' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/sellers//individuals", { method: "GET", headers: { "Content-Type": "application/json", "PayMe-Signature": "", }, body: JSON.stringify({}), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/sellers//individuals", headers={ "PayMe-Signature": "", }, json={}, ) print(response.text) ``` ### PHP ```php /individuals'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Signature: ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `page` | integer | | | `items_per_page` | integer | | | `items_total` | integer | | | `items` | array | | | `items[].guid` | string | | | `items[].first_name` | string | | | `items[].last_name` | string | | | `items[].social_id` | string | | | `items[].email` | string | | | `items[].national_id` | string | | | `items[].role` | array | | | `items[].is_primary` | boolean | | | `items[].ownership_percentage` | string | | | `items[].business_title` | string | | | `items[].first_name_international` | string | | | `items[].last_name_international` | string | | | `items[].social_id_issued` | integer | | | `items[].national_id_country` | string | | | `items[].birthdate` | integer | | | `items[].gender` | integer | | | `items[].phone_number` | string | | | `items[].email_address` | string | | | `items[].bank` | string | | | `items[].bank_account_branch` | string | | | `items[].bank_account_number` | string | | | `items[].bank_routing_number_foreign` | string | | | `items[].bank_iban` | string | | | `items[].address_street_name` | string | | | `items[].address_street_international` | string | | | `items[].address_street_number` | string | | | `items[].address_zip_code` | string | | | `items[].address_city_name` | string | | | `items[].address_city_international` | string | | | `items[].address_state_name` | string | | | `items[].address_country_name` | string | | ```json { "status_code": 0, "page": 1, "items_per_page": 500, "items_total": 1, "items": [ { "guid": "INDV1693-14592531-QZKL0HO9-PO6QZBDN", "first_name": "Ohad", "last_name": "Dabush", "social_id": "301105052", "email": null, "national_id": null, "role": [ "Owner", "Signatory", "Director", "Executive", "Back Office" ], "is_primary": true, "ownership_percentage": null, "business_title": null, "first_name_international": "", "last_name_international": "", "social_id_issued": 1508907600, "national_id_country": null, "birthdate": 562140000, "gender": 0, "phone_number": null, "email_address": null, "bank": null, "bank_account_branch": null, "bank_account_number": null, "bank_routing_number_foreign": null, "bank_iban": null, "address_street_name": null, "address_street_international": null, "address_street_number": null, "address_zip_code": null, "address_city_name": null, "address_city_international": null, "address_state_name": null, "address_country_name": null } ] } ``` - [Get Partner Data](https://docs-staging.payme.io/payments/merchants-management/get-partners): GET /partners — Get Partner Data # Get Partner Data - Sandbox: `GET https://sandbox.payme.io/api/partners` - Production: `GET https://live.payme.io/api/partners` ## Credentials - Header `PayMe-Partner-Key` (API key) This API endpoint is dedicated to providing the information regarding the Partner entity. cUrl command (Paste to Postman Command line / import): ``` curl --location 'https://sandbox.payme.io/api/partners' \ --header 'Content-Type: application/json' \ --header 'PayMe-Partner-Key: ' \ --data '' ``` ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Partner-Key` | header | string | yes | Your partner client key | ## Request body Content type: `application/json` ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/partners' \ -H 'Content-Type: application/json' \ -H 'PayMe-Partner-Key: ' \ --data-raw '{}' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/partners", { method: "GET", headers: { "Content-Type": "application/json", "PayMe-Partner-Key": "", }, body: JSON.stringify({}), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/partners", headers={ "PayMe-Partner-Key": "", }, json={}, ) print(response.text) ``` ### PHP ```php 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Partner-Key: ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `page` | integer | | | `items_per_page` | integer | | | `items_total` | integer | | | `items` | array | | | `items[].display_name` | string | | | `items[].description` | string | | | `items[].created_at` | string | | | `items[].activity_type` | string | | | `items[].main_seller_payme_id` | string | | | `items[].defaults` | object | | | `items[].defaults.timezone` | string | | | `items[].defaults.default_creation_plan` | string | | | `items[].defaults.allow_foreign_cards` | boolean | | | `items[].defaults.currencies` | array | | | `items[].defaults.processing_limit` | integer | | | `items[].defaults.market_fee_display_on_top` | boolean | | | `items[].defaults.withdrawal_plan` | integer | | | `items[].defaults.withdrawal_date` | integer | | | `items[].technical` | object | | | `items[].technical.callback_url` | string | | | `items[].technical.return_url` | string | | | `items[].technical.dashboard_url` | string | | ```json { "status_code": 0, "page": 1, "items_per_page": 1, "items_total": 1, "items": [ { "display_name": "YYY", "description": null, "created_at": "2023-08-28 12:02:31", "activity_type": "One Off", "main_seller_payme_id": "MPL00012-00012EXM-EXAMPLE0-EXAMPLE2", "defaults": { "timezone": null, "default_creation_plan": "VPLN1580-718683JV-G2PZHZQW-END7P7WI", "allow_foreign_cards": true, "currencies": [ "ILS" ], "processing_limit": 5000000, "market_fee_display_on_top": false, "withdrawal_plan": 3, "withdrawal_date": 1 }, "technical": { "callback_url": "", "return_url": "", "dashboard_url": "https://yyy.payme.io" } } ] } ``` - [GET Mids](https://docs-staging.payme.io/payments/merchants-management/get-sellers-mpl-key-mids): GET /sellers/{mpl_key}/mids — GET Mids # GET Mids - Sandbox: `GET https://sandbox.payme.io/api/sellers/{mpl_key}/mids` - Production: `GET https://live.payme.io/api/sellers/{mpl_key}/mids` ## Credentials - Header `PayMe-Partner-Key` (API key) and Header `PayMe-Merchant-Key` (API key) and Header `PayMe-Signature` (API key) Curl Command (Copy to postman command line): ``` curl --location 'https://env.payme.io/api/sellers/MPL90010-90010EXM-EXAMPLE0-EXAMPLE9/mids' \ --header 'PayMe-Partner-Key: isracard-***********' \ --header 'PayMe-Merchant-Key: MPL90099-90099EXM-********-********' \ --header 'PayMe-Signature: sk_test_' ``` ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mpl_key` | path | string | yes | | | `PayMe-Partner-Key` | header | string | yes | Your partner client key | | `PayMe-Merchant-Key` | header | string | yes | Your merchant key (MPL) | | `PayMe-Signature` | header | string | yes | The signature value PayMe gives you for this endpoint | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `status_code` | integer | no | | | `page` | integer | no | | | `items_total` | integer | no | | | `items_per_page` | integer | no | | | `items` | array | no | | | `items[].guid` | string | no | | | `items[].classification` | string | no | | | `items[].type` | string | no | | | `items[].is_paid_directly` | boolean | no | | | `items[].acquirer` | string | no | | | `items[].discounter` | string | no | | | `items[].allowed_payment_methods` | array | no | | | `items[].max_installments` | integer | no | | | `items[].allowed_brands` | array | no | | | `items[].min_processing` | integer | no | | | `items[].max_processing` | integer | no | | | `items[].is_active` | boolean | no | | | `items[].is_relation_active` | boolean | no | | ### Request example ```json { "status_code": 0, "page": 1, "items_total": 16, "items_per_page": 16, "items": [ { "guid": "MID16925-12688EFB-LYQNLFYC-EPL65KAW", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "Isracard", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": false, "is_relation_active": false }, { "guid": "MID16925-12737PDV-GUCYB07Z-8ATPZRLN", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 5, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12671ODU-Q5XPUVIU-GFCBIEXG", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "pos", "il-direct-debit" ], "max_installments": 36, "allowed_brands": [ "PrivateLabel", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 0.1, "max_processing": 300000, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12766V5P-JRK34MPH-HTV3OIKJ", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "Isracard", "discounter": null, "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12771UVB-WY2LD0TL-UIN5KKWZ", "classification": "Shadow", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "Tzameret", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 5, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12790Q47-VJRQBUI8-9YDY2TXM", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "Isracard", "discounter": null, "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12693JTW-LJIU7PA0-JBPI9BLW", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12954TZC-FC8KXQC7-YWJHSUKM", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "apple-pay", "pos" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": true, "is_relation_active": true }, { "guid": "MID16925-1268967W-XGOTTDQ0-PENRUMM1", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Cal", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "pos" ], "max_installments": 36, "allowed_brands": [ "PrivateLabel", "Diners", "Visa", "Mastercard", "Discover", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": true, "is_relation_active": true }, { "guid": "MID16925-12807BVI-JFKNE4H1-EKSZTLV7", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "PayPal", "discounter": null, "allowed_payment_methods": [ "paypal" ], "max_installments": 12, "allowed_brands": [], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": true }, { "guid": "MID16925-12862HFU-LGWZBGBC-LDL9VGYC", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "PayPal", "discounter": null, "allowed_payment_methods": [ "paypal" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "Diners", "JCB", "AmericanExpress", "Visa", "Mastercard", "Discover", "UnionPay", "Isracard" ], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-13002M1Z-FH67BK2Q-HHPKCXAL", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Cal", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "Diners", "Visa", "Mastercard", "Discover", "Isracard" ], "min_processing": 5, "max_processing": 50000, "is_active": false, "is_relation_active": false }, { "guid": "MID16925-13017KT2-TMCZZ1DB-D05SI93Y", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "Max", "discounter": null, "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "Visa" ], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12674IGG-CMNOTGUP-E1XQQ8H8", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "apple-pay" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-13050DDN-0NIDIVSH-MBBYBTGV", "classification": "Original", "type": "Processing", "is_paid_directly": true, "acquirer": "Payrix", "discounter": null, "allowed_payment_methods": [ "credit-card", "echeck", "apple-pay" ], "max_installments": 0, "allowed_brands": [ "PrivateLabel", "Diners", "JCB", "AmericanExpress", "Visa", "Mastercard", "Discover", "UnionPay", "Isracard" ], "min_processing": 1, "max_processing": 21474836.47, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-13053CLI-ZG3TBVJC-56WVDNPS", "classification": "Original", "type": "Processing", "is_paid_directly": true, "acquirer": "Stripe", "discounter": null, "allowed_payment_methods": [ "credit-card" ], "max_installments": 0, "allowed_brands": [ "PrivateLabel", "Diners", "JCB", "AmericanExpress", "Visa", "Mastercard", "Discover", "UnionPay", "Isracard" ], "min_processing": 1, "max_processing": 200000, "is_active": true, "is_relation_active": false } ] } ``` ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/sellers//mids' \ -H 'Content-Type: application/json' \ -H 'PayMe-Partner-Key: ' \ -H 'PayMe-Merchant-Key: ' \ -H 'PayMe-Signature: ' \ --data-raw '{ "status_code": 0, "page": 1, "items_total": 16, "items_per_page": 16, "items": [ { "guid": "MID16925-12688EFB-LYQNLFYC-EPL65KAW", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "Isracard", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": false, "is_relation_active": false }, { "guid": "MID16925-12737PDV-GUCYB07Z-8ATPZRLN", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 5, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12671ODU-Q5XPUVIU-GFCBIEXG", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "pos", "il-direct-debit" ], "max_installments": 36, "allowed_brands": [ "PrivateLabel", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 0.1, "max_processing": 300000, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12766V5P-JRK34MPH-HTV3OIKJ", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "Isracard", "discounter": null, "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12771UVB-WY2LD0TL-UIN5KKWZ", "classification": "Shadow", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "Tzameret", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 5, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12790Q47-VJRQBUI8-9YDY2TXM", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "Isracard", "discounter": null, "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12693JTW-LJIU7PA0-JBPI9BLW", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12954TZC-FC8KXQC7-YWJHSUKM", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "apple-pay", "pos" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": true, "is_relation_active": true }, { "guid": "MID16925-1268967W-XGOTTDQ0-PENRUMM1", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Cal", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "pos" ], "max_installments": 36, "allowed_brands": [ "PrivateLabel", "Diners", "Visa", "Mastercard", "Discover", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": true, "is_relation_active": true }, { "guid": "MID16925-12807BVI-JFKNE4H1-EKSZTLV7", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "PayPal", "discounter": null, "allowed_payment_methods": [ "paypal" ], "max_installments": 12, "allowed_brands": [], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": true }, { "guid": "MID16925-12862HFU-LGWZBGBC-LDL9VGYC", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "PayPal", "discounter": null, "allowed_payment_methods": [ "paypal" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "Diners", "JCB", "AmericanExpress", "Visa", "Mastercard", "Discover", "UnionPay", "Isracard" ], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-13002M1Z-FH67BK2Q-HHPKCXAL", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Cal", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "Diners", "Visa", "Mastercard", "Discover", "Isracard" ], "min_processing": 5, "max_processing": 50000, "is_active": false, "is_relation_active": false }, { "guid": "MID16925-13017KT2-TMCZZ1DB-D05SI93Y", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "Max", "discounter": null, "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "Visa" ], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12674IGG-CMNOTGUP-E1XQQ8H8", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "apple-pay" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-13050DDN-0NIDIVSH-MBBYBTGV", "classification": "Original", "type": "Processing", "is_paid_directly": true, "acquirer": "Payrix", "discounter": null, "allowed_payment_methods": [ "credit-card", "echeck", "apple-pay" ], "max_installments": 0, "allowed_brands": [ "PrivateLabel", "Diners", "JCB", "AmericanExpress", "Visa", "Mastercard", "Discover", "UnionPay", "Isracard" ], "min_processing": 1, "max_processing": 21474836.47, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-13053CLI-ZG3TBVJC-56WVDNPS", "classification": "Original", "type": "Processing", "is_paid_directly": true, "acquirer": "Stripe", "discounter": null, "allowed_payment_methods": [ "credit-card" ], "max_installments": 0, "allowed_brands": [ "PrivateLabel", "Diners", "JCB", "AmericanExpress", "Visa", "Mastercard", "Discover", "UnionPay", "Isracard" ], "min_processing": 1, "max_processing": 200000, "is_active": true, "is_relation_active": false } ] }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/sellers//mids", { method: "GET", headers: { "Content-Type": "application/json", "PayMe-Partner-Key": "", "PayMe-Merchant-Key": "", "PayMe-Signature": "", }, body: JSON.stringify({ "status_code": 0, "page": 1, "items_total": 16, "items_per_page": 16, "items": [ { "guid": "MID16925-12688EFB-LYQNLFYC-EPL65KAW", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "Isracard", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": false, "is_relation_active": false }, { "guid": "MID16925-12737PDV-GUCYB07Z-8ATPZRLN", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 5, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12671ODU-Q5XPUVIU-GFCBIEXG", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "pos", "il-direct-debit" ], "max_installments": 36, "allowed_brands": [ "PrivateLabel", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 0.1, "max_processing": 300000, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12766V5P-JRK34MPH-HTV3OIKJ", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "Isracard", "discounter": null, "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12771UVB-WY2LD0TL-UIN5KKWZ", "classification": "Shadow", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "Tzameret", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 5, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12790Q47-VJRQBUI8-9YDY2TXM", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "Isracard", "discounter": null, "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12693JTW-LJIU7PA0-JBPI9BLW", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12954TZC-FC8KXQC7-YWJHSUKM", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "apple-pay", "pos" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": true, "is_relation_active": true }, { "guid": "MID16925-1268967W-XGOTTDQ0-PENRUMM1", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Cal", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "pos" ], "max_installments": 36, "allowed_brands": [ "PrivateLabel", "Diners", "Visa", "Mastercard", "Discover", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": true, "is_relation_active": true }, { "guid": "MID16925-12807BVI-JFKNE4H1-EKSZTLV7", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "PayPal", "discounter": null, "allowed_payment_methods": [ "paypal" ], "max_installments": 12, "allowed_brands": [], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": true }, { "guid": "MID16925-12862HFU-LGWZBGBC-LDL9VGYC", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "PayPal", "discounter": null, "allowed_payment_methods": [ "paypal" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "Diners", "JCB", "AmericanExpress", "Visa", "Mastercard", "Discover", "UnionPay", "Isracard" ], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-13002M1Z-FH67BK2Q-HHPKCXAL", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Cal", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "Diners", "Visa", "Mastercard", "Discover", "Isracard" ], "min_processing": 5, "max_processing": 50000, "is_active": false, "is_relation_active": false }, { "guid": "MID16925-13017KT2-TMCZZ1DB-D05SI93Y", "classification": "Original", "type": "None", "is_paid_directly": true, "acquirer": "Max", "discounter": null, "allowed_payment_methods": [ "credit-card", "bit" ], "max_installments": 12, "allowed_brands": [ "Visa" ], "min_processing": 0, "max_processing": 0, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-12674IGG-CMNOTGUP-E1XQQ8H8", "classification": "Original", "type": "Processing", "is_paid_directly": false, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "apple-pay" ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard" ], "min_processing": 1, "max_processing": 50000, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-13050DDN-0NIDIVSH-MBBYBTGV", "classification": "Original", "type": "Processing", "is_paid_directly": true, "acquirer": "Payrix", "discounter": null, "allowed_payment_methods": [ "credit-card", "echeck", "apple-pay" ], "max_installments": 0, "allowed_brands": [ "PrivateLabel", "Diners", "JCB", "AmericanExpress", "Visa", "Mastercard", "Discover", "UnionPay", "Isracard" ], "min_processing": 1, "max_processing": 21474836.47, "is_active": true, "is_relation_active": false }, { "guid": "MID16925-13053CLI-ZG3TBVJC-56WVDNPS", "classification": "Original", "type": "Processing", "is_paid_directly": true, "acquirer": "Stripe", "discounter": null, "allowed_payment_methods": [ "credit-card" ], "max_installments": 0, "allowed_brands": [ "PrivateLabel", "Diners", "JCB", "AmericanExpress", "Visa", "Mastercard", "Discover", "UnionPay", "Isracard" ], "min_processing": 1, "max_processing": 200000, "is_active": true, "is_relation_active": false } ] }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/sellers//mids", headers={ "PayMe-Partner-Key": "", "PayMe-Merchant-Key": "", "PayMe-Signature": "", }, json={ "status_code": 0, "page": 1, "items_total": 16, "items_per_page": 16, "items": [ { "guid": "MID16925-12688EFB-LYQNLFYC-EPL65KAW", "classification": "Original", "type": "Processing", "is_paid_directly": False, "acquirer": "Isracard", "discounter": "Isracard", "allowed_payment_methods": [ "credit-card", "bit", ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard", ], "min_processing": 1, "max_processing": 50000, "is_active": False, "is_relation_active": False, }, { "guid": "MID16925-12737PDV-GUCYB07Z-8ATPZRLN", "classification": "Original", "type": "Processing", "is_paid_directly": False, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard", ], "min_processing": 1, "max_processing": 5, "is_active": True, "is_relation_active": False, }, { "guid": "MID16925-12671ODU-Q5XPUVIU-GFCBIEXG", "classification": "Original", "type": "Processing", "is_paid_directly": False, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "pos", "il-direct-debit", ], "max_installments": 36, "allowed_brands": [ "PrivateLabel", "AmericanExpress", "Visa", "Mastercard", "Isracard", ], "min_processing": 0.1, "max_processing": 300000, "is_active": True, "is_relation_active": False, }, { "guid": "MID16925-12766V5P-JRK34MPH-HTV3OIKJ", "classification": "Original", "type": "None", "is_paid_directly": True, "acquirer": "Isracard", "discounter": None, "allowed_payment_methods": [ "credit-card", "bit", ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard", ], "min_processing": 0, "max_processing": 0, "is_active": True, "is_relation_active": False, }, { "guid": "MID16925-12771UVB-WY2LD0TL-UIN5KKWZ", "classification": "Shadow", "type": "Processing", "is_paid_directly": False, "acquirer": "Isracard", "discounter": "Tzameret", "allowed_payment_methods": [ "credit-card", "bit", ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard", ], "min_processing": 1, "max_processing": 5, "is_active": True, "is_relation_active": False, }, { "guid": "MID16925-12790Q47-VJRQBUI8-9YDY2TXM", "classification": "Original", "type": "None", "is_paid_directly": True, "acquirer": "Isracard", "discounter": None, "allowed_payment_methods": [ "credit-card", "bit", ], "max_installments": 12, "allowed_brands": [], "min_processing": 0, "max_processing": 0, "is_active": True, "is_relation_active": False, }, { "guid": "MID16925-12693JTW-LJIU7PA0-JBPI9BLW", "classification": "Original", "type": "Processing", "is_paid_directly": False, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard", ], "min_processing": 1, "max_processing": 50000, "is_active": True, "is_relation_active": False, }, { "guid": "MID16925-12954TZC-FC8KXQC7-YWJHSUKM", "classification": "Original", "type": "Processing", "is_paid_directly": False, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "apple-pay", "pos", ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard", ], "min_processing": 1, "max_processing": 50000, "is_active": True, "is_relation_active": True, }, { "guid": "MID16925-1268967W-XGOTTDQ0-PENRUMM1", "classification": "Original", "type": "Processing", "is_paid_directly": False, "acquirer": "Cal", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "pos", ], "max_installments": 36, "allowed_brands": [ "PrivateLabel", "Diners", "Visa", "Mastercard", "Discover", "Isracard", ], "min_processing": 1, "max_processing": 50000, "is_active": True, "is_relation_active": True, }, { "guid": "MID16925-12807BVI-JFKNE4H1-EKSZTLV7", "classification": "Original", "type": "None", "is_paid_directly": True, "acquirer": "PayPal", "discounter": None, "allowed_payment_methods": [ "paypal", ], "max_installments": 12, "allowed_brands": [], "min_processing": 0, "max_processing": 0, "is_active": True, "is_relation_active": True, }, { "guid": "MID16925-12862HFU-LGWZBGBC-LDL9VGYC", "classification": "Original", "type": "None", "is_paid_directly": True, "acquirer": "PayPal", "discounter": None, "allowed_payment_methods": [ "paypal", ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "Diners", "JCB", "AmericanExpress", "Visa", "Mastercard", "Discover", "UnionPay", "Isracard", ], "min_processing": 0, "max_processing": 0, "is_active": True, "is_relation_active": False, }, { "guid": "MID16925-13002M1Z-FH67BK2Q-HHPKCXAL", "classification": "Original", "type": "Processing", "is_paid_directly": False, "acquirer": "Cal", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "Diners", "Visa", "Mastercard", "Discover", "Isracard", ], "min_processing": 5, "max_processing": 50000, "is_active": False, "is_relation_active": False, }, { "guid": "MID16925-13017KT2-TMCZZ1DB-D05SI93Y", "classification": "Original", "type": "None", "is_paid_directly": True, "acquirer": "Max", "discounter": None, "allowed_payment_methods": [ "credit-card", "bit", ], "max_installments": 12, "allowed_brands": [ "Visa", ], "min_processing": 0, "max_processing": 0, "is_active": True, "is_relation_active": False, }, { "guid": "MID16925-12674IGG-CMNOTGUP-E1XQQ8H8", "classification": "Original", "type": "Processing", "is_paid_directly": False, "acquirer": "Isracard", "discounter": "PayMe", "allowed_payment_methods": [ "credit-card", "bit", "apple-pay", ], "max_installments": 12, "allowed_brands": [ "PrivateLabel", "JCB", "AmericanExpress", "Visa", "Mastercard", "Isracard", ], "min_processing": 1, "max_processing": 50000, "is_active": True, "is_relation_active": False, }, { "guid": "MID16925-13050DDN-0NIDIVSH-MBBYBTGV", "classification": "Original", "type": "Processing", "is_paid_directly": True, "acquirer": "Payrix", "discounter": None, "allowed_payment_methods": [ "credit-card", "echeck", "apple-pay", ], "max_installments": 0, "allowed_brands": [ "PrivateLabel", "Diners", "JCB", "AmericanExpress", "Visa", "Mastercard", "Discover", "UnionPay", "Isracard", ], "min_processing": 1, "max_processing": 21474836.47, "is_active": True, "is_relation_active": False, }, { "guid": "MID16925-13053CLI-ZG3TBVJC-56WVDNPS", "classification": "Original", "type": "Processing", "is_paid_directly": True, "acquirer": "Stripe", "discounter": None, "allowed_payment_methods": [ "credit-card", ], "max_installments": 0, "allowed_brands": [ "PrivateLabel", "Diners", "JCB", "AmericanExpress", "Visa", "Mastercard", "Discover", "UnionPay", "Isracard", ], "min_processing": 1, "max_processing": 200000, "is_active": True, "is_relation_active": False, }, ], }, ) print(response.text) ``` ### PHP ```php /mids'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Partner-Key: ', 'PayMe-Merchant-Key: ', 'PayMe-Signature: ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) - [Business Fields](https://docs-staging.payme.io/payments/merchants-management/get-business-fields): GET /business-fields — Business Fields # Business Fields - Sandbox: `GET https://sandbox.payme.io/api/business-fields` - Production: `GET https://live.payme.io/api/business-fields` ## Credentials - Header `PayMe-Partner-Key` (API key) - Query parameter `seller_payme_id` (optional): Your seller ID (MPL), as an alternative to PayMe-Partner-Key. ## Overview Returns the list of business fields (the seller's line of business), for example when creating a seller. Each field has a numeric `code`, an international (English) name and a local name. To get a single field, add its code to the path: `GET /business-fields/{code}`. ## Authentication Send your own partner key (`payme_client_key`) in the `PayMe-Partner-Key` header. A seller can send its `seller_payme_id` instead. Without either, the call fails with error `1` (`status_additional_info`: `payme_client_key`). ## Response structure - `status_code`: `0` on success. - `page`, `items_per_page`, `items_total`: paging information. - `language`: the language of `name_local`. - `items`: the business fields, keyed by position; each has `code`, `name_intl` and `name_local`. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Partner-Key` | header | string | no | Your partner key (payme_client_key). Required unless you send seller_payme_id. | | `seller_payme_id` | query | string | no | Your seller ID (MPL), as an alternative to PayMe-Partner-Key. | | `sort_by` | query | string | no | Field to sort by, for example name_local. Default code. | | `sort_direction` | query | string | no | desc for descending; any other value sorts ascending. | | `language` | query | string | no | Language of name_local (he, en, es, ru or ar). Default Hebrew. | | `allow_children` | query | boolean | no | Also return child business fields. | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/business-fields?seller_payme_id=' \ -H 'PayMe-Partner-Key: ' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/business-fields?seller_payme_id=", { method: "GET", headers: { "PayMe-Partner-Key": "", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/business-fields?seller_payme_id=", headers={ "PayMe-Partner-Key": "", }, ) print(response.text) ``` ### PHP ```php '); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'PayMe-Partner-Key: ', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### default — Default (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `page` | integer | | | `items_per_page` | integer | | | `items_total` | integer | | | `language` | string | | | `items` | object | | | `items.244` | object | | | `items.244.code` | integer | | | `items.244.name_intl` | string | | | `items.244.name_local` | string | | ```json { "status_code": 0, "page": 1, "items_per_page": 245, "items_total": 245, "language": "he", "items": { "244": { "code": 10565, "name_intl": "Shutters", "name_local": "תריסים" } } } ``` - [Get Customer Details](https://docs-staging.payme.io/payments/buyers-management/get-buyers-guid): GET /buyers/{buyer_guid} — Get Customer Details # Get Customer Details - Sandbox: `GET https://sandbox.payme.io/api/buyers/{buyer_guid}` - Production: `GET https://live.payme.io/api/buyers/{buyer_guid}` ## Credentials - Header `PayMe-Merchant-Key` (API key) ## Overview You can access and fetch your buyer's details using this API endpoint. Your API request structure should look as follows: ``` https://.payme.io/api/buyers/{buyer_guid} ``` The buyer guid is the unique ID fetched from either: 1. Capture Buyer Token API endpoint. 2. Tokens API endpoint. ### Authentication You'll need to authenticate your request using the unique seller ID. ### Data You'll be able to get the following data: 1. Card mask 2. Card brand 3. Card expiry date 4. Customer details ### Limitations 1. If you are sending a token (uuid) and not a buyer key you won't get the parameter `buyer_key` in your response. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Merchant-Key` | header | string | yes | Your unique seller UUID. | | `buyer_guid` | path | string | yes | | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/buyers/' \ -H 'PayMe-Merchant-Key: ' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/buyers/", { method: "GET", headers: { "PayMe-Merchant-Key": "", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/buyers/", headers={ "PayMe-Merchant-Key": "", }, ) print(response.text) ``` ### PHP ```php '); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'PayMe-Merchant-Key: ', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `uuid` | string | Buyer uuid | | `customer` | object | Customer's details | | `customer.name` | string | Customer's name | | `customer.email` | string | Customer's email | | `customer.phone` | string | Customer's phone | | `customer.social_id` | string | Customer's ID | | `payment` | object | | | `payment.display` | string | The payment method number | | `payment.expiry` | string | Buyer's card exp (MMYY). | | `payment.brand` | string | Buyer's card brand. | | `payment.club` | string | The credit card club | | `payment.type` | string | Type of credit card | | `payment.organization` | string | The credit card organization | | `payment.origin_country` | string | The credit card country | | `buyer_key` | string | Buyer key | ```json { "uuid": "6ac45306-1755-45e4-8b74-f6de3ea2239b", "customer": { "name": "Ran Tester", "email": "TestTest@paymeservice.com", "phone": "05222222", "social_id": "123456789" }, "payment": { "display": "411111******1111", "expiry": "0322", "brand": "Visa", "club": "", "type": "Credit", "organization": "", "origin_country": "US" }, "buyer_key": "BUYER162-6264904Y-TIHEKYED-4QMCI837" } ``` - [Generate Sale with 3D Secure](https://docs-staging.payme.io/payments/generate-a-sale-with-3d-secure/post-generate-sale-generate-a-sale-with-3d-secure): How to call POST /generate-sale for Generate a Sale with 3D Secure. # Generate Sale with 3D Secure This is a variant of [POST /generate-sale — Generate Payment](https://docs-staging.payme.io/payments/hosted-payment-page/post-generate-sale); the request and responses below are the ones documented for Generate a Sale with 3D Secure. - Sandbox: `POST https://sandbox.payme.io/api/generate-sale` - Production: `POST https://live.payme.io/api/generate-sale` ## Credentials - Request body field `seller_payme_id` (required): Our unique seller ID ## Overview In order to process sales with the 3D secure activated, please follow the next steps: 1. Make sure the service is enabeled for your partner account on PayMe's system. 2. Use [`generate-sale`](https://docs-staging.payme.io/payments/direct-api/post-pay-sale) to send the request. 3. If you want to set specific rules for 3D secure initiation process, make sure you reach out to your onboarding manager and have them in place before inititating the transaction. #### Create a sale with Dynamic 3DS This option requires signup in advanced to the 3DS service. As part of `generate-sale` command, you can add the following object to the request: ```json "services": [ { "name": "3DSecure", "settings": { "active": false } } ] ``` ## Redirecting When the Authentication Failed If the user has failed on the authentication step (When a challenge is presented - 6 digit OTP that is sent to the card holder), a redirect will be initiated sending the user to PayMe's Hosted Payment Page for an additional try to input another credit card. If you would like to avoid such cases and redirect the card-holder back to your own payment page, please include an additional parameter in your sale generating request (`generate-sale`) which is `cancel_url`. Parameter Name | Type | Example --|--|-- `cancel_url` | `URL` | `https://payme.io` ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | Our unique seller ID | | `sale_price` | number | yes | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075. Note that the minimum value is 500 | | `currency` | string | yes | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `product_name` | string | yes | Short name and description of the product/service. This text will be shown in the invoice as well, if the seller has enabled the invoices module in his account panel. Limited to 500 characters | | `transaction_id` | string | no | Merchant's unique sale ID for correlation with us | | `installments` | string | yes | Amount of installments for the sale. For additional information see Note 1 below | | `market_fee` | number | no | A decimal between 0.00 and 60.00 representing the percent of the sale price that is collected for the marketplace (includes VAT). This fee is added on top of our fees and transferred to the marketplace once a month. Default value is the market fee of the Seller, as set upon Seller creation | | `sale_send_notifcation` | boolean | no | Flag to send email and/or SMS notifications | | `sale_callback_url` | string | no | Callback response to your page regarding call to our API. Default value is taken from the Merchant's settings. Note that you may not send a "localhost" URL as value | | `sale_email` | string | no | In case sale send notification is true provide the address to send email notification | | `sale_return_url` | string | no | We will redirect the IFRAME and the buyer to this URL upon payment success. Default value is taken from the Merchant's settings | | `sale_mobile` | string | no | In case sale send notification is true, provide the phone number to send SMS notification, if the seller has enabled the SMS module in his account panel | | `sale_name` | string | no | The name that will be displayed when sending a notification | | `capture_buyer` | string | no | Flag for requesting the buyer's token for this payment (0 - do not capture token, 1 - capture token). For additional information see Tokens explanation below | | `buyer_key` | string | no | Buyer key for an instant-payment with the token. This key is received through the use of capture_buyer. Note that this attribute cannot co-exist with the capture_buyer parameter in the same request | | `buyer_perform_validation` | boolean | no | Flag for performing an online validation of the card with the Issuer. Default value is true | | `sale_payment_method` | string | no | Flag for performing an online validation of the card with the Issuer. Default value is true | | `layout` | string | no | IFRAME payment page layout. Optional attribute which may be used with "bit" sale_payment_method. Available layouts are: dynamic, qr-sms. Default value is dynamic | | `language` | string | no | Changes the language of the payment IFRAME to English, as well as the error messages. Default value is Hebrew (he) | | `services` | object | no | | ### Request example No example is documented; this template is generated from the fields — replace the placeholder values. ```json { "seller_payme_id": "", "sale_price": 0, "currency": "", "product_name": "", "transaction_id": "", "installments": "", "market_fee": 0, "sale_send_notifcation": false, "sale_callback_url": "", "sale_email": "", "sale_return_url": "", "sale_mobile": "", "sale_name": "", "capture_buyer": "", "buyer_key": "", "buyer_perform_validation": false, "sale_payment_method": "", "layout": "", "language": "", "services": {} } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/generate-sale' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "", "sale_price": 0, "currency": "", "product_name": "", "installments": "" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/generate-sale", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "", "sale_price": 0, "currency": "", "product_name": "", "installments": "" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/generate-sale", json={ "seller_payme_id": "", "sale_price": 0, "currency": "", "product_name": "", "installments": "", }, ) print(response.text) ``` ### PHP ```php ", "sale_price": 0, "currency": "", "product_name": "", "installments": "" } BODY; $ch = curl_init('https://sandbox.payme.io/api/generate-sale'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Sale Created Successfully (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0 - success, 1 - error) | | `sale_url` | string | The URL of the IFRAME secured payment form to display to the buyer | | `payme_sale_id` | string | Our unique sale ID | | `payme_sale_code` | number | Our unique sale code (for display purposes only) | | `price` | number | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `transaction_id` | string | Merchant's unique sale ID for correlation with us | | `currency` | string | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | ```json { "status_code": 0, "sale_url": "https://preprod.paymeservice.com/sale/generate/XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "payme_sale_code": 12345678, "price": 10000, "transaction_id": "12345", "currency": "USD" } ``` ### 500 — Missing Required Information (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 1, "status_error_details": "קישור משתמש לא נמצא", "status_additional_info": null, "status_error_code": 251 } ``` - [Initialize 3DSecure Request](https://docs-staging.payme.io/payments/standalone-3d-secure-service/post-initialize-3dsecure-request): POST /sales/payme_sale_id/3ds — Initialize 3DSecure Request # Initialize 3DSecure Request - Sandbox: `POST https://sandbox.payme.io/api/sales/payme_sale_id/3ds` - Production: `POST https://live.payme.io/api/sales/payme_sale_id/3ds` ## Credentials - Header `PayMe-Public-Key` (API key) This end-point is used for our MPI / 3D secure as-a-service funtionality. If you wish to process transactions with a different gateway but wish to use PayMe's MPI capability - this end-point can be used to get 3DS values required for processing a 3DS sale. Please follow the instructions that can be found [Hosted Fields JSAPI Guide](/marketplaces-and-platforms/integrations/hosted-fields-jsapi-guide#3ds-integration-using-js-api). In order to the 3DS service, you'll need to implement our library in your checkout page and collect the user data, then send it to us as a part of the `sales/{payme_sale_id}/3ds` request. The parameter that needs to be sent is the string you receive from the library after initiating the data collection action: Paramter|Example|Comments ---|---|--- `meta_data_jwt` | `eyJ0eXAiOiJKV1QiLCJh.......dyfwpbA` | The JWT string received from the library. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Public-Key` | header | string | no | Merchant's public key. | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payment` | object | no | | | `payment.method` | string | yes | Payment method for 3DSecure. 3DSecure is a Credit Card module, thus is the only available method | | `payment.card_number` | string | yes | The card number to make authenticated payment uppon. | | `payment.card_expiry` | string | yes | Card Expiry date. Format: mmyy | | `customer` | object | yes | | | `customer.name` | string | yes | Card holder name. | | `customer.email` | string | yes | Card holder email. | | `customer.phone` | string | yes | Card holder mobile phone number. | | `customer.zip_code` | string | yes | Card holder address zip code. | | `customer.social_id` | string | yes | Card holder social id / national id. | | `meta_data_jwt` | string | yes | The user data collected from the browser. Must be encrypted by PayMe's service. | ### Request example ```json { "payment": { "method": "credit-card", "card_number": "4111111111111111", "card_expiry": "1221" }, "customer": { "name": "developer test", "email": "test@paymeservice.com", "phone": "0500000006", "zip_code": "857393485", "social_id": "123456782" } } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/sales/payme_sale_id/3ds' \ -H 'Content-Type: application/json' \ -H 'PayMe-Public-Key: ' \ --data-raw '{ "payment": { "method": "credit-card", "card_number": "4111111111111111", "card_expiry": "1221" }, "customer": { "name": "developer test", "email": "test@paymeservice.com", "phone": "0500000006", "zip_code": "857393485", "social_id": "123456782" } }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/sales/payme_sale_id/3ds", { method: "POST", headers: { "Content-Type": "application/json", "PayMe-Public-Key": "", }, body: JSON.stringify({ "payment": { "method": "credit-card", "card_number": "4111111111111111", "card_expiry": "1221" }, "customer": { "name": "developer test", "email": "test@paymeservice.com", "phone": "0500000006", "zip_code": "857393485", "social_id": "123456782" } }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/sales/payme_sale_id/3ds", headers={ "PayMe-Public-Key": "", }, json={ "payment": { "method": "credit-card", "card_number": "4111111111111111", "card_expiry": "1221", }, "customer": { "name": "developer test", "email": "test@paymeservice.com", "phone": "0500000006", "zip_code": "857393485", "social_id": "123456782", }, }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Public-Key: ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0 - success-redirect, 1 - error) | | `status_message` | string | A message you may show to the buyer | | `redirect_url` | string | The URL we should redirect (GET method) to the user. | ```json { "status_code": 5, "status_message": "Generating validation page, please wait", "redirect_url": "https://preprod.paymeservice.com/3ds/redirect/SALE1587-486438YT-JLHBOZLR-AJJTULHT?pa=eJxdU9tu4jAQfUfqP1h5T%252Bw4V5BxRZeulpWC2C5V1b55nVmIlAt1kgL79WuTBpL6yXPmjOfMxez%252BVOToA1SdVeXcch1iIShllWblbm49b7%252FbsXXP7yZsu1cAy98gWwV8ghBLoK7FDlCWzi047Lw0FmEsXZumgW%252F7f1PPFj5MbRrQOAyI60EElgnUoZvFE7x3d219Juc6t0MZ7s3enYCSe1E2PaAhId8fVmvuB0Hkewx%252Fmjd%252FAWq15EEU0CgMwsilrn63A68kxEpRAF%252BgBuoG9UkYvqADlqzaslFn7kUhw70x8Lcq5%252FumOdQzjI%252FHo5PVSkihUnuXV39E7siqYNiQ%252Bnrw14LYpjVAPUp7ylKe%252FHvI19uf%252BVuR%252BG8vr%252Bf1cuUn9PGYbH%252FNGTaMQUAqGuCUUEIC4iE3mnnTGdVlX%252FABTxSmBv74%252FIRcQhxCdP86aEA6GEWLDtYsQxpCw%252Fa0Sul9OfNpFOv%252B9NaAAadDVYKO0mKu96FwqCVfwgfaqCptZYPWegJat4FvtGv3vjaLffsxKk%252FKRo%252FZd8fHLMnFMRaW6VlS1%252B2UZbfBMty%252FqhP2y2omd1l5PmF49B3uJv8Blq7hOg%253D%253D&url=https%253A%252F%252Fwww.3dsecurempi.com%252FTDS%252FAUT%253FAction%253DAuthenticate&track=BUYER158-7473169I-GRHJVHIH-VBT25PLM%7CTRAN1588-5275735M-BYGTDXRQ-ZPZT4XRE&pay=0" } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | Error message to the client | | `status_additional_info` | string | Additional error information ` | | `status_error_code` | number | Our unique error code | ```json { "status_code": 1, "status_error_details": "Invalid credit card expiry", "status_additional_info": "1221f", "status_error_code": 356 } ``` - [Resolve Secured Hash](https://docs-staging.payme.io/payments/standalone-3d-secure-service/get-sales-payme-sale-id-3ds-hash): GET /sales/payme_sale_id/3ds/hash — Resolve Secured Hash # Resolve Secured Hash - Sandbox: `GET https://sandbox.payme.io/api/sales/payme_sale_id/3ds/hash` - Production: `GET https://live.payme.io/api/sales/payme_sale_id/3ds/hash` ## Credentials - Header `PayMe-Merchant-Key` (API key) This end-point is used for our MPI / 3D secure as-a-service funtionality. You can use this endpoint in order to resolve the secured hash sent from PayMe. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Merchant-Key` | header | string | no | The MPL of the seller. | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `status_code` | number | yes | Status of the action (0 - success) | | `xid` | string | no | The XID generated by the credit card issuer | | `eci` | string | no | The ECI generated by the credit card issuer | | `cavv` | string | no | The CAVV generated by the credit card issuer | | `payme_sale_id` | string | no | PayMe unique sale ID | ### Request example ```json { "status_code": 0, "xid": "NjZjYzUyZDJmMDQ0NDEzN2FiNGE=", "eci": "05", "cavv": "AAACBDaFQCAjBBUAJ4VAAAAAAAA=", "payme_sale_id": "SALE1587-486438YT-JLHBOZLR-AJJTULHT" } ``` ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/sales/payme_sale_id/3ds/hash' \ -H 'Content-Type: application/json' \ -H 'PayMe-Merchant-Key: ' \ --data-raw '{ "status_code": 0, "xid": "NjZjYzUyZDJmMDQ0NDEzN2FiNGE=", "eci": "05", "cavv": "AAACBDaFQCAjBBUAJ4VAAAAAAAA=", "payme_sale_id": "SALE1587-486438YT-JLHBOZLR-AJJTULHT" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/sales/payme_sale_id/3ds/hash", { method: "GET", headers: { "Content-Type": "application/json", "PayMe-Merchant-Key": "", }, body: JSON.stringify({ "status_code": 0, "xid": "NjZjYzUyZDJmMDQ0NDEzN2FiNGE=", "eci": "05", "cavv": "AAACBDaFQCAjBBUAJ4VAAAAAAAA=", "payme_sale_id": "SALE1587-486438YT-JLHBOZLR-AJJTULHT" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/sales/payme_sale_id/3ds/hash", headers={ "PayMe-Merchant-Key": "", }, json={ "status_code": 0, "xid": "NjZjYzUyZDJmMDQ0NDEzN2FiNGE=", "eci": "05", "cavv": "AAACBDaFQCAjBBUAJ4VAAAAAAAA=", "payme_sale_id": "SALE1587-486438YT-JLHBOZLR-AJJTULHT", }, ) print(response.text) ``` ### PHP ```php 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Merchant-Key: ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the action (0 - success, 1 - failure) | | `payme_sale_id` | string | PayMe unique sale ID | ```json { "status_code": 1, "status": "N", "payme_sale_id": "SALE1587-486438YT-JLHBOZLR-AJJTULHT" } ``` ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (1 - failure) | | `status_error_details` | string | Error message | | `status_additional_info` | string | Additional error information | | `status_error_code` | number | Our unique error code | ```json { "status_code": 1, "status_error_details": "Validation error", "status_additional_info": "eyJpdiI6Ilp...", "status_error_code": 20 } ``` - [Create Document](https://docs-staging.payme.io/payments/invoices/post-create-invoice): POST /documents — Create Document # Create Document - Sandbox: `POST https://sandbox.payme.io/api/documents` - Production: `POST https://live.payme.io/api/documents` ## Credentials No credentials are documented for this endpoint. ## Overview You can use our Invoices API to generate different documents to serve your business needs. #### Document types The documents you can generate can be found in the following guide - [Document Types](/marketplaces-and-platforms/lists-statuses/document-types). ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `doc_type` | number | yes | The documents you can generate can be found in the following guide - [Document Types](/marketplaces-and-platforms/lists-statuses/document-types). | | `buyer_name` | string | yes | Buyer's full name | | `due_date` | string | no | Payment due date | | `pay_date` | string | no | The date the payment was completed (relevant for doc_type | | `doc_date` | string | no | Document creation date | | `currency` | string | yes | The currency of the document | | `doc_title` | string | no | The title of the document (header) | | `doc_comments` | string | no | Document description | | `exchange_rate` | number | no | Currency exchange rate | | `vat_rate` | number | no | The VAT (Value Added Tax) rate applied | | `total_excluding_vat` | number | no | Total amount before VAT applied | | `discount` | number | no | The discount rate (percentage) applied to the document | | `total_sum_after_discount` | number | no | Total amount with discount rate included | | `total_sum_after_discount - copy` | number | no | Total amount with discount rate included | | `total_sum_including_vat` | number | no | Total amount including VAT | | `total_paid` | number | no | Total amount paid in this document | | `total_vat` | number | no | Total VAT paid | | `language` | string | no | Document language | | `items` | array | no | | | `items[].description` | string | yes | Description for item #1 | | `items[].unit_price` | number | yes | The price per unit (1 item) `unit_price` or `unit_price_with_vat` is required. | | `items[].vat_exempt` | boolean | no | VAT exempt for the document | | `items[].quantity` | number | no | Item #1 quantity | | `items[].unit_price_with_vat` | number | no | Unit (item) price including VAT | | `items[].currency` | string | no | Currency for item #1 Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `items[].exchange_rate` | number | no | Exchange rate for the document | | `total_paid_including_vat` | number | no | Total amount paid including VAT | | `cheques` | array | no | The amount paid using a Cheque | | `cheques[].sum` | number | yes | The amount paid using Cheque | | `cheques[].date` | string | no | Cheque deposit date | | `cheques[].bank` | number | no | The bank number - You can check the [list of banks](/marketplaces-and-platforms/lists-statuses/banks-in-israel) for your convenience. | | `cheques[].branch` | number | no | The bank branch number | | `cheques[].account` | string | no | The bank account number | | `cheques[].number` | string | no | The Cheque number | | `cash` | object | yes | The cash method object | | `cash.sum` | number | yes | The total amount paid using Cash | | `bank_transfer` | object | yes | The bank transfer object | | `bank_transfer.sum` | number | yes | Total amount paid using a bank transfer | | `bank_transfer.date` | string | no | The date the bank transfer was received | | `bank_transfer.account` | string | no | The bank account number | | `paypal` | object | no | The PayPal method object | | `paypal.sum` | number | yes | Total amount paid using Paypal | | `paypal.date` | string | yes | The date of when the payment was completed | | `paypal.transaction_id` | string | no | The external transaction ID (received from Paypal) | | `paypal.buyer_name` | string | no | The buyer's name | | `credit_card` | object | no | The credit card object | | `credit_card.sum` | number | yes | Total amount paid using a credit card | | `credit_card.installments` | number | no | The number of installments for the payment (1 min, 36 max) | | `credit_card.first_payment` | number | no | The amount paid in the 1st installment | | `credit_card.buyer_key` | string | no | If the invoice is paid using a token, buyer key is required | | `credit_card.number` | string | no | If paid without a token, card number is required | | `credit_card.type` | string | no | Card brand | | `credit_card.cvv` | string | no | Card's CVV (3-number code at the back of the card) | | `credit_card.expiry` | string | no | Expiry date of the card (MMYY) | | `credit_card.buyer_social_id` | string | no | Buyer's social ID number | | `credit_card.buyer_name` | string | no | Buyer's full name | | `credit_card.auth_number` | string | no | Authorization number of the payment | ### Request example ```json { "doc_type": 400, "buyer_name": "John Doe", "due_date": "2021-08-16T00:00:00.000Z", "pay_date": "2021-04-16T00:00:00.000Z", "doc_date": "2021-05-25 00:00:00", "currency": "ILS", "doc_title": "Invoice for John Doe", "doc_comments": "Some description about the invoice", "exchange_rate": 1, "vat_rate": 0.17, "total_excluding_vat": 123, "discount": 0, "total_sum_after_discount": 123, "total_sum_including_vat": 140, "total_paid": 140, "total_vat": 17, "total_paid_including_vat": 140, "language": "he", "items": [ { "description": "Test Item 1", "unit_price": 100, "vat_exempt": false, "quantity": 1, "unit_price_with_vat": 117, "currency": "ILS", "exchange_rate": 1 }, { "description": "Test Item 2", "unit_price": 23, "vat_exempt": true, "quantity": 1, "currency": "ILS" } ], "cheques": [ { "sum": 10, "date": "2021-05-16T00:00:00.000Z", "bank": 6, "branch": 22, "account": "123456", "number": "0014555" }, { "sum": 13, "date": "2021-06-16T00:00:00.000Z", "bank": 6, "branch": 22, "account": "123456", "number": "0014555" } ], "cash": { "sum": 25 }, "bank_transfer": { "sum": 25, "date": "2021-05-16T00:00:00.000Z", "account": "123456" }, "paypal": { "sum": 25, "date": "2021-05-16T00:00:00.000Z", "transaction_id": "123456", "buyer_name": "John Doe" }, "credit_card": { "sum": 25, "installments": 1, "first_payment": 50, "buyer_key": "123456789", "number": "4580458045804580", "type": "Visa", "cvv": "123", "expiry": "0323", "buyer_social_id": "05001234", "buyer_name": "John Doe", "auth_number": "123123123" } } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/documents' \ -H 'Content-Type: application/json' \ --data-raw '{ "doc_type": 400, "buyer_name": "John Doe", "due_date": "2021-08-16T00:00:00.000Z", "pay_date": "2021-04-16T00:00:00.000Z", "doc_date": "2021-05-25 00:00:00", "currency": "ILS", "doc_title": "Invoice for John Doe", "doc_comments": "Some description about the invoice", "exchange_rate": 1, "vat_rate": 0.17, "total_excluding_vat": 123, "discount": 0, "total_sum_after_discount": 123, "total_sum_including_vat": 140, "total_paid": 140, "total_vat": 17, "total_paid_including_vat": 140, "language": "he", "items": [ { "description": "Test Item 1", "unit_price": 100, "vat_exempt": false, "quantity": 1, "unit_price_with_vat": 117, "currency": "ILS", "exchange_rate": 1 }, { "description": "Test Item 2", "unit_price": 23, "vat_exempt": true, "quantity": 1, "currency": "ILS" } ], "cheques": [ { "sum": 10, "date": "2021-05-16T00:00:00.000Z", "bank": 6, "branch": 22, "account": "123456", "number": "0014555" }, { "sum": 13, "date": "2021-06-16T00:00:00.000Z", "bank": 6, "branch": 22, "account": "123456", "number": "0014555" } ], "cash": { "sum": 25 }, "bank_transfer": { "sum": 25, "date": "2021-05-16T00:00:00.000Z", "account": "123456" }, "paypal": { "sum": 25, "date": "2021-05-16T00:00:00.000Z", "transaction_id": "123456", "buyer_name": "John Doe" }, "credit_card": { "sum": 25, "installments": 1, "first_payment": 50, "buyer_key": "123456789", "number": "4580458045804580", "type": "Visa", "cvv": "123", "expiry": "0323", "buyer_social_id": "05001234", "buyer_name": "John Doe", "auth_number": "123123123" } }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/documents", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "doc_type": 400, "buyer_name": "John Doe", "due_date": "2021-08-16T00:00:00.000Z", "pay_date": "2021-04-16T00:00:00.000Z", "doc_date": "2021-05-25 00:00:00", "currency": "ILS", "doc_title": "Invoice for John Doe", "doc_comments": "Some description about the invoice", "exchange_rate": 1, "vat_rate": 0.17, "total_excluding_vat": 123, "discount": 0, "total_sum_after_discount": 123, "total_sum_including_vat": 140, "total_paid": 140, "total_vat": 17, "total_paid_including_vat": 140, "language": "he", "items": [ { "description": "Test Item 1", "unit_price": 100, "vat_exempt": false, "quantity": 1, "unit_price_with_vat": 117, "currency": "ILS", "exchange_rate": 1 }, { "description": "Test Item 2", "unit_price": 23, "vat_exempt": true, "quantity": 1, "currency": "ILS" } ], "cheques": [ { "sum": 10, "date": "2021-05-16T00:00:00.000Z", "bank": 6, "branch": 22, "account": "123456", "number": "0014555" }, { "sum": 13, "date": "2021-06-16T00:00:00.000Z", "bank": 6, "branch": 22, "account": "123456", "number": "0014555" } ], "cash": { "sum": 25 }, "bank_transfer": { "sum": 25, "date": "2021-05-16T00:00:00.000Z", "account": "123456" }, "paypal": { "sum": 25, "date": "2021-05-16T00:00:00.000Z", "transaction_id": "123456", "buyer_name": "John Doe" }, "credit_card": { "sum": 25, "installments": 1, "first_payment": 50, "buyer_key": "123456789", "number": "4580458045804580", "type": "Visa", "cvv": "123", "expiry": "0323", "buyer_social_id": "05001234", "buyer_name": "John Doe", "auth_number": "123123123" } }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/documents", json={ "doc_type": 400, "buyer_name": "John Doe", "due_date": "2021-08-16T00:00:00.000Z", "pay_date": "2021-04-16T00:00:00.000Z", "doc_date": "2021-05-25 00:00:00", "currency": "ILS", "doc_title": "Invoice for John Doe", "doc_comments": "Some description about the invoice", "exchange_rate": 1, "vat_rate": 0.17, "total_excluding_vat": 123, "discount": 0, "total_sum_after_discount": 123, "total_sum_including_vat": 140, "total_paid": 140, "total_vat": 17, "total_paid_including_vat": 140, "language": "he", "items": [ { "description": "Test Item 1", "unit_price": 100, "vat_exempt": False, "quantity": 1, "unit_price_with_vat": 117, "currency": "ILS", "exchange_rate": 1, }, { "description": "Test Item 2", "unit_price": 23, "vat_exempt": True, "quantity": 1, "currency": "ILS", }, ], "cheques": [ { "sum": 10, "date": "2021-05-16T00:00:00.000Z", "bank": 6, "branch": 22, "account": "123456", "number": "0014555", }, { "sum": 13, "date": "2021-06-16T00:00:00.000Z", "bank": 6, "branch": 22, "account": "123456", "number": "0014555", }, ], "cash": { "sum": 25, }, "bank_transfer": { "sum": 25, "date": "2021-05-16T00:00:00.000Z", "account": "123456", }, "paypal": { "sum": 25, "date": "2021-05-16T00:00:00.000Z", "transaction_id": "123456", "buyer_name": "John Doe", }, "credit_card": { "sum": 25, "installments": 1, "first_payment": 50, "buyer_key": "123456789", "number": "4580458045804580", "type": "Visa", "cvv": "123", "expiry": "0323", "buyer_social_id": "05001234", "buyer_name": "John Doe", "auth_number": "123123123", }, }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | Status of the request (0 - success, 1 - error) | | `doc_type` | string | The documents you can generate can be found in the following guide - [Document Types](/marketplaces-and-platforms/lists-statuses/document-types). | | `language` | string | Changes the language of the payment IFRAME to English, as well as the error messages. Default value is Hebrew (he) | | `due_date` | string | The date on which a seller expects to receive payment from a buyer | | `pay_date` | string | Payment date | | `doc_date` | string | The date of document creation | | `currency` | string | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `vat_rate` | number | The VAT (Value Added Tax) rate applied. | | `discount` | number | The discount rate (percentage) applied to the document | | `total_vat` | number | Total VAT paid | | `doc_title` | string | The title of the document (header) | | `buyer_name` | string | The buyer's name | | `total_paid` | number | Total amount paid in this document | | `doc_comments` | string | Document description | | `exchange_rate` | number | Currency exchange rate | | `total_excluding_vat` | number | Total amount before VAT applied | | `total_sum_including_vat` | number | Total amount including VAT | | `total_sum_after_discount` | number | Total amount with discount rate included | | `total_paid_including_vat` | number | Total amount paid including VAT | | `cash` | object | The cash method object | | `cash.sum` | number | The total amount paid using Cash | | `cheques` | array | The amount paid using a Cheque | | `cheques[].sum` | number | The amount paid using Cheque | | `cheques[].date` | string | Cheque deposit date | | `cheques[].bank` | number | The bank number - You can check the [list of banks](/marketplaces-and-platforms/lists-statuses/banks-in-israel) for your convenience. | | `cheques[].branch` | number | The bank branch number | | `cheques[].account` | string | The bank account number | | `cheques[].number` | string | The Cheque number | | `bank_transfer` | object | The bank transfer object | | `bank_transfer.sum` | number | Total amount paid using a bank transfer | | `bank_transfer.date` | string | The date the bank transfer was received | | `bank_transfer.account` | string | The bank account number | | `credit_card` | object | The credit card object | | `credit_card.sum` | number | Total amount paid using a credit card | | `credit_card.installments` | number | The number of installments for the payment (1 min, 36 max) | | `credit_card.first_payment` | number | The amount paid in the 1st installment | | `credit_card.number` | string | If paid without a token, card number is required | | `credit_card.type` | string | Card brand | | `credit_card.cvv` | string | Card's CVV (3-number code at the back of the card) | | `credit_card.buyer_social_id` | string | Buyer's social ID number | | `credit_card.buyer_name` | string | Buyer's full name | | `credit_card.auth_number` | string | Authorization number of the payment | | `credit_card.expiry` | string | Expiry date of the card (MMYY) | | `paypal` | object | The PayPal method object | | `paypal.sum` | number | Total amount paid using Paypal | | `paypal.date` | string | The date of when the payment was completed | | `paypal.transaction_id` | string | The external transaction ID (received from Paypal) | | `paypal.buyer_name` | string | The buyer's name | | `items` | array | | | `items[].quantity` | number | Item #1 quantity | | `items[].description` | string | Description for item #1 | | `items[].unit_price` | number | The price per unit (1 item) | | `items[].vat_exempt` | boolean | VAT exempt for the document | | `items[].currency` | string | Currency for item #1 Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `items[].unit_price_with_vat` | number | Unit (item) price including VAT | | `items[].exchange_rate` | number | Exchange rate for the document | | `doc_id` | string | Document ID number | | `doc_url` | string | Document URL | ```json { "status_code": 0, "doc_type": "400", "language": "he", "due_date": "2021-08-16T00:00:00.000Z", "pay_date": "2021-04-16T00:00:00.000Z", "doc_date": "2021-05-25 00:00:00", "currency": "ILS", "vat_rate": 0.17, "discount": 0, "total_vat": 17, "doc_title": "Invoice for John Doe", "buyer_name": "John Doe", "total_paid": 140, "doc_comments": "Some description about the invoice", "exchange_rate": 1, "total_excluding_vat": 123, "total_sum_including_vat": 140, "total_sum_after_discount": 123, "total_paid_including_vat": 140, "cash": { "sum": 25 }, "cheques": [ { "sum": 10, "date": "2021-05-16T00:00:00.000Z", "bank": 6, "branch": 22, "account": "123456", "number": "0014555" }, { "sum": 13, "date": "2021-06-16T00:00:00.000Z", "bank": 6, "branch": 22, "account": "123456", "number": "0014555" } ], "bank_transfer": { "sum": 25, "date": "2021-05-16T00:00:00.000Z", "account": "123456" }, "credit_card": { "sum": 0, "installments": 1, "first_payment": 50, "number": "4580458045804580", "type": "Visa", "cvv": "123", "buyer_social_id": "05001234", "buyer_name": "John Doe", "auth_number": "123123123", "expiry": "323" }, "paypal": { "sum": 50, "date": "2021-05-16T00:00:00.000Z", "transaction_id": "123456", "buyer_name": "John Doe" }, "items": [ { "quantity": 1, "description": "Test Item 1", "unit_price": 100, "vat_exempt": false, "currency": "ILS", "unit_price_with_vat": 117, "exchange_rate": 1 }, { "quantity": 1, "description": "Test Item 2", "unit_price": 23, "vat_exempt": true, "currency": "ILS" } ], "doc_id": "fa397fce-aee6-4c6d-ae9c-273ae1e3a317", "doc_url": "https://invoice-staging.paymeservice.com/documents/fa397fce-aee6-4c6d-ae9c-273ae1e3a317" } ``` ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | object | | | `status_additional_info.doc_type` | array | | | `status_additional_info.items` | array | | | `status_additional_info.buyer_name` | array | | | `status_error_code` | number | | ```json { "status_code": 1, "status_error_details": "The given data was invalid.", "status_additional_info": { "doc_type": [ "The doc type field is required." ], "items": [ "The items field is required." ], "buyer_name": [ "The buyer name field is required." ] }, "status_error_code": 20 } ``` - [Get Generated Document By ID](https://docs-staging.payme.io/payments/invoices/show-generated-document-by-id): GET /documents/document_id — Get Generated Document By ID # Get Generated Document By ID - Sandbox: `GET https://sandbox.payme.io/api/documents/document_id` - Production: `GET https://live.payme.io/api/documents/document_id` ## Credentials - Header `PayMe-Merchant-Key` (API key) ## Overview In order to query for existing documents, you will need to use the following endpoint and parameters: Environment | URL ---|--- `Sandbox`| `https://sandbox.payme.io/api/documents?page=0&limit=5&field=createdAt&sort=desc` `Production` | `https://live.payme.io/api/documents?page=0&limit=5&field=createdAt&sort=desc` ##### Header Parameter | Description ---|--- `PayMe-Merchant-Key` | Seller's MPL `DEMOMPL-DEMOMPL-DEMOMPL-DEMOMPL-` ### Request Example: Item | Description | Example ---|---|--- URL | `https://sandbox.payme.io/api/documents/{document_ID}` | `INV12321*****` Header| `seller_payme_id` | `MPLDEMO-MPLDEMO-MPLDEMO-MPLDEMO` ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Merchant-Key` | header | string | yes | | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/documents/document_id' \ -H 'PayMe-Merchant-Key: ' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/documents/document_id", { method: "GET", headers: { "PayMe-Merchant-Key": "", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/documents/document_id", headers={ "PayMe-Merchant-Key": "", }, ) print(response.text) ``` ### PHP ```php 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'PayMe-Merchant-Key: ', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses No responses are documented for this endpoint. - [Show Generated Document By ID](https://docs-staging.payme.io/payments/invoices/show-generated-document-by-id-2): GET /show-documents/document_id — Show Generated Document By ID # Show Generated Document By ID - Sandbox: `GET https://sandbox.payme.io/api/show-documents/document_id` - Production: `GET https://live.payme.io/api/show-documents/document_id` ## Credentials - Header `PayMe-Merchant-Key` (API key) ## Overview In order to query for existing documents, you will need to use the following endpoint and parameters: Environment | URL ---|--- `Staging`| `https://sandbox.paymes.io/api/documents?page=0&limit=5&field=createdAt&sort=desc` `Production` | `https://live.paymes.io/api/documents?page=0&limit=5&field=createdAt&sort=desc` ##### Header Parameter | Description ---|--- `PayMe-Merchant-Key` | Seller's MPL `DEMOMPL-DEMOMPL-DEMOMPL-DEMOMPL-` ### Request Example: Item | Description | Example ---|---|--- URL | `https://sandbox.payme.io/api/show-documents/{document_ID}` | `INV12321*****` Header| `seller_payme_id` | `MPLDEMO-MPLDEMO-MPLDEMO-MPLDEMO` ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Merchant-Key` | header | string | yes | | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/show-documents/document_id' \ -H 'PayMe-Merchant-Key: ' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/show-documents/document_id", { method: "GET", headers: { "PayMe-Merchant-Key": "", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/show-documents/document_id", headers={ "PayMe-Merchant-Key": "", }, ) print(response.text) ``` ### PHP ```php 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'PayMe-Merchant-Key: ', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses No responses are documented for this endpoint. - [Query Existing Documents](https://docs-staging.payme.io/payments/invoices/get-documents): GET /documents — Query Existing Documents # Query Existing Documents - Sandbox: `GET https://sandbox.payme.io/api/documents` - Production: `GET https://live.payme.io/api/documents` ## Credentials - Header `PayMe-Merchant-Key` (API key) ## Overview In order to query for existing documents, you will need to use the following endpoint and parameters: Environment | URL ---|--- `Sandbox`| `https://sandbox.payme.io/api/documents?page=0&limit=5&field=createdAt&sort=desc` `Production` | `https://live.payme.io/api/documents?page=0&limit=5&field=createdAt&sort=desc` ##### Header Parameter | Description ---|--- `PayMe-Merchant-Key` | Seller's MPL `MPL00006-00006EXM-EXAMPLE0-EXAMPLE6` ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `page` | query | number | no | How many pages should be included in the query | | `limit` | query | number | no | How many documents per extraction | | `field` | query | string | no | The dates the query is for | | `sort` | query | string | no | The order of documents | | `PayMe-Merchant-Key` | header | string | no | | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/documents' \ -H 'PayMe-Merchant-Key: ' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/documents", { method: "GET", headers: { "PayMe-Merchant-Key": "", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/documents", headers={ "PayMe-Merchant-Key": "", }, ) print(response.text) ``` ### PHP ```php 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'PayMe-Merchant-Key: ', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses No responses are documented for this endpoint. - [List Sales](https://docs-staging.payme.io/payments/query-apis/post-get-sales): POST /get-sales — List Sales # List Sales - Sandbox: `POST https://sandbox.payme.io/api/get-sales` - Production: `POST https://live.payme.io/api/get-sales` ## Credentials - Request body field `payme_client_key` (optional): PayMe partner key. Only partners (platforms managing many sellers) have one; a merchant authenticates with seller_payme_id alone. Can also be sent in the PayMe-Partner-Key header. - Request body field `seller_payme_id` (optional): Our unique seller ID (MPL). If you are a partner, you can use multiple seller_payme_id attributes to retreive data for these specific sellers ## Overview You can retreive data on different sales processed by your sellers using this endpoint. #### Query pagination (more than 500 results) If you are sending a query and expect to receive more than 500 results, make sure you use this function of Query Pagination. ```json { "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", ... "page_size": 100, // Max allowed page size is 500 "page": 1 } ``` ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | no | PayMe partner key. Only partners (platforms managing many sellers) have one; a merchant authenticates with seller_payme_id alone. Can also be sent in the PayMe-Partner-Key header. | | `seller_payme_id` | string | no | Our unique seller ID (MPL). If you are a partner, you can use multiple seller_payme_id attributes to retreive data for these specific sellers | | `seller_id` | string | no | Merchant's unique seller ID for correlation with us | | `sale_payme_code` | string | no | Our unique sale code | | `sale_payme_id` | string | no | Our unique sale ID | | `transaction_id` | string | no | Your own order ID, as sent to generate-sale. It is not unique, so the call can return several sales. | | `sale_created` | string | no | Exact creation date and time for which to retrieve sales. ISO-8601 formatted | | `sale_created_min` | string | no | Earliest creation date and time for which to retrieve sales. ISO-8601 formatted | | `sale_created_max` | string | no | Latest date and time for which to retrieve sales. ISO-8601 formatted | | `sale_status` | string | no | Sale status. All statuses are available [Sale Statuses](/marketplaces-and-platforms/lists-statuses/sale-statuses). For multiple statuses use array format like` ["initial","validated"]` | | `sale_price` | number | no | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `sale_currency` | string | no | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `sale_auth_number` | string | no | Sale authorization number from the credit company | | `buyer_card_mask` | string | no | Buyer's credit card mask | | `buyer_card_last_four_digits` | string | no | Buyer's credit card last four digits | | `buyer_email` | string | no | Buyer's eMail address | | `buyer_name` | string | no | Buyer's full name | | `buyer_phone` | string | no | Buyer's phone number | | `buyer_social_id` | string | no | Buyer's social id (For Israeli sellers only) | | `buyer_card_is_foreign` | boolean | no | Is the buyer's credit card foreign | ### Request example ```json { "payme_client_key": "XXXXXXXX", "transaction_id": "12345" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/get-sales' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "XXXXXXXX", "transaction_id": "12345" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/get-sales", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "XXXXXXXX", "transaction_id": "12345" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/get-sales", json={ "payme_client_key": "XXXXXXXX", "transaction_id": "12345", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `items_count` | number | Number of items | | `items` | array | | | `items[].seller_payme_id` | string | Our unique seller ID | | `items[].seller_id` | string | Merchant's unique seller ID for correlation with us | | `items[].sale_payme_id` | string | Our unique sale ID | | `items[].sale_payme_code` | string | Our unique sale code | | `items[].transaction_id` | string | Your own order ID, as you sent it to generate-sale. It is not unique: several sales can share it. | | `items[].sale_created` | string | Exact creation date and time for which to retrieve sales. ISO-8601 formatted | | `items[].sale_status` | string | Sale status. All available Sale statuses | | `items[].sale_currency` | string | Currency the transaction was processed in | | `items[].sale_price` | number | Sale final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `items[].sale_price_after_fees` | number | Sale amount including fees | | `items[].sale_description` | string | What was the goods/services the buyer paid for | | `items[].sale_installments` | number | Number of installments used for the purchase` | | `items[].sale_vat` | string | VAT added to the sale | | `items[].sale_paid_date` | string | The date the sale was paid | | `items[].sale_auth_number` | string | Sale authorization number from the credit company | | `items[].sale_release_date` | string | The expected date the funds will be available in the seller's balance | | `items[].sale_fees` | object | | | `items[].sale_fees.sale_processing_fee` | string | Total processing fee | | `items[].sale_fees.sale_processing_charge` | string | Processing charge | | `items[].sale_fees.sale_discount_fee` | string | Discount fee | | `items[].sale_fees.sale_rapid_settlement_fee` | string | Rapid settlement fee | | `items[].sale_fees.sale_market_fee` | string | Sale's market fee | | `items[].sale_buyer_details` | object | | | `items[].sale_buyer_details.buyer_card_mask` | string | Buyer's credit card mask | | `items[].sale_buyer_details.buyer_card_expiry` | string | Expiration date | | `items[].sale_buyer_details.buyer_card_brand` | string | Card brand | | `items[].sale_buyer_details.buyer_card_is_foreign` | boolean | Card is foreign or domestic 'true' for foreign, 'false' for domestic. | | `items[].sale_buyer_details.buyer_name` | string | Buyer's first and last name | | `items[].sale_buyer_details.buyer_email` | string | Buyer's email | | `items[].sale_buyer_details.buyer_phone` | string | Buyer's phone | | `items[].sale_buyer_details.buyer_social_id` | string | Buyer's social ID | | `items[].sale_invoices` | array | Invoice generated unique ID | | `status_code` | number | 0 for Sucessful requests, 1 for Failed requests | ```json { "items_count": 1, "items": [ { "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_id": "12345", "sale_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sale_payme_code": "12345678", "transaction_id": "12345", "sale_created": "2016-01-01 15:15:15", "sale_status": "completed", "sale_currency": "USD", "sale_price": 10000, "sale_price_after_fees": 8970, "sale_description": "A duck", "sale_installments": 1, "sale_vat": "0.17", "sale_paid_date": "2016-01-01 15:16:15", "sale_auth_number": "01A2B3C", "sale_release_date": "2016-01-08 15:15:15", "sale_error_code": "", "sale_error_text": "", "sale_fees": { "sale_processing_fee": "3.50", "sale_processing_charge": "1.20", "sale_discount_fee": "0.50", "sale_rapid_settlement_fee": "0.30", "sale_market_fee": "0.00" }, "sale_buyer_details": { "buyer_card_mask": "458045******4580", "buyer_card_expiry": "1022", "buyer_card_brand": "Visa", "buyer_card_is_foreign": true, "buyer_name": "First Last", "buyer_email": "buyer@example.com", "buyer_phone": "0500000001", "buyer_social_id": "000000001" }, "sale_invoices": [] } ], "status_code": 0 } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 1, "status_error_details": "שירות לא נמצא", "status_additional_info": "payme_client_key", "status_error_code": 200 } ``` - [Reporting & Data](https://docs-staging.payme.io/payments/query-apis/reporting-data): Access preconfigured reports to gain insight into essential activities, such as sales, transactions, subscriptions, and balance adjustments. # Reporting and Data Access preconfigured reports to gain insight into essential activities, such as sales, transactions, subscriptions, and balance adjustments. Our queries APIs enable you to perform various actions related to obtaining data on: API| Description ---|--- **get-sellers**| Extract data about your sellers **get-sales** | Extract data on different sales your sellers completed **get-transactions**| Extract data on transactions your sellers completed **get-subscriptions**|Extract data on different subscriptions that are currently active/inactive **get-withdrawals**|Extract data on specific withdrawals yoursellers requested. - [List Transactions](https://docs-staging.payme.io/payments/query-apis/post-get-transactions): POST /get-transactions — List Transactions # List Transactions - Sandbox: `POST https://sandbox.payme.io/api/get-transactions` - Production: `POST https://live.payme.io/api/get-transactions` ## Credentials - Request body field `seller_payme_id` (required): Our unique seller ID (MPL). If you are a partner, you can use multiple seller_payme_id attributes to retreive data for these specific sellers. In this case you need to send also payme_client_key. ## Overview You can retreive data on different transactions processed by your sellers using this endpoint. #### Filtering In order to filter by transaction type, use the following method: Parameter name|Description ---|--- `transaction_status` | The applicable transaction statuses. You can find the transaction statuses in the following guide - [Transaction Statuses](/marketplaces-and-platforms/lists-statuses/transaction-statuses). #### Query pagination (more than 500 results) If you are sending a query and expect to receive more than 500 results, make sure you use this function of Query Pagination. ```json { "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", ... "page_size": 100, // Max allowed page size is 500 "page": 1 } ``` ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | Our unique seller ID (MPL). If you are a partner, you can use multiple seller_payme_id attributes to retreive data for these specific sellers. In this case you need to send also payme_client_key. | | `transaction_type` | number | no | Transaction type can be found [Transaction Types](/marketplaces-and-platforms/lists-statuses/transaction-types) | | `transaction_status` | string | no | All transaction statuses can be found [Transaction Statuses](/marketplaces-and-platforms/lists-statuses/transaction-statuses) | | `sale_status` | string | no | Sale Status can be found [Sale Statuses](/marketplaces-and-platforms/lists-statuses/sale-statuses) Example: `completed` | | `sale_currency` | string | no | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). Example: `ILS` | | `sale_payment_method` | string | no | Sale Payment Method (for the list see [Payment Methods](/payments/direct-api/available-payment-methods)) Example: `credit-card` | | `transaction_created_min` | string | no | Earliest creation date and time for which to retrieve transactions. ISO-8601 formatted | | `transaction_created_max` | string | no | Latest date and time for which to retrieve transactions. ISO-8601 formatted | | `transaction_created_at` | string | no | Transaction creation date and time for which to retrieve transactions. ISO-8601 formatted | | `transaction_id` | string | no | Merchant's unique sale ID for correlation with us | | `payme_transaction_id` | string | no | PayMe's unique transaction ID | | `transaction_price` | number | no | The transaction price amount in cents | | `sale_price` | number | no | The sale price amount in cents | | `sale_auth_number` | string | no | Sale authorization number from the credit company | | `buyer_card_mask` | string | no | Buyer's credit card mask | | `buyer_name` | string | no | Buyer's full name | | `buyer_phone` | string | no | Buyer's phone | | `buyer_social_id` | string | no | Buyer's social ID | | `buyer_card_is_foreign` | boolean | no | Indicates if the card is foreign | | `buyer_card_last_four_digits` | string | no | Buyer's credit card last four digits | | `sale_is_3ds` | boolean | no | In case the sale is with 3DS | | `transaction_is_matched` | boolean | no | Indicates if the transaction is correlated. | ### Request example ```json { "seller_payme_id": "MPL90007-90007EXM-EXAMPLE0-EXAMPLE9", "transaction_type": 1, "transaction_status": "chargeback-refund", "sale_status": [ "chargeback" ], "sale_currency": [ "ILS" ], "sale_payment_method": [ "credit-card" ], "time": [ "2021-08-05" ] } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/get-transactions' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPL90007-90007EXM-EXAMPLE0-EXAMPLE9", "transaction_type": 1, "transaction_status": "chargeback-refund", "sale_status": [ "chargeback" ], "sale_currency": [ "ILS" ], "sale_payment_method": [ "credit-card" ], "time": [ "2021-08-05" ] }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/get-transactions", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPL90007-90007EXM-EXAMPLE0-EXAMPLE9", "transaction_type": 1, "transaction_status": "chargeback-refund", "sale_status": [ "chargeback" ], "sale_currency": [ "ILS" ], "sale_payment_method": [ "credit-card" ], "time": [ "2021-08-05" ] }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/get-transactions", json={ "seller_payme_id": "MPL90007-90007EXM-EXAMPLE0-EXAMPLE9", "transaction_type": 1, "transaction_status": "chargeback-refund", "sale_status": [ "chargeback", ], "sale_currency": [ "ILS", ], "sale_payment_method": [ "credit-card", ], "time": [ "2021-08-05", ], }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `seller_payme_id` | string | Our unique seller ID | | `seller_id` | integer | Merchant's unique seller ID for correlation with us | | `sale_payme_id` | string | Our unique sale ID | | `sale_payme_code` | number | Our unique sale code | | `transaction_id` | string | Merchant's unique sale ID for correlation with us | | `payme_transaction_id` | string | PayMe's unique transaction ID | | `transaction_created_at` | string | Exact creation date and time for which to retrieve transaction. ISO-8601 formatted | | `sale_type` | number | Sale type. All available Sale types can be found [Sale Types](/marketplaces-and-platforms/lists-statuses/sale-types) | | `sale_status` | string | Sale status. All available Sale statuses can be found [Sale Statuses](/marketplaces-and-platforms/lists-statuses/sale-statuses) | | `transaction_status` | string | Transaction status. All available transaction statuses can be found [Transaction Statuses](/marketplaces-and-platforms/lists-statuses/transaction-statuses) | | `transaction_type` | number | Transaction type. All available transaction types can be found [Transaction Types](/marketplaces-and-platforms/lists-statuses/transaction-types) | | `sale_currency` | string | Currency the transaction was processed in | | `sale_description` | string | What was the goods/services the buyer paid for | | `sale_installments` | number | Number of installments used for the purchase` | | `sale_payment_method` | string | The Payment method used to pay the sale. For all the payment methods see [Available Payment Methods](/payments/direct-api/available-payment-methods). | | `transaction_price` | number | The price amount | | `transaction_price_after_fees` | string | Transaction amount including fees | | `sale_vat` | string | VAT added to the sale | | `sale_auth_number` | string | Sale authorization number from the credit company | | `transaction_release_date` | string | The expected date the funds will be available in the seller's balance | | `transaction_voucher` | string | PayMe's transaction voucher | | `transaction_reference_number` | string | Transaction reference number received from gateway. | | `transaction_action` | string | The action that was taken on the transaction. Possible values: Authorize, Tokenize, Detokenize, Debit, Capture, Refund, PartialRefund, Chargeback, ChargebackRefund, Void, PartialVoid, PartialChargeback, PartialChargebackRefund | | `transaction_first_payment` | number | Transaction first payment amount, or total amount if there are no installements. | | `transaction_periodical_payment` | number | Transaction periodical payment amount in case of installements. | | `transaction_arn` | string | Acquirer Reference Numbers | | `transaction_acquirer` | string | Transaction acquirer | | `transaction_discounter` | string | Transaction discounter entity | | `transaction_error_code` | number | In case of failure, the transaction error code. If transaction was successful error code will be 20000. | | `transaction_error_text` | string | The error code description. | | `transaction_is_matched` | boolean | Indicates if the transaction is correlated. | | `transaction_match_statuses` | array | If transaction is matched, indicates the relevant matched statuses. | | `transaction_is_canceled` | boolean | Indicates if the transaction was canceled before transmitted. | | `sale_is_3ds` | boolean | In case the sale is with 3DS | | `sale_fees` | object | | | `sale_fees.sale_processing_fee` | string | Processing fee | | `sale_fees.sale_processing_fee_total` | number | Total processing fee | | `sale_fees.sale_processing_charge` | string | Processing charge | | `sale_fees.sale_discount_fee` | string | Discount fee | | `sale_fees.sale_discount_fee_total` | number | Total Discount fee | | `sale_fees.sale_rapid_settlement_fee` | string | Rapid settlement fee | | `sale_fees.sale_rapid_settlement_fee_total` | number | Total Rapid settlement fee | | `sale_fees.sale_annual_interest_rate` | string | The annual interest rate (precentage) of the rapid and discount settlements | | `sale_fees.sale_market_fee` | string | Sale's market fee | | `sale_fees.sale_market_fee_total` | number | Total sale's market fee | | `sale_buyer_details` | object | | | `sale_buyer_details.buyer_card_mask` | string | Buyer's credit card mask | | `sale_buyer_details.buyer_card_expiry` | string | Expiration date | | `sale_buyer_details.buyer_card_brand` | string | Card brand | | `sale_buyer_details.buyer_card_is_foreign` | boolean | Indicates if the card is foreign | | `sale_buyer_details.buyer_name` | string | Buyer's full name | | `sale_buyer_details.buyer_email` | string | Buyer's email | | `sale_buyer_details.buyer_phone` | string | Buyer's phone | | `sale_buyer_details.buyer_social_id` | string | Buyer's social ID | | `transaction_invoice_url` | string | Link to the invoice | | `transaction_invoice_doc_number` | string | The invoice number. | ```json { "seller_payme_id": "MPL00008-00008EXM-EXAMPLE0-EXAMPLE8", "seller_id": null, "sale_payme_id": "SALE1499-869577YG-Y2QXJ6PK-INXR2FAE", "sale_payme_code": 115498, "transaction_id": "", "payme_transaction_id": "TRAN1499-869602B9-7QIUNKHI-F0SL1AOV", "transaction_created_at": "2017-07-12 17:26:42", "sale_type": 1, "sale_status": "completed", "transaction_status": "validated", "transaction_type": 1, "sale_currency": "ILS", "sale_description": "produt", "sale_installments": 5, "sale_payment_method": "credit-card", "transaction_price": 9000, "transaction_price_after_fees": "8617", "sale_vat": "0.17", "sale_auth_number": "2154577", "transaction_release_date": "2017-08-01 06:00:00", "transaction_voucher": "10784", "transaction_reference_number": null, "transaction_acquirer": null, "transaction_discounter": null, "transaction_error_code": "20000", "transaction_error_text": "Permitted transaction", "transaction_is_matched": false, "transaction_match_statuses": [], "sale_is_3ds": false, "sale_fees": { "sale_processing_fee": "2.50", "sale_processing_fee_total": 225, "sale_processing_charge": "1.20", "sale_discount_fee": "0.00", "sale_discount_fee_total": 0, "sale_rapid_settlement_fee": "0.00", "sale_rapid_settlement_fee_total": 0, "sale_yearly_interest_fee": null, "sale_market_fee": "0.00", "sale_market_fee_total": 0 }, "sale_buyer_details": { "buyer_card_mask": "458000******0000", "buyer_card_expiry": "0521", "buyer_card_brand": 0, "buyer_card_is_foreign": false, "buyer_name": "Adam Kogan", "buyer_email": "user4@example.com", "buyer_phone": "0500000004", "buyer_social_id": "310048889" }, "transaction_invoice_url": null } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 1, "status_error_details": "Please verify that the JSON provided is valid", "status_additional_info": null, "status_error_code": 901 } ``` - [List Subscriptions](https://docs-staging.payme.io/payments/query-apis/post-get-subscriptions): POST /get-subscriptions — List Subscriptions # List Subscriptions - Sandbox: `POST https://sandbox.payme.io/api/get-subscriptions` - Production: `POST https://live.payme.io/api/get-subscriptions` ## Credentials - Request body field `payme_client_key` (required): PayMe Partner Key - Request body field `seller_payme_id` (optional): Our unique seller ID (MPL). If you are a partner, you can use multiple seller_payme_id attributes to retreive data for these specific sellers ## Overview You can retreive data on subscriptions processed by your sellers using this endpoint. To understand the different use-cases for this API, See Get Subscriptions API guide [here](https://docs.paymeservice.com/docs/payme-public/b3A6MjU2MDk2MjE-get-sales). #### Subscription Iteration Types You can find them in the following guide - [Subscription Iteration Types](/marketplaces-and-platforms/lists-statuses/subscription-iteration-types). #### Subscription Statuses You can find them in the following guide - [Subscription Statuses](/marketplaces-and-platforms/lists-statuses/subscription-statuses). #### Query pagination (more than 500 results) If you are sending a query and expect to receive more than 500 results, make sure you use this function of Query Pagination. ```json { "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", ... "page_size": 100, // Max allowed page size is 500 "page": 1 } ``` ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | PayMe Partner Key | | `seller_payme_id` | string | no | Our unique seller ID (MPL). If you are a partner, you can use multiple seller_payme_id attributes to retreive data for these specific sellers | | `seller_id` | string | no | Merchant's unique seller ID for correlation with us | | `sub_payme_code` | string | no | Our unique subscription code | | `sub_payme_id` | string | no | Our unique sub ID | | `sub_created` | string | no | Exact creation date and time for which to retrieve subscriptions. ISO-8601 formatted | | `sub_created_min` | string | no | Earliest creation date and time for which to retrieve subscriptions. ISO-8601 formatted | | `sub_created_max` | string | no | Latest date and time for which to retrieve subscriptions. ISO-8601 formatted | | `sub_status` | string | no | Subscription status. You can find them in the following guide - [Subscription Statuses](/marketplaces-and-platforms/lists-statuses/subscription-statuses). | | `sub_iteration_type` | number | no | Subscription type ID. You can find them in the following guide - [Subscription Iteration Types](/marketplaces-and-platforms/lists-statuses/subscription-iteration-types). | | `sub_price` | number | no | Subscription final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `sub_currency` | string | no | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `sub_iterations` | number | no | Subscription amount of iterations | | `sub_start_date` | string | no | Exact start date and time for which to retrieve subscriptions. ISO-8601 formatted | | `sub_paid` | boolean | no | Was the subscription paid or not | ### Request example ```json { "payme_client_key": "XXXXXXXX", "sub_payme_code": "1234" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/get-subscriptions' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "XXXXXXXX", "sub_payme_code": "1234" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/get-subscriptions", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "XXXXXXXX", "sub_payme_code": "1234" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/get-subscriptions", json={ "payme_client_key": "XXXXXXXX", "sub_payme_code": "1234", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `items_count` | number | Number of subscription | | `items` | array | | | `items[].seller_payme_id` | string | Our unique seller ID | | `items[].seller_id` | string | Merchant's unique seller ID for correlation with us | | `items[].sub_payme_id` | string | Our unique sub ID | | `items[].payme_sub_code` | number | Our unique subscription code | | `items[].sub_created` | string | Exact creation date and time for which to retrieve subscriptions. ISO-8601 formatted | | `items[].sub_start_date` | string | Exact state date and time for which the subscription will be initiated | | `items[].sub_status` | string | Subscription status (for more info about the statuses, see table below) | | `items[].sub_iteration_type` | number | Subscription type ID (for more info about the types, see table [Subscription Iteration Types](/marketplaces-and-platforms/lists-statuses/subscription-iteration-types)) | | `items[].sub_price` | number | Subscription final price. For example, if the price is 50.75 (max 2 decimal points) the value that needs to be sent is 5075 | | `items[].sub_description` | string | Brief description about the subscription | | `items[].sub_iterations` | string | Subscription amount of iterations | | `items[].sub_iterations_completed` | string | Number of iterations completed | | `items[].sub_iterations_left` | string | Number of iterations left for the subscription | | `items[].sub_payment_date` | string | The date the payment is completed for each iteration | | `items[].sub_error_text` | string | If an error occured, it'll be mentioned in this parameter | | `items[].sub_currency` | string | Currency of subscription | | `items[].sub_paid` | boolean | Was the subscription paid | | `items[].sub_buyer_details` | object | | | `items[].sub_buyer_details.buyer_card_mask` | string | The first 6 and last 4 digits of the used card for the subscription | | `items[].sub_buyer_details.buyer_name` | string | Buyer's first and last name | | `items[].sub_buyer_details.buyer_email` | string | Buyer's email | | `items[].sub_buyer_details.buyer_phone` | string | Buyer's phone number | | `items[].sub_buyer_details.buyer_social_id` | string | Buyer's social ID number | | `status_code` | number | Status of the request (0 - success, 1 - error) | ```json { "items_count": 1, "items": [ { "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_id": "12345", "sub_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "sub_payme_code": "1234", "sub_created": "2016-01-01 15:15:15", "sub_start_date": "2016-01-10 08:00:00", "sub_prev_date": null, "sub_next_date": null, "sub_status": "2", "sub_iteration_type": "3", "sub_price": "10000", "sub_description": "Monthly Test Subscription", "sub_iterations": "4", "sub_iterations_completed": "0", "sub_iterations_left": "4", "sub_payment_date": "2016-01-02 10:10:10", "sub_error_text": "", "sub_currency": "USD", "sub_paid": true, "sub_buyer_details": { "buyer_card_mask": "458045******4580", "buyer_name": "First Last", "buyer_email": "buyer@example.com", "buyer_phone": "0500000001", "buyer_social_id": "000000001" } } ], "status_code": 0 } ``` - [List Sellers](https://docs-staging.payme.io/payments/query-apis/post-get-sellers): POST /get-sellers — List Sellers # List Sellers - Sandbox: `POST https://sandbox.payme.io/api/get-sellers` - Production: `POST https://live.payme.io/api/get-sellers` ## Credentials - Request body field `payme_client_key` (required): PayMe Partner Key - Request body field `seller_payme_id` (optional): Our unique seller ID (MPL). If you are a partner, you can use multiple seller_payme_id attributes to retreive data for these specific sellers ## Overview You can retreive data on your sellers using this endpoint. #### Query pagination (more than 500 results) If you are sending a query and expect to receive more than 500 results, make sure you use this function of Query Pagination. ```json { "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", ... "page_size": 100, // Max allowed page size is 500 "page": 1 } ``` ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | PayMe Partner Key | | `seller_payme_id` | string | no | Our unique seller ID (MPL). If you are a partner, you can use multiple seller_payme_id attributes to retreive data for these specific sellers | | `seller_created_max` | string | no | Latest date and time for which to retrieve sellers. ISO-8601 formatted | | `seller_created_min` | string | no | Earliest creation date and time for which to retrieve sellers. ISO-8601 formatted | | `seller_id` | string | no | Merchant's unique seller ID for correlation with us | | `seller_first_name` | string | no | | | `seller_last_name` | string | no | First name of the account owner | | `seller_social_id` | string | no | Last name of the account owner | | `seller_email` | string | no | Seller's personal email | | `seller_phone` | string | no | Seller's personal phone | | `seller_contact_email` | string | no | Seller's contact email that will be displayed to the buyers | | `seller_contact_phone` | string | no | Seller's contact phone that will be displayed to the buyers | | `seller_inc` | string | no | | | `seller_inc_code` | string | no | Seller's business ID (ח.פ, ע.מ) | | `selelr_merchant_name` | string | no | Seller's merchant name | | `market_fee` | number | no | A decimal between 0-30 representing the percent of the sale price that is collected for the marketplace (includes VAT) | | `seller_active` | boolean | no | Seller's active state | | `seller_approved` | boolean | no | Seller's approval state | ### Request example ```json { "payme_client_key": "XXXXXXXX", "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_created_min": "2016-01-01 00:00:00", "seller_created_max": "2016-01-02 00:00:00", "seller_first_name": "First" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/get-sellers' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "XXXXXXXX", "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_created_min": "2016-01-01 00:00:00", "seller_created_max": "2016-01-02 00:00:00", "seller_first_name": "First" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/get-sellers", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "XXXXXXXX", "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_created_min": "2016-01-01 00:00:00", "seller_created_max": "2016-01-02 00:00:00", "seller_first_name": "First" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/get-sellers", json={ "payme_client_key": "XXXXXXXX", "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_created_min": "2016-01-01 00:00:00", "seller_created_max": "2016-01-02 00:00:00", "seller_first_name": "First", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `items_count` | number | Number of sellers | | `items` | array | | | `items[].seller_payme_id` | string | Our unique seller ID (MPL) | | `items[].seller_id` | string | Merchant's unique seller ID for correlation with us | | `items[].seller_created` | string | Exact creation date and time for which to retrieve sellers. ISO-8601 formatted | | `items[].seller_active` | boolean | Seller is Active in the system or not | | `items[].seller_approved` | boolean | Seller is approved in the system (T/F) | | `items[].seller_approved_date` | string | The date the seller was approved in the system | | `items[].seller_is_paid_directly` | boolean | Seller is paid directly by PayMe or by the acquirers. (true is paid by the acquirers) | | `items[].seller_is_discount` | boolean | Seller has a discount rate | | `items[].seller_withdrawal_plan` | number | Seller withdrawl plan (see `get-withdrawls` API) | | `items[].seller_withdrawal_date` | string | | | `items[].seller_personal_details` | object | | | `items[].seller_personal_details.seller_first_name` | string | First name of the account owner | | `items[].seller_personal_details.seller_last_name` | string | Last name of the account owner | | `items[].seller_personal_details.seller_social_id` | string | Seller's social ID number | | `items[].seller_personal_details.seller_birthdate` | string | Seller birth date | | `items[].seller_personal_details.seller_gender` | string | Seller gender (0 - Male, 1 - Female) | | `items[].seller_personal_details.seller_email` | string | Seller's email address` | | `items[].seller_personal_details.seller_phone` | string | Seller's phone number | | `items[].seller_business_details` | object | | | `items[].seller_business_details.seller_inc` | string | | | `items[].seller_business_details.seller_inc_code` | string | Seller's business ID (ח.פ, ע.מ) | | `items[].seller_business_details.seller_merchant_name` | string | Seller's merchant name | | `items[].seller_business_details.seller_site_url` | string | Seller's website URL` | | `items[].seller_business_details.seller_description` | string | Seller's business description | | `items[].seller_business_details.seller_retail_type` | string | Seller retail type | | `items[].seller_business_details.seller_contact_email` | string | Seller contact email | | `items[].seller_business_details.seller_contact_phone` | string | Seller's contact phone | | `items[].seller_business_details.seller_bank_account_code` | string | Seller bank code | | `items[].seller_business_details.seller_bank_account_branch` | string | Seller's bank branch | | `items[].seller_business_details.seller_bank_account_number` | string | Seller's bank account number | | `items[].seller_address` | object | | | `items[].seller_address.seller_address_city` | string | Seller's city address | | `items[].seller_address.seller_address_street` | string | Seller's address street | | `items[].seller_address.seller_address_street_number` | string | Seller's street address number | | `items[].seller_address.seller_address_country` | string | Seller's country address | | `items[].seller_fees` | object | | | `items[].seller_fees.fee_market_fee` | string | Market fee | | `items[].seller_fees.fee_default_processing_fee` | string | Partner's default processing fees | | `items[].seller_fees.fee_default_processing_charge` | string | Partner's default processing fees | | `items[].seller_fees.fee_default_discount_fee` | string | Partner's default discount | | `items[].seller_fees.fee_foreign_processing_fee` | string | Partner's default foreign cards processing fees | | `items[].seller_fees.fee_foreign_processing_charge` | string | Partner's default foreign processing charges | | `items[].seller_fees.fee_forcurr_processing_charge` | string | Partner's default foreign currency charges | | `items[].seller_currencies` | array | Seller enabled currencies | | `items[].seller_wallets` | object | | | `items[].seller_wallets.ILS` | object | | | `items[].seller_wallets.ILS.wallet_currency` | string | Currency of the seller's wallet | | `items[].seller_wallets.ILS.wallet_total` | string | Wallet total balance | | `items[].seller_wallets.ILS.wallet_releasable` | string | The balance available for settlement | | `items[].seller_wallets.USD` | object | ` | | `items[].seller_wallets.USD.wallet_currency` | string | Wallet currency | | `items[].seller_wallets.USD.wallet_total` | string | Wallet total balance | | `items[].seller_wallets.USD.wallet_releasable` | string | The balance available for settlement | | `items[].seller_monthly_invoices` | object | | | `items[].seller_monthly_invoices.1234` | object | | | `items[].seller_monthly_invoices.1234.invoice_reference` | string | Invoice reference number | | `items[].seller_monthly_invoices.1234.invoice_created` | string | Invoice creation date | | `items[].seller_monthly_invoices.1234.invoice_doc_number` | string | Invoice document number | | `items[].seller_monthly_invoices.1234.invoice_url` | string | Invoice file PDF URL | | `items[].seller_monthly_invoices.1234.invoice_details_url` | string | Invoice details URL | | `items[].seller_monthly_invoices.2134` | object | | | `items[].seller_monthly_invoices.2134.invoice_reference` | string | Invoice reference number | | `items[].seller_monthly_invoices.2134.invoice_created` | string | Invoice creation date | | `items[].seller_monthly_invoices.2134.invoice_doc_number` | string | Invoice document number | | `items[].seller_monthly_invoices.2134.invoice_url` | string | Invoice file PDF URL | | `items[].seller_monthly_invoices.2134.invoice_details_url` | string | Invoice details URL | | `status_code` | number | 0 for Sucessful requests, 1 for Failed requests | ```json { "items_count": 1, "items": [ { "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_id": "12345", "seller_created": "2016-01-01 15:15:15", "seller_active": true, "seller_approved": false, "seller_approved_date": "2016-02-10 00:00:00", "seller_is_paid_directly": false, "seller_is_discount": true, "seller_withdrawal_plan": 1, "seller_withdrawal_date": null, "seller_personal_details": { "seller_first_name": "First", "seller_last_name": "Last", "seller_social_id": "999999999", "seller_birthdate": "1989-05-06", "seller_gender": "1", "seller_email": "personal@example.com", "seller_phone": "0500000005" }, "seller_business_details": { "seller_inc": "2", "seller_inc_code": "123456", "seller_merchant_name": "Baby Ducks", "seller_site_url": "www.babyducks.com", "seller_description": "We are Baby Ducks", "seller_retail_type": "1", "seller_contact_email": "contact@example.com", "seller_contact_phone": "031234567", "seller_bank_account_code": "12", "seller_bank_account_branch": "123", "seller_bank_account_number": "12345" }, "seller_address": { "seller_address_city": "City", "seller_address_street": "Street", "seller_address_street_number": "10", "seller_address_country": "IL" }, "seller_fees": { "fee_market_fee": "1.50", "fee_default_processing_fee": "2.50", "fee_default_processing_charge": "1.20", "fee_default_discount_fee": "0.50", "fee_foreign_processing_fee": "3.50", "fee_foreign_processing_charge": "1.20", "fee_forcurr_processing_charge": "0.30" }, "seller_currencies": [ "ILS", "USD", "EUR" ], "seller_wallets": { "ILS": { "wallet_currency": "ILS", "wallet_total": "10000", "wallet_releasable": "0" }, "USD": { "wallet_currency": "USD", "wallet_total": "0", "wallet_releasable": "0" } }, "seller_monthly_invoices": { "1234": { "invoice_reference": "2015-12", "invoice_created": "2016-01-01", "invoice_doc_number": "1234", "invoice_url": "PDF_FILE_URL.pdf", "invoice_details_url": "https://preprod.paymeservice.com/system/invoice-details-viewer/XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX" }, "2134": { "invoice_reference": "2016-01", "invoice_created": "2016-02-01", "invoice_doc_number": "2134", "invoice_url": "PDF_FILE_URL.pdf", "invoice_details_url": "https://preprod.paymeservice.com/system/invoice-details-viewer/XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX" } } } ], "status_code": 0 } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 1, "status_error_details": "שירות לא נמצא", "status_additional_info": "payme_client_key", "status_error_code": 200 } ``` - [List Past Withdrawals](https://docs-staging.payme.io/payments/query-apis/post-get-withdrawals): POST /get-withdrawals — List Past Withdrawals # List Past Withdrawals - Sandbox: `POST https://sandbox.payme.io/api/get-withdrawals` - Production: `POST https://live.payme.io/api/get-withdrawals` ## Credentials - Request body field `payme_client_key` (required): PayMe Partner Key - Request body field `seller_payme_id` (optional): Our unique seller ID (MPL). If you are a partner, you can use multiple seller_payme_id attributes to retreive data for these specific sellers ## Overview You can retreive data on withdrawals requested by your sellers using this endpoint. #### Query pagination (more than 500 results) If you are sending a query and expect to receive more than 500 results, make sure you use this function of Query Pagination. ```json { "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", ... "page_size": 100, // Max allowed page size is 500 "page": 1 } ``` ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | PayMe Partner Key | | `seller_payme_id` | string | no | Our unique seller ID (MPL). If you are a partner, you can use multiple seller_payme_id attributes to retreive data for these specific sellers | | `seller_id` | string | no | Merchant's unique seller ID for correlation with us | | `withdrawal_created` | string | no | Exact creation date and time for which to retrieve withdrawals. ISO-8601 formatted | | `withdrawal_created_min` | string | no | Earliest creation date and time for which to retrieve withdrawals. ISO-8601 formatted | | `withdrawal_created_max` | string | no | Latest date and time for which to retrieve withdrawals. ISO-8601 formatted | | `withdrawal_total` | string | no | Withdrawal total amount. For example, if the amount is 50.75 (max 2 decimal points) the value that recieved is 5075 | | `withdrawal_currency` | string | no | Withdrawal currency. 3-letter ISO 4217 name | ### Request example ```json { "payme_client_key": "XXXXXXXX", "withdrawal_payme_code": "1234" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/get-withdrawals' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "XXXXXXXX", "withdrawal_payme_code": "1234" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/get-withdrawals", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "XXXXXXXX", "withdrawal_payme_code": "1234" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/get-withdrawals", json={ "payme_client_key": "XXXXXXXX", "withdrawal_payme_code": "1234", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `items_count` | number | | | `items` | array | | | `items[].seller_payme_id` | string | Our unique seller ID | | `items[].withdrawal_payme_code` | number | Unique withdrawl PayMe code | | `items[].withdrawal_created` | string | Withdrwal creation date | | `items[].withdrawal_currency` | string | Withdrawal currency. 3-letter ISO 4217 name | | `items[].withdrawal_total` | number | Withdrawl total amount | | `items[].withdrawal_description` | string | Withdrawl description | | `status_code` | number | | ```json { "items_count": 1, "items": [ { "seller_payme_id": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", "withdrawal_payme_code": 10001, "withdrawal_created": "2016-01-01 15:15:15", "withdrawal_currency": "USD", "withdrawal_total": 600000, "withdrawal_description": "משיכה לבנק" } ], "status_code": 0 } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 1, "status_error_details": "Required parameter is missing", "status_additional_info": "payme_client_key", "status_error_code": 1 } ``` - [List Future Withdrawals](https://docs-staging.payme.io/payments/query-apis/get-future-withdrawals): POST /get-future-withdrawals — List Future Withdrawals # List Future Withdrawals - Sandbox: `POST https://sandbox.payme.io/api/get-future-withdrawals` - Production: `POST https://live.payme.io/api/get-future-withdrawals` ## Credentials - Request body field `seller_payme_id` (required): Our unique seller ID (MPL). You can retreive data on expected future withdrawals of your sellers using this endpoint. #### Query pagination (more than 500 results) If you are sending a query and expect to receive more than 500 results, make sure you use this function of Query Pagination. ```json { "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", ... "page_size": 100, // Max allowed page size is 500 "page": 1 } ``` ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | Our unique seller ID (MPL). | | `currency` | string | no | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | ### Request example ```json { "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "currency": "ILS" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/get-future-withdrawals' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "currency": "ILS" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/get-future-withdrawals", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "currency": "ILS" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/get-future-withdrawals", json={ "seller_payme_id": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "currency": "ILS", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `items_count` | integer | Number of withdrawals | | `items` | array | | | `items[].start_time` | integer | Date of the previous withdrawal (epoch) | | `items[].end_time` | integer | Date of the end of the period of the withdrawal (epoch) | | `items[].created_at` | string | Timestamp of the withdrawal creation | | `items[].withdrawable` | integer | Indicates if the fund is withdrawable | | `items[].source` | integer | Source of the withdrawal | | `items[].source_text` | string | Source of the withdrawal | | `items[].card_brand` | integer | Card brand | | `items[].card_brand_text` | string | Card brand | | `items[].total` | string | Withdrawal total amount | | `items[].withdrawal_payme_code` | string | Withdrawal code | | `status_code` | integer | Status of the request (0 - success, 1 - error) | ```json { "items_count": 1, "items": [ { "start_time": 1687774500, "end_time": -1, "created_at": "2023-06-20 14:00:20", "withdrawable": 1, "source": 1, "source_text": "פאיימי", "card_brand": 1, "card_brand_text": "אחר", "total": "156390", "withdrawal_payme_code": "withdrawal-code" } ], "status_code": 0 } ``` - [Aggregated Wallets Data](https://docs-staging.payme.io/payments/query-apis/get-funds-transfer-aggregated): GET /funds-transfer/aggregated — Aggregated Wallets Data # Aggregated Wallets Data - Sandbox: `GET https://sandbox.payme.io/api/funds-transfer/aggregated` - Production: `GET https://live.payme.io/api/funds-transfer/aggregated` ## Credentials - Query parameter `seller_payme_id` (optional): The specific MPL to be searched for. ## Overview Using this method, you can retreive data regarding your wallet or wallets for a certain day. You'll be able to get the following information: Value | Description ---|--- `outgoing_amount` | The daily outgoing funds amount. `outgoing_count`| The daily outgoing transactions count. `ingoing_amount`| The daily ingoing funds amount. `ingoing_count`|The daily ingoing transactions count. `daily_withdrawal_amount`| The daily withdrawal amount. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `start_date` | query | string | no | The start date of the query. | | `end_date` | query | string | no | The end date of the query. | | `seller_payme_id` | query | string | no | The specific MPL to be searched for. | ## Request body Content type: `application/json` ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/funds-transfer/aggregated?seller_payme_id=' \ -H 'Content-Type: application/json' \ --data-raw '{}' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/funds-transfer/aggregated?seller_payme_id=", { method: "GET", headers: { "Content-Type": "application/json", }, body: JSON.stringify({}), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/funds-transfer/aggregated?seller_payme_id=", json={}, ) print(response.text) ``` ### PHP ```php '); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `page` | integer | | | `items_total` | integer | | | `items_per_page` | integer | | | `start_date` | string | | | `end_date` | string | | | `items` | array | | | `items[].seller_payme_id` | string | | | `items[].currency` | string | | | `items[].date` | string | | | `items[].outgoing_transaction_count` | integer | | | `items[].outgoing_transaction_amount` | string | | | `items[].ingoing_transaction_count` | integer | | | `items[].ingoing_transaction_amount` | string | | ```json { "status_code": 0, "page": 1, "items_total": 1, "items_per_page": 1, "start_date": "2022-05-18", "end_date": "2022-05-18", "items": [ { "seller_payme_id": "MPL90008-90008EXM-EXAMPLE0-EXAMPLE9", "currency": "ILS", "date": "2022-05-18 23:30:10", "outgoing_transaction_count": 10, "outgoing_transaction_amount": "10002.12", "ingoing_transaction_count": 12, "ingoing_transaction_amount": "20000.12" } ] } ``` - [List of available banks](https://docs-staging.payme.io/payments/query-apis/get-banks-country-iso-code): GET /banks/{country_iso_code} — List of available banks # List of available banks - Sandbox: `GET https://sandbox.payme.io/api/banks/{country_iso_code}` - Production: `GET https://live.payme.io/api/banks/{country_iso_code}` ## Credentials - Header `PayMe-Partner-Key` (API key) ## Overview This API Endpoint will allow you retreive a list of available banks by filtering your request per country. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Partner-Key` | header | string | no | Your PayMe's Partner Secret Key | | `country_iso_code` | path | string | yes | | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/banks/' \ -H 'PayMe-Partner-Key: ' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/banks/", { method: "GET", headers: { "PayMe-Partner-Key": "", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/banks/", headers={ "PayMe-Partner-Key": "", }, ) print(response.text) ``` ### PHP ```php '); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'PayMe-Partner-Key: ', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | `status_code` = 0 (success) `status_code` = 1 (failure) | | `items_count` | integer | The total items count in your response | | `items_per_page` | integer | The total items count per page in your response | | `country_code` | string | Find the iso codes [here](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) | | `items` | array | The items object - presenting the list of banks | | `items[].code` | string | Bank code | | `items[].local_name` | string | Local bank name | | `items[].international_name` | string | Internal bank name | ```json { "status_code": 0, "items_count": 0, "items_per_page": 0, "country_code": "string", "items": [ { "code": "string", "local_name": "string", "international_name": "string" } ] } ``` - [Wallet to Wallet transfers](https://docs-staging.payme.io/payments/query-apis/get-funds-transfer): GET /funds-transfer — Wallet to Wallet transfers # Wallet to Wallet transfers - Sandbox: `GET https://sandbox.payme.io/api/funds-transfer` - Production: `GET https://live.payme.io/api/funds-transfer` ## Credentials - Request body field `payme_client_key` (required): PayMe Partner Key. ## Overview This endpoint enable you to receive data of funds transfers between wallets in PayMe. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | yes | PayMe Partner Key. | | `seller_payme_id_origin` | string | no | The MPL of the seller that their wallet will be used to transfer the funds. | | `seller_payme_id_destination` | string | no | The MPL of the seller that their wallet will receive the funds. | | `currency` | string | no | Sale currency. 3-letter ISO 4217 name. | | `start_date` | string | no | The start date of the query. | | `end_date` | string | no | The end date of the query. | ### Request example ```json { "payme_client_key": "XXXXXXXX", "seller_payme_id_origin": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_payme_id_destination": "MPL2DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "currency": "ILS", "start_date": "2023-05-04", "end_date": "2023-05-04" } ``` ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/funds-transfer' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "XXXXXXXX", "seller_payme_id_origin": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_payme_id_destination": "MPL2DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "currency": "ILS", "start_date": "2023-05-04", "end_date": "2023-05-04" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/funds-transfer", { method: "GET", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "XXXXXXXX", "seller_payme_id_origin": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_payme_id_destination": "MPL2DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "currency": "ILS", "start_date": "2023-05-04", "end_date": "2023-05-04" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/funds-transfer", json={ "payme_client_key": "XXXXXXXX", "seller_payme_id_origin": "MPL1DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "seller_payme_id_destination": "MPL2DEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "currency": "ILS", "start_date": "2023-05-04", "end_date": "2023-05-04", }, ) print(response.text) ``` ### PHP ```php 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status of the request (0 - success, 1 - error) | | `page` | integer | Page number | | `currency` | string | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). | | `start_date` | string | The start date of the query. | | `end_date` | string | The end date of the query. | | `items_total` | integer | Count of Wallet to Wallet transactions in the chosen period. | | `items_per_page` | integer | Count of Wallet to Wallet transactions in the page. | | `items` | array | Detailed Transactions. | ```json { "status_code": 0, "page": 1, "currency": "ILS", "start_date": "2023-05-04", "end_date": "2023-05-04", "items_total": 0, "items_per_page": 0, "items": [] } ``` - [Withdrawal Correlation](https://docs-staging.payme.io/payments/query-apis/post-credit-match): POST /credit-match — Withdrawal Correlation # Withdrawal Correlation - Sandbox: `POST https://sandbox.payme.io/api/credit-match` - Production: `POST https://live.payme.io/api/credit-match` ## Credentials - Request body field `seller_payme_id` (required): Your unique PayMe seller identifier. This endpoint retrieves credit match information for a specific seller and withdrawal. Request Body: ```json { "seller_payme_id": "string", //Your unique seller ID "withdrawal_payme_code": number //The withdrawal number as received from POST get-withdrawals API endpoint } ``` Parameters: - `seller_payme_id` (required): The unique identifier for the seller in the Payme system. - `withdrawal_payme_code` (required): The Payme code for the specific withdrawal. Successful Response (HTTP 200): The response includes detailed information about the withdrawal, seller, and associated transactions. Error Responses (HTTP 500): 1. Seller not found: ```json { "status_code": 1, "status_error_details": "מוכר לא נמצא", "status_additional_info": "seller_payme_id", "status_error_code": 251, "session": "string" } ``` 2. Withdrawal not found: ```json { "status_code": 1, "status_error_details": "משיכה לא נמצאה", "status_additional_info": number, "status_error_code": 906, "session": "string" } ``` Notes: - Ensure that the `seller_payme_id` and `withdrawal_payme_code` are valid before making the request. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_payme_id` | string | yes | Your unique PayMe seller identifier. | | `withdrawal_payme_code` | integer | yes | Your unique Withdrawal code. | ### Request example ```json { "seller_payme_id": "MPL90006-90006EXM-EXAMPLE0-EXAMPLE9", "withdrawal_payme_code": 1066726 } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/credit-match' \ -H 'Content-Type: application/json' \ --data-raw '{ "seller_payme_id": "MPL90006-90006EXM-EXAMPLE0-EXAMPLE9", "withdrawal_payme_code": 1066726 }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/credit-match", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "seller_payme_id": "MPL90006-90006EXM-EXAMPLE0-EXAMPLE9", "withdrawal_payme_code": 1066726 }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/credit-match", json={ "seller_payme_id": "MPL90006-90006EXM-EXAMPLE0-EXAMPLE9", "withdrawal_payme_code": 1066726, }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `seller_payme_id` | string | The unique PayMe seller identifier. | | `seller_id` | string | The external Seller ID, provided by the integrator. | | `withdrawal_payme_code` | integer | The withdrawal unique code. | | `withdrawal_created` | string | The date the withdrawal was created in timestamp format. | | `withdrawal_created_epoch` | integer | The date the withdrawal was created in epoch format. | | `withdrawal_total` | integer | The withdrawal total in cents (agorot). | | `withdrawal_currency` | string | The withdrawal currency, 3 letter ISO code. | | `items_count` | integer | The total count of items assembling the withdrawal. (Transactions and Charges) | | `items` | array | | | `items[].credit_vas_id` | string | The VAS identifier that was used to create the charge. | | `items[].sale_remote_id` | string | The external sale identifier. | | `items[].tran_id` | integer | The entity unique ID. | | `items[].tran_type` | string | The entity type ID. | | `items[].tran_created` | string | The date the entity was created on in timestamp format. | | `items[].tran_created_epoch` | string | The date the entity was created in Epoch format. | | `items[].tran_total` | integer | The entity total value, in cents (Agorot) | | `items[].tran_total_after_deduction` | integer | Total after deduction (will be equal to total by default). | | `items[].tran_currency` | string | The currency of the entity. | | `items[].tran_installments` | integer | The installments count of the transaction. | | `items[].tran_description` | string | The description of the entity. | | `items[].tran_remote_id` | string | The remote ID given by the integrator. | | `items[].tran_voucher` | string | The voucher of the transaction. | | `items[].sale_payme_code` | integer | The unique PayMe sale identifer. | | `items[].sale_buyer_name` | string | The buyer name of the transaction. | | `status_code` | integer | Status code. `0` - Successful request. `1` - Failed request. | | `session` | string | The unique session | ```json { "seller_payme_id": "MPL90006-90006EXM-EXAMPLE0-EXAMPLE9", "seller_id": "il-110110738-1677599477", "withdrawal_payme_code": 1066726, "withdrawal_created": "2024-07-28 12:29:40", "withdrawal_created_epoch": 1722158980, "withdrawal_total": 285511, "withdrawal_currency": "ILS", "items_count": 10, "items": [ { "credit_vas_id": "VASL1677-599477XY-YKWVZACW-IWQ3BG6Y", "sale_remote_id": "rVrUy44C75ZShMORPNGkz9MVK", "tran_id": 191208278, "tran_type": "102", "tran_created": "2024-07-24 21:14:33", "tran_created_epoch": "1721844873", "tran_total": -140, "tran_total_after_deduction": -140, "tran_currency": "ILS", "tran_installments": 1, "tran_description": "עמוד תשלום - סטודיו דוצ׳ה Processing Charge", "tran_remote_id": "rVrUy44C75ZShMORPNGkz9MVK", "tran_voucher": "6003289", "sale_payme_code": 61974223, "sale_buyer_name": "ליאור צוק" }, { "credit_vas_id": "VASL1677-599477HY-GUKISPF6-AHGOSEWS", "sale_remote_id": "rVrUy44C75ZShMORPNGkz9MVK", "tran_id": 191208274, "tran_type": "102", "tran_created": "2024-07-24 21:14:33", "tran_created_epoch": "1721844873", "tran_total": -1578, "tran_total_after_deduction": -1578, "tran_currency": "ILS", "tran_installments": 1, "tran_description": "עמוד תשלום - סטודיו דוצ׳ה Advancement services", "tran_remote_id": "rVrUy44C75ZShMORPNGkz9MVK", "tran_voucher": "6003289", "sale_payme_code": 61974223, "sale_buyer_name": "ליאור צוק" }, { "credit_vas_id": "VASL1677-599477LB-MLQDCS8F-KTGONSZE", "sale_remote_id": "rVrUy44C75ZShMORPNGkz9MVK", "tran_id": 191208270, "tran_type": "102", "tran_created": "2024-07-24 21:14:33", "tran_created_epoch": "1721844873", "tran_total": -2953, "tran_total_after_deduction": -2953, "tran_currency": "ILS", "tran_installments": 1, "tran_description": "עמוד תשלום - סטודיו דוצ׳ה Processing Fee", "tran_remote_id": "rVrUy44C75ZShMORPNGkz9MVK", "tran_voucher": "6003289", "sale_payme_code": 61974223, "sale_buyer_name": "ליאור צוק" }, { "credit_vas_id": null, "sale_remote_id": "rVrUy44C75ZShMORPNGkz9MVK", "tran_id": 224152597, "tran_type": "1", "tran_created": "2024-07-24 21:14:33", "tran_created_epoch": "1721844873", "tran_total": 155000, "tran_total_after_deduction": 155000, "tran_currency": "ILS", "tran_installments": 1, "tran_description": "עמוד תשלום - סטודיו דוצ׳ה ", "tran_remote_id": "rVrUy44C75ZShMORPNGkz9MVK", "tran_voucher": "6003289", "sale_payme_code": 61974223, "sale_buyer_name": "ליאור צוק" }, { "credit_vas_id": "VASL1677-599477LB-MLQDCS8F-KTGONSZE", "sale_remote_id": "r36GeI5Crm2JORFnXANDmAHpm", "tran_id": 191334587, "tran_type": "102", "tran_created": "2024-07-25 21:15:20", "tran_created_epoch": "1721931320", "tran_total": -2667, "tran_total_after_deduction": -2667, "tran_currency": "ILS", "tran_installments": 1, "tran_description": "עמוד תשלום - סטודיו דוצ׳ה Processing Fee", "tran_remote_id": "r36GeI5Crm2JORFnXANDmAHpm", "tran_voucher": "7001937", "sale_payme_code": 62018574, "sale_buyer_name": "Ofri Katz" }, { "credit_vas_id": null, "sale_remote_id": "r36GeI5Crm2JORFnXANDmAHpm", "tran_id": 224212542, "tran_type": "1", "tran_created": "2024-07-25 21:15:20", "tran_created_epoch": "1721931320", "tran_total": 140000, "tran_total_after_deduction": 140000, "tran_currency": "ILS", "tran_installments": 1, "tran_description": "עמוד תשלום - סטודיו דוצ׳ה ", "tran_remote_id": "r36GeI5Crm2JORFnXANDmAHpm", "tran_voucher": "7001937", "sale_payme_code": 62018574, "sale_buyer_name": "Ofri Katz" }, { "credit_vas_id": "VASL1677-599477HY-GUKISPF6-AHGOSEWS", "sale_remote_id": "r36GeI5Crm2JORFnXANDmAHpm", "tran_id": 191334591, "tran_type": "102", "tran_created": "2024-07-25 21:15:21", "tran_created_epoch": "1721931321", "tran_total": -1425, "tran_total_after_deduction": -1425, "tran_currency": "ILS", "tran_installments": 1, "tran_description": "עמוד תשלום - סטודיו דוצ׳ה Advancement services", "tran_remote_id": "r36GeI5Crm2JORFnXANDmAHpm", "tran_voucher": "7001937", "sale_payme_code": 62018574, "sale_buyer_name": "Ofri Katz" }, { "credit_vas_id": "VASL1677-599477XY-YKWVZACW-IWQ3BG6Y", "sale_remote_id": "r36GeI5Crm2JORFnXANDmAHpm", "tran_id": 191334595, "tran_type": "102", "tran_created": "2024-07-25 21:15:21", "tran_created_epoch": "1721931321", "tran_total": -140, "tran_total_after_deduction": -140, "tran_currency": "ILS", "tran_installments": 1, "tran_description": "עמוד תשלום - סטודיו דוצ׳ה Processing Charge", "tran_remote_id": "r36GeI5Crm2JORFnXANDmAHpm", "tran_voucher": "7001937", "sale_payme_code": 62018574, "sale_buyer_name": "Ofri Katz" }, { "credit_vas_id": "VASL1677-599477Q0-DC5MSVNQ-H7JBRQQZ", "sale_remote_id": "rZsj2JQB3rVSfeLsVyPEAmH8H", "tran_id": 191290928, "tran_type": "102", "tran_created": "2024-07-25 10:38:05", "tran_created_epoch": "1721893085", "tran_total": -293, "tran_total_after_deduction": -293, "tran_currency": "ILS", "tran_installments": 1, "tran_description": "עמוד תשלום - סטודיו דוצ׳ה שירות 3DSecure", "tran_remote_id": "rZsj2JQB3rVSfeLsVyPEAmH8H", "tran_voucher": null, "sale_payme_code": 62211761, "sale_buyer_name": "" }, { "credit_vas_id": "VASL1677-599477Q0-DC5MSVNQ-H7JBRQQZ", "sale_remote_id": "rZsj2JQB3rVSfeLsVyPEAmH8H", "tran_id": 191291080, "tran_type": "102", "tran_created": "2024-07-25 10:41:03", "tran_created_epoch": "1721893263", "tran_total": -293, "tran_total_after_deduction": -293, "tran_currency": "ILS", "tran_installments": 1, "tran_description": "עמוד תשלום - סטודיו דוצ׳ה שירות 3DSecure", "tran_remote_id": "rZsj2JQB3rVSfeLsVyPEAmH8H", "tran_voucher": null, "sale_payme_code": 62211926, "sale_buyer_name": "" } ], "status_code": 0, "session": "FIV3zo4M" } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status code. `0` - Successful request. `1` - Failed request. | | `status_error_details` | string | Error description. | | `status_additional_info` | integer | Error additional information. | | `status_error_code` | integer | PayMe error code. | | `session` | string | PayMe session ID. | ```json { "status_code": 1, "status_error_details": "משיכה לא נמצאה", "status_additional_info": 1066726222, "status_error_code": 906, "session": "FhT3aXe7" } ``` - [Get Transaction Statistics](https://docs-staging.payme.io/payments/get-transaction-statistics/post-get-transaction-statistics): POST /get-transaction-statistics — Get Transaction Statistics # Get Transaction Statistics - Sandbox: `POST https://sandbox.payme.io/api/get-transaction-statistics` - Production: `POST https://live.payme.io/api/get-transaction-statistics` ## Credentials - Request body field `payme_client_key` (optional): PayMe Partner Key. This endpoint enable to get transaction average, based on the chosen period (`time_resolution`), transaction's status (pending/validated) and currency. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payme_client_key` | string | no | PayMe Partner Key. | | `time_resolution` | string | no | The selected period. | | `start_date` | string | no | The start date of the selected period. | | `end_date` | string | no | The start date of the selected period. | | `transaction_status` | array | no | Filter the status of the transactions that will take into account in the calculation. For all the transaction statuses see [Transaction Statuses](/marketplaces-and-platforms/lists-statuses/transaction-statuses). Example: pending | | `sale_currency` | array | no | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). Example: ILS | ### Request example ```json { "payme_client_key": "XXXXXXXX", "time_resolution": "day", "start_date": "YYYY-MM-DD HH:MM:SS", "end_date": "YYYY-MM-DD HH:MM:SS", "transaction_status": [ "pending", "validated" ], "sale_currency": [ "ILS", "USD" ] } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/get-transaction-statistics' \ -H 'Content-Type: application/json' \ --data-raw '{ "payme_client_key": "XXXXXXXX", "time_resolution": "day", "start_date": "YYYY-MM-DD HH:MM:SS", "end_date": "YYYY-MM-DD HH:MM:SS", "transaction_status": [ "pending", "validated" ], "sale_currency": [ "ILS", "USD" ] }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/get-transaction-statistics", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payme_client_key": "XXXXXXXX", "time_resolution": "day", "start_date": "YYYY-MM-DD HH:MM:SS", "end_date": "YYYY-MM-DD HH:MM:SS", "transaction_status": [ "pending", "validated" ], "sale_currency": [ "ILS", "USD" ] }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/get-transaction-statistics", json={ "payme_client_key": "XXXXXXXX", "time_resolution": "day", "start_date": "YYYY-MM-DD HH:MM:SS", "end_date": "YYYY-MM-DD HH:MM:SS", "transaction_status": [ "pending", "validated", ], "sale_currency": [ "ILS", "USD", ], }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status of the request (0 - success, 1 - error) | | `start_date` | string | The start date of the selected period. | | `end_date` | string | The end date of the selected period. | | `time_resolution` | string | The selected period. | | `statistics` | object | | | `statistics.pending` | object | Transaction statistics in the chosen status | | `statistics.pending.ILS` | array | Transaction statistics in the chosen currency | | `statistics.pending.ILS[].sum` | integer | | | `statistics.pending.ILS[].count` | integer | | | `statistics.pending.ILS[].average` | integer | | ```json { "status_code": 0, "start_date": "YYYY-MM-DD HH:MM:SS", "end_date": "YYYY-MM-DD HH:MM:SS", "time_resolution": "day", "statistics": { "pending": { "ILS": [ { "sum": 0, "count": 0, "average": 0 }, { "sum": 0, "count": 0, "average": 0 } ] } } } ``` - [Get Transaction Data](https://docs-staging.payme.io/payments/get-transaction-data/post-get-transaction-data): POST /get-transaction-data — Get Transaction Data # Get Transaction Data - Sandbox: `POST https://sandbox.payme.io/api/get-transaction-data` - Production: `POST https://live.payme.io/api/get-transaction-data` ## Credentials - Header `PayMe-Public-Key` (API key) ## Overview This endpoint enable to get transaction, based on the transaction status, sale status, sale currency and sale payment method. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Public-Key` | header | string | no | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `transaction_type` | integer | no | Filter the type of the transactions that will be presented. For all the transaction types see [Transaction Types](/marketplaces-and-platforms/lists-statuses/transaction-types). | | `transaction_status` | string | no | Filter the status of the transactions that will be presented. For all the transaction statuses see [Transaction Statuses](/marketplaces-and-platforms/lists-statuses/transaction-statuses). | | `sale_status` | array | no | Filter the status of the sales that will be presented. For all the sale statuses see [Sale Statuses](/marketplaces-and-platforms/lists-statuses/sale-statuses). Example: "initial" | | `sale_currency` | array | no | Sale currency. [3-letter ISO 4217 name](https://en.wikipedia.org/wiki/ISO_4217). Example: "ILS" | | `sale_payment_method` | array | no | the Payment method used to pay the sale. For all the payment methods see [Available Payment Methods](/payments/direct-api/available-payment-methods). Example: "credit-card" | ### Request example ```json { "transaction_type": 1, "transaction_status": "validated", "sale_status": [ "completed" ], "sale_currency": [ "ILS" ], "sale_payment_method": [ "credit-card" ] } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/get-transaction-data' \ -H 'Content-Type: application/json' \ -H 'PayMe-Public-Key: ' \ --data-raw '{ "transaction_type": 1, "transaction_status": "validated", "sale_status": [ "completed" ], "sale_currency": [ "ILS" ], "sale_payment_method": [ "credit-card" ] }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/get-transaction-data", { method: "POST", headers: { "Content-Type": "application/json", "PayMe-Public-Key": "", }, body: JSON.stringify({ "transaction_type": 1, "transaction_status": "validated", "sale_status": [ "completed" ], "sale_currency": [ "ILS" ], "sale_payment_method": [ "credit-card" ] }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/get-transaction-data", headers={ "PayMe-Public-Key": "", }, json={ "transaction_type": 1, "transaction_status": "validated", "sale_status": [ "completed", ], "sale_currency": [ "ILS", ], "sale_payment_method": [ "credit-card", ], }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Public-Key: ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | Status of the request (0 - success, 1 - error) | | `items` | array | The transactions details. | | `items_count` | integer | Count of the transactions. | ```json { "status_code": 0, "items": [], "items_count": 0 } ``` - [iOS SDK](https://docs-staging.payme.io/payments/ios-sdk/ios-sdk): You can use the PayMe (Isracard Global) iOS SDK to implement payments on iOS devices. The guide covers building and importing the PMLib.framework, initializing the SDK, and integrating the Isracard Global API to pay a sale, pay a subscription, and capture a buyer. You can use our iOS SDK to implement our solution for iOS devices. [See the project repository on Bitbucket](https://bitbucket.org/paymeservice/isracard-global-ios-sdk/src) ## Getting Started ### Get the Isracard Global package Build the framework from sources: 1. Open the Isracard Global project. 2. Build the project. 3. The new framework is generated automatically in the Products directory of `PMLib.xcodeproj`: `PMLib.framework`. 4. Right-click → **Show in Finder** to get the path of the framework. ### Import the Isracard Global SDK framework 1. Open the project that needs to import the framework. 2. Select your project's **Targets → General → Embedded Binaries** (or **Build Phases → Embedded Frameworks**). 3. Press **Add (+)** and go to the path of `PMLib.framework`. 4. Build the project. ## Initialize the SDK Extend your `Application` and initialize the SDK. Header file: ```objc #import #import #define SELLERKEY @"/* Your seller_payme_id */" #define WEBSERVICE [PayMe sharedInstant:SELLERKEY stage:STAGING] #define CONTANTS [Contants sharedInstant] @interface Contants : NSObject + (id)sharedInstant; - (void)showHub:(BOOL)isShow; - (void)showMessage:(NSString *)message; ``` Source file: ```objc #import "Contants.h" #import #import "MBProgressHUD.h" #import "AppDelegate.h" static Contants *_contants; @implementation Contants + (id)sharedInstant{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _contants = [[Contants alloc]init]; }); return _contants; } - (void)showHub:(BOOL)isShow{ if (isShow) { [MBProgressHUD showHUDAddedTo:APPDELEGATE.window animated:YES]; }else{ [MBProgressHUD hideAllHUDsForView:APPDELEGATE.window animated:YES]; } } - (void)showMessage:(NSString *)message{ UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"" message:message delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; [alertView show]; } ``` ## Integrate with the Isracard Global API Each API request requires appropriate `PayMeRequest` and `TransactionListener` instances. ### Pay Sale First, generate a sale on your server side (for more details see the `generate-sale` API) and send the `payme_sale_id` to your application. Then you can create a `PaySaleRequest` and fire it: ```objc PaySaleRequest *request = [[PaySaleRequest alloc] init]; //payme_sale_id - Required - From your server request.paymeSaleId = /* payme_sale_id */; //Installments - Required request.installments = installments; //ID - Required Only for israeli cards request.buyerSocialID = buyerSocialID; //Email - Required request.buyerEmail = buyerEmail; //Name - Required request.buyerName = buyerName; //Credit Card Number - Required request.creditCardNumber = creditCardNumber; //CreditCard CVV - Required request.creditCardCVV = creditCardCVV; //Credit Card Expiration - Required request.creditCardExp = creditCardExp; [CONTANTS showHub:YES]; [WEBSERVICE paySale:request success:^(PaySaleResponse *responseObject) { [CONTANTS showHub:NO]; if(responseObject != nil) { //Handle success request } } failure:^(PayMeError *error) { [CONTANTS showHub:NO]; if(error != nil) { //Handle failed request } }]; ``` ### Pay Subscription First, generate a subscription on your server (for more details see the `generate-subscription` API) and send the `sub_payme_id` to your application. Then you can create a `PaySubscriptionRequest` and fire it: ```objc PaySubscriptionRequest *request = [[PaySubscriptionRequest alloc] init]; //Name - Required request.buyerName = buyerName; //ID - Required Only for israeli cards request.buyerSocialId = buyerSocialId; //Phone request.buyerPhone = buyerPhone; //Email - Required request.buyerEmail = buyerEmail; //sub_payme_id - Required - From your server request.subPaymeId = /* sub_payme_id */; //Credit Card Number - Required request.creditCardNumber = creditCardNumber; //CreditCard CVV - Required request.creditCardCVV = creditCardCVV; //Credit Card Expiration - Required request.creditCardExp = creditCardExp; [CONTANTS showHub:YES]; [WEBSERVICE paySubscription:request success:^(PaySubscriptionResponse *responseObject) { [CONTANTS showHub:NO]; if(responseObject != nil) { //Handle success request } } failure:^(PayMeError *error) { [CONTANTS showHub:NO]; if(error != nil) { //Handle failed request } }]; ``` ### Capture Buyer ```objc CaptureBuyerRequest *request = [[CaptureBuyerRequest alloc] init]; //Name - Required request.buyerName = buyerName; //Phone - Required request.buyerPhone = buyerPhone; //Email - Required request.buyerEmail = buyerEmail; //ID - Required Only for israeli cards request.buyerSocialId = buyerSocialId; //SellerID - Required request.sellerPaymeId = /* Your seller_payme_id */; //Permanent request.buyerIsPermanent = buyerIsPermanent; //Credit Card Number - Required request.creditCardNumber = creditCardNumber; //CreditCard CVV - Required request.creditCardCvv = creditCardCVV; //Credit Card Expiration - Required request.creditCardExp = creditCardExp; [CONTANTS showHub:YES]; [WEBSERVICE captureBuyer:request success:^(CaptureBuyerResponse *responseObject) { [CONTANTS showHub:NO]; if(responseObject != nil) { //Handle success request } } failure:^(PayMeError *error) { //do something [CONTANTS showHub:NO]; if(error != nil) { //Handle failed request } }]; ``` ## B2B Payments - [Create New Contract](https://docs-staging.payme.io/b2b-payments/contracts/post-user): POST /payment-contracts — Create New Contract # Create New Contract - Sandbox: `POST https://sandbox.payme.io/api/payment-contracts` - Production: `POST https://live.payme.io/api/payment-contracts` ## Credentials - Header `PayMe-Merchant-Key` (API key) This endpoint enables to create a new contract. There is an option to send payment (payment.type = 1), and to send a payment request (payment.type = 2) ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Merchant-Key` | header | string | no | MPL | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `description` | string | yes | Describes the reason of the payment | | `amount` | number | yes | The amount of the payment. The provided amount should be with pennies. For example, 1000 = 10.00 | | `currency` | string | yes | The currency that will be used for the payment | | `remote_id` | string | no | A unique Key that could be used as an identifier | | `callback_url` | string | no | The URL to receive callbacks for every change in status | | `recipient` | object | yes | The recipient's details | | `recipient.language` | string | no | The language of the notifications that will be sent to the recipient. | | `recipient.business_code` | number | no | Business number of the recipient | | `recipient.email` | string | no | Recipient's phone number | | `recipient.phone` | string | no | The phone number of the recipie | | `recipient.payme_id` | string | no | Optional. MPL can be used in order to attach the payment contract directly to a specific use in the syste m. If that parameter is provided in the payload, there is no need to send in the recipients array the following - business_code phone email | | `payment` | object | yes | The payment details | | `payment.type` | number | yes | Type of action 1 - Send Payment 2 - Payment Request | | `payment.method` | string | yes | Supported payment methods values - 1. funds-transfer 2. credit-card 3. il-direct-debit | | `payment.buyer_key` | string | no | Required in case the payment method isn't funds transfer | | `payment.due_date` | string | yes | The date when the payment will take place Has to be a future date | | `payment.recurring` | object | no | That object should be sent if the payment is recurring | | `payment.recurring.iterations` | number | no | Number of payments | | `payment.recurring.frequency_type` | number | no | The frequency of the payment | ### Request example ```json { "description": "December payment", "amount": 500000, "currency": "ILS", "remote_id": "RAN123", "supply_date": "2021-12-08 00:00:00", "callback_url": "http://www.example.com/callback", "recipient": { "language": "en", "business_code": 51234567, "email": "yarden.cohen@paymeservice.com", "phone": "0500000001" }, "payment": { "type": "1", "method": "funds-transfer", "guarantee_type": 1, "due_date": "2021-11-22 20:00:00", "recurring": { "frequency_type": 4, "iterations": 36 }, "cash_discount_rate": 3.5 }, "services": [ { "name": "Noa Mizrahi", "settings": { "active": false } } ] } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/payment-contracts' \ -H 'Content-Type: application/json' \ -H 'PayMe-Merchant-Key: ' \ --data-raw '{ "description": "December payment", "amount": 500000, "currency": "ILS", "remote_id": "RAN123", "supply_date": "2021-12-08 00:00:00", "callback_url": "http://www.example.com/callback", "recipient": { "language": "en", "business_code": 51234567, "email": "yarden.cohen@paymeservice.com", "phone": "0500000001" }, "payment": { "type": "1", "method": "funds-transfer", "guarantee_type": 1, "due_date": "2021-11-22 20:00:00", "recurring": { "frequency_type": 4, "iterations": 36 }, "cash_discount_rate": 3.5 }, "services": [ { "name": "Noa Mizrahi", "settings": { "active": false } } ] }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/payment-contracts", { method: "POST", headers: { "Content-Type": "application/json", "PayMe-Merchant-Key": "", }, body: JSON.stringify({ "description": "December payment", "amount": 500000, "currency": "ILS", "remote_id": "RAN123", "supply_date": "2021-12-08 00:00:00", "callback_url": "http://www.example.com/callback", "recipient": { "language": "en", "business_code": 51234567, "email": "yarden.cohen@paymeservice.com", "phone": "0500000001" }, "payment": { "type": "1", "method": "funds-transfer", "guarantee_type": 1, "due_date": "2021-11-22 20:00:00", "recurring": { "frequency_type": 4, "iterations": 36 }, "cash_discount_rate": 3.5 }, "services": [ { "name": "Noa Mizrahi", "settings": { "active": false } } ] }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/payment-contracts", headers={ "PayMe-Merchant-Key": "", }, json={ "description": "December payment", "amount": 500000, "currency": "ILS", "remote_id": "RAN123", "supply_date": "2021-12-08 00:00:00", "callback_url": "http://www.example.com/callback", "recipient": { "language": "en", "business_code": 51234567, "email": "yarden.cohen@paymeservice.com", "phone": "0500000001", }, "payment": { "type": "1", "method": "funds-transfer", "guarantee_type": 1, "due_date": "2021-11-22 20:00:00", "recurring": { "frequency_type": 4, "iterations": 36, }, "cash_discount_rate": 3.5, }, "services": [ { "name": "Noa Mizrahi", "settings": { "active": False, }, }, ], }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Merchant-Key: ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 201 — Contract Created Successfully (success) | Field | Type | Description | | --- | --- | --- | | `data` | object | | | `data.id` | number | The ID of the payment | | `data.guid` | string | The payment GUID after being created successfully | | `data.description` | string | | | `data.seller_payme_id` | string | | | `data.remote_id` | string | | | `data.created_date` | string | | | `data.confirmed_by_recipient_date` | string | | | `data.confirmed_by_initiator_date` | string | | | `data.resolution_date` | string | | | `data.status` | number | | | `data.amount` | number | | | `data.currency` | string | | | `data.payme_signature` | string | | | `data.error_code` | string | | | `data.error_note` | string | | | `data.error_text` | string | | | `data.recipient` | object | | | `data.recipient.language` | string | | | `data.recipient.business_code` | number | | | `data.recipient.email` | string | | | `data.recipient.phone` | string | | | `data.payment` | object | | | `data.payment.type` | string | | | `data.payment.method` | string | | | `data.payment.guarantee_type` | number | | | `data.payment.due_date` | string | | | `data.payment.recurring` | object | | | `data.payment.recurring.frequency_type` | number | | | `data.payment.recurring.iterations` | number | | | `status_code` | number | | ```json { "data": { "id": 63, "guid": "CONT1635-760813TL-0HKBYTFM-PWEBJAAV", "description": "December payment", "seller_payme_id": "MPL00002-00002EXM-EXAMPLE0-EXAMPLE2", "remote_id": "RAN123", "created_date": "2021-11-01 12:00:13", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 1, "amount": 500000, "currency": "ILS", "payme_signature": "5dbf1885ce1d4e082757a2cd6086edd1", "error_code": null, "error_note": null, "error_text": null, "recipient": { "language": "en", "business_code": 51234567, "email": "yarden.cohen@paymeservice.com", "phone": "0500000001" }, "payment": { "type": "1", "method": "funds-transfer", "guarantee_type": 1, "due_date": "2021-11-22 20:00:00", "recurring": { "frequency_type": 4, "iterations": 36 } } }, "status_code": 0 } ``` ### 400 — Missing Required Information (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | object | | | `status_additional_info.payment.method` | array | | | `status_error_code` | number | | ```json { "status_code": 1, "status_error_details": "The given data was invalid.", "status_additional_info": { "payment.method": [ "The payment.method field is required." ] }, "status_error_code": 20 } ``` - [Get Recipient](https://docs-staging.payme.io/b2b-payments/contracts/get-api-payment-contracts-recipients-has-matching-balance): GET /payment-contracts/recipients/has-matching-balance — Get Recipient # Get Recipient - Sandbox: `GET https://sandbox.payme.io/api/payment-contracts/recipients/has-matching-balance` - Production: `GET https://live.payme.io/api/payment-contracts/recipients/has-matching-balance` ## Credentials - Header `PayMe-Merchant-Key` (API key) That endpoint will check if the recipient exists in the system, and if the balance in the seller's wallet is >= the contract's amount. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Merchant-Key` | header | string | no | | | `amount` | query | number | yes | Decimal - 2 dots | | `currency` | query | string | yes | | | `email` | query | string | no | | | `business code` | query | string | no | | | `phone` | query | string | no | | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/payment-contracts/recipients/has-matching-balance?amount=¤cy=' \ -H 'PayMe-Merchant-Key: ' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/payment-contracts/recipients/has-matching-balance?amount=¤cy=", { method: "GET", headers: { "PayMe-Merchant-Key": "", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/payment-contracts/recipients/has-matching-balance?amount=¤cy=", headers={ "PayMe-Merchant-Key": "", }, ) print(response.text) ``` ### PHP ```php ¤cy='); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'PayMe-Merchant-Key: ', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses No responses are documented for this endpoint. - [Get All Seller Contracts](https://docs-staging.payme.io/b2b-payments/contracts/get-contracts): GET /payment-contracts — Get All Seller Contracts # Get All Seller Contracts - Sandbox: `GET https://sandbox.payme.io/api/payment-contracts` - Production: `GET https://live.payme.io/api/payment-contracts` ## Credentials - Header `PayMe-Merchant-Key` (API key) Receive all the contract related to a specific seller. An MPL is required in the Headers params of the request. To Get a specific contract data, use the following request for example - /api/payment-contracts/CONT1670-1686408R-GF2QVAYS-xxxxxxxx/ Possible contract statuses - 1 - Initial 3 - Recipient Confirmed & Pending Due Date 4 - Completed 5 - Failed ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Merchant-Key` | header | string | no | [{"key":"PayMe-Merchant-Key","type":"text","value":"MPL00001-00001EXM-EXAMPLE0-EXAMPLE1"}] | | `per_page` | query | number | no | | | `page` | query | number | no | | | `items_order_by_column` | query | string | no | The day the contract was created | | `items_order_by_direction` | query | string | no | | | `due_date_min` | query | string | no | | | `due_date_max` | query | string | no | | | `status` | query | string | no | Get by the contract status | | `payment_type` | query | string | no | Will filter between send payments (type=1), and request payments (type=2) | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/payment-contracts' \ -H 'PayMe-Merchant-Key: ' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/payment-contracts", { method: "GET", headers: { "PayMe-Merchant-Key": "", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/payment-contracts", headers={ "PayMe-Merchant-Key": "", }, ) print(response.text) ``` ### PHP ```php 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'PayMe-Merchant-Key: ', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `items` | array | | | `items[].id` | integer | | | `items[].guid` | string | | | `items[].description` | string | | | `items[].seller_payme_id` | string | | | `items[].remote_id` | string | | | `items[].created_date` | string | | | `items[].confirmed_by_recipient_date` | string | | | `items[].confirmed_by_initiator_date` | string | | | `items[].resolution_date` | string | | | `items[].status` | integer | Contract statuses - 1 - Initial 3 - Confirmed & Pending Due Date 4 - Completed 5 - Failed | | `items[].amount` | integer | | | `items[].currency` | string | | | `items[].payme_signature` | string | | | `items[].error_code` | integer | | | `items[].error_note` | string | | | `items[].error_text` | string | | | `items[].recipient` | object | | | `items[].recipient.name` | string | | | `items[].recipient.business_code` | string | | | `items[].recipient.email` | string | | | `items[].recipient.phone` | string | | | `items[].recipient.language` | string | | | `items[].payment` | object | | | `items[].payment.type` | integer | | | `items[].payment.method` | string | | | `items[].payment.guarantee_type` | integer | | | `items[].payment.due_date` | string | | | `items[].payment.recurring` | object | | | `items[].payment.recurring.frequency_type` | integer | | | `items[].payment.recurring.iterations` | integer | | | `links` | object | | | `links.first` | string | | | `links.last` | string | | | `links.prev` | string | | | `links.next` | string | | | `meta` | object | | | `meta.current_page` | integer | | | `meta.from` | integer | | | `meta.last_page` | integer | | | `meta.links` | array | | | `meta.links[].url` | string | | | `meta.links[].label` | string | | | `meta.links[].active` | boolean | | | `meta.path` | string | | | `meta.per_page` | integer | | | `meta.to` | integer | | | `meta.total` | integer | | ```json { "items": [ { "id": 592, "guid": "CONT1670-1686408R-GF2QVAYS-35ZATDBC", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-12-04 17:44:00", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "b7b086ab17460056af7086f6d6ddd593", "error_code": 11000, "error_note": "a", "error_text": "Recipient Rejected", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user1@example.com", "phone": "0500000001", "language": "en" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2023-12-08 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 521, "guid": "CONT1658-750422H0-ILC1DCBW-7FHMVSLD", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-07-25 15:00:22", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1000, "currency": "ILS", "payme_signature": "aa186124d9f7f1950f91fb1905f2fc14", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": 123456, "email": "EMAIL165-5963250X-UJHSLPQ8-ZBIN5SHW@paymeservice.com", "phone1": "0500000002" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2023-06-23 17:59:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 522, "guid": "CONT1658-750439HQ-HO0X1PIV-VR1HI5HY", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-07-25 15:00:39", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1000, "currency": "ILS", "payme_signature": "2add64b62e6a79cf1927e3b1891c8e3a", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": 123456, "email1": "EMAIL165-5963250X-UJHSLPQ8-ZBIN5SHW@paymeservice.com", "phone1": "0500000002" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2023-06-23 17:59:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 523, "guid": "CONT1658-752039IT-FO96INDY-H9RORG1O", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-07-25 15:27:19", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1000, "currency": "ILS", "payme_signature": "1b879b0bee9b661d43593f274b08fdc8", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": 123456, "email": "EMAIL165-5963250X-UJHSLPQ8-ZBIN5SHW@paymeservice.com", "phone": "0500000002" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2023-06-23 17:59:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 524, "guid": "CONT1658-752054HO-311KV5DJ-38GNDG3N", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-07-25 15:27:34", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1000, "currency": "ILS", "payme_signature": "3a6b4b6a1e10345b375459e2105f161e", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": 123456, "email": "EMAIL165-5963250X-UJHSLPQ8-ZBIN5SHW@paymeservice.com", "phone": "0500000002" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2023-06-23 17:59:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 525, "guid": "CONT1658-752132RV-NZKEI4ZJ-XVQPXRGJ", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-07-25 15:28:52", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1000, "currency": "ILS", "payme_signature": "c542947642ecb79e2278711c24d4d2fc", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": 123456, "email": "EMAIL165-5963250X-UJHSLPQ8-ZBIN5SHW@paymeservice.com", "phone": "0500000002" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2023-06-23 17:59:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 526, "guid": "CONT1658-7603066K-ESQM0ODA-VYJGD8M0", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-07-25 17:45:06", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1000, "currency": "ILS", "payme_signature": "46c164f698b137875ee8dfb5d67c6218", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": 123456, "email": "EMAIL165-5963250X-UJHSLPQ8-ZBIN5SHW@paymeservice.com", "phone": "+9720546545945" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2023-06-23 17:59:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 578, "guid": "CONT1667-1475022U-DVAOG3YQ-V0DRQFCH", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-10-30 18:31:42", "confirmed_by_recipient_date": "2022-10-30 18:32:07", "confirmed_by_initiator_date": null, "resolution_date": null, "status": 3, "amount": 1000, "currency": "ILS", "payme_signature": "1c35596ca03caa0f8502aad217bfba91", "error_code": null, "error_note": null, "error_text": null, "recipient": { "language": "en", "business_code": 123456, "email": "user2@example.com", "phone": "0500000003" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2023-06-23 17:59:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 455, "guid": "CONT1649-079094ML-8M6J6L4H-NWDEQSJF", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 16:31:34", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1000, "currency": "ILS", "payme_signature": "1430a5560dc3e68ecdb0a24a33614697", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": 1234567, "email": "yarden.cohen@paymeservice.com", "phone": "0500000001" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2023-02-14 15:57:59", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 456, "guid": "CONT1649-079457XG-XNZHTMV3-M0SRR6IW", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 16:37:37", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1000, "currency": "ILS", "payme_signature": "9fd68f793888c4ae3da0a99906985858", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": 1234567, "email": "yarden.cohen@paymeservice.com", "phone": "0500000001" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2023-02-14 15:57:59", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 462, "guid": "CONT1649-2435750Y-AFYI3OW6-VNKA2TKQ", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-06 14:12:55", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1000, "currency": "ILS", "payme_signature": "755a4839ac445e99045c957a56f8c136", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": 1234567, "email": "yarden.cohen@paymeservice.com", "phone": "0500000001" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2023-02-14 15:57:59", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 1142, "guid": "CONT1672-835671XE-UJWIJW5H-HO9UEYRL", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2023-01-04 14:34:31", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "8caa05d3e4162933d942d2ac2085cb0d", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "John Smith", "business_code": 12333, "email": "user1@example.com", "phone": "0500000004", "language": "he" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2023-01-05 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 1139, "guid": "CONT1672-735624U4-F1VRZ7NP-ZVIKTOUV", "description": "Test Payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2023-01-03 10:47:04", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "7cfb9e3b7f00ff9c8f8556c922516d12", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123432840923, "email": "user3@example.com", "phone": "0500000001", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2023-01-04 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 596, "guid": "CONT1670-8621922L-GA6R7JVK-CSNI8PPK", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-12-12 18:23:12", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "a626d69bb4b38492a6677f1b2b5d9c79", "error_code": 11001, "error_note": "Kaka", "error_text": "Initiator Canceled", "recipient": { "name": "Dana Cohen", "business_code": 234, "email": "user4@example.com", "phone": "0500000001", "language": "he" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-12-16 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 597, "guid": "CONT1670-863040PP-7KG14S6O-MLSEVPJL", "description": "Test Payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-12-12 18:37:20", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "48810e00cacad35325a59f8d4b67f0b3", "error_code": 11001, "error_note": "סתם ככככהההההההה", "error_text": "Initiator Canceled", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user5@example.com", "phone": "0500000005", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-12-16 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 598, "guid": "CONT1670-921617SV-SR4GEPEC-OHGQMMFO", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-12-13 10:53:37", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "802b5d003657d5b8b45f0f1ef4ce22be", "error_code": 11001, "error_note": "לא באלי", "error_text": "Initiator Canceled", "recipient": { "name": "Dana Cohen", "business_code": 234, "email": "user6@example.com", "phone": "0500000006", "language": "he" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-12-16 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 590, "guid": "CONT1669-209954IQ-7U2MZDNR-FO1SBZ8E", "description": "מספר חשבונית 4072", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "Invoice-factoring-1", "created_date": "2022-11-23 15:25:54", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 315900, "currency": "ILS", "payme_signature": "7a8fd0f507f551b2a6b684a67ca5bacb", "error_code": 11001, "error_note": "lo ba li", "error_text": "Initiator Canceled", "recipient": { "language": "he", "business_code": 558253522, "email": "user7@example.com", "phone": "0500000007" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-11-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 591, "guid": "CONT1669-210589SC-OYAY75WG-M6ZTSCC9", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-11-23 15:36:29", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "44b9b983a68bd5db6d045ce719a6dd0d", "error_code": 11001, "error_note": null, "error_text": "Initiator Canceled", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user8@example.com", "phone": "0500000007", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-11-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 585, "guid": "CONT1667-2264046Q-HUMA1HGX-3OLIUIJM", "description": "Yuval Hageverr", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-10-31 16:26:44", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "e8aba94843fd7ec2c05c75d9f17bb809", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Avi Levi", "business_code": 123123, "email": "yuval.shapira@payme.io", "phone": "0500000008", "language": "he" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-11-14 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 566, "guid": "CONT1666-785186BX-9TU6QXUN-ALXBMWJI", "description": "עבור חשבונית מס 5772", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-10-26 14:53:06", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "9522693e8ca59f9090f6889f76c7c9d2", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Noa Mizrahi", "business_code": 123123, "email": "yarden.cohen@payme.io", "phone": "0500000001", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-10-31 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 567, "guid": "CONT1666-872685NB-MOHVLXNR-KT9KTRUC", "description": "Art", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-10-27 15:11:25", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "08d226079de9f1a61b7bafd1d2392118", "error_code": 11000, "error_note": "rertfyjghij;okl'[p\n]ikopl';", "error_text": "Recipient Rejected", "recipient": { "name": "Eli Katz", "business_code": 1233, "email": "julia.novosilska@payme.io", "phone": "0500000009", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-10-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 568, "guid": "CONT1666-8727574H-LLHETTDJ-EHPD5XOU", "description": "Art", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-10-27 15:12:37", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "aa32cd813b59a4e870bff362603768aa", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Eli Katz", "business_code": 1233, "email": "julia.novosilska@payme.io", "phone": "0500000010", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-10-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 562, "guid": "CONT1666-162999FZ-RR4BGH2N-0CCMUGQL", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-10-19 10:03:19", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1234, "currency": "ILS", "payme_signature": "b272dfb7ffede773b15e3dfaa6cc71b5", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": 654321, "email": "offer.peylan@paymeservice.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-10-19 11:09:59", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 513, "guid": "CONT1652-960436MB-RRF9ZBP2-9INAF4TA", "description": "fdsfs", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-05-19 14:40:36", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "018cb93dc192dc7b2fa82cd349d0a0a2", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user9@example.com", "phone": "0500000001", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-05-20 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 433, "guid": "CONT1648-538994RI-1SUKFRME-IWFT9R6C", "description": "Test", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-03-29 10:29:54", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "1cb9be4b265617a2631b4f2c9327c60a", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Maya Bar", "business_code": 123456, "email": "user1@example.com", "phone": "0500000011", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-05-01 09:00:00", "recurring": { "frequency_type": 2, "iterations": 1 } } }, { "id": 434, "guid": "CONT1648-539355KW-CDWDPWZF-LBXWOGFO", "description": "Test Payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-03-29 10:35:55", "confirmed_by_recipient_date": "2022-03-29 10:36:42", "confirmed_by_initiator_date": "2022-03-29 10:38:18", "resolution_date": null, "status": 4, "amount": 12300, "currency": "ILS", "payme_signature": "81ff58560240370b2595b8e713c07dbd", "error_code": null, "error_note": null, "error_text": null, "recipient": { "name": "Maya Bar", "business_code": 123456, "email": "user1@example.com", "phone": "0500000011", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-05-01 09:00:00", "recurring": { "frequency_type": 3, "iterations": 1 } } }, { "id": 435, "guid": "CONT1648-5425145J-8RJ2HIMW-Y4XIPBFM", "description": "Test Payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-03-29 11:28:34", "confirmed_by_recipient_date": "2022-03-29 11:31:27", "confirmed_by_initiator_date": "2022-03-29 11:33:04", "resolution_date": null, "status": 4, "amount": 12300, "currency": "ILS", "payme_signature": "a678ded41f6f7b92c9f50207322fafec", "error_code": null, "error_note": null, "error_text": null, "recipient": { "name": "Tom Gil", "business_code": 123456, "email": "user1@example.com", "phone": "0500000011", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-05-01 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 436, "guid": "CONT1648-542626FU-CLFLYZYL-FSAF8FB9", "description": "Test Payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-03-29 11:30:26", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "c0e0e52635206f4cc39dcf66b592a777", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Tom Gil", "business_code": 123456, "email": "user1@example.com", "phone": "0500000011", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-05-01 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 504, "guid": "CONT1650-459667Z7-RGNUUFQS-K4UYRWPE", "description": "test", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-04-20 16:01:07", "confirmed_by_recipient_date": "2022-04-20 16:02:19", "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1000, "currency": "ILS", "payme_signature": "8089d663006641d4bbc97d9782327bba", "error_code": 11004, "error_note": "Insufficient funds", "error_text": "Payment Processing Failure", "recipient": { "name": "Jane Doe", "business_code": 123456, "email": "user1@example.com", "phone": "0500000011", "language": "he" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-04-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 461, "guid": "CONT1649-1376583U-OHGYVQXW-JHTEUKF4", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "EXCEL_INTEGRATION", "created_date": "2022-04-05 08:47:38", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 132098, "currency": "ILS", "payme_signature": "415b6e8a68c9ec98027afbc4d2a4b334", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "51512345", "email": "yelatir908@procowork.com", "phone": "0500000012" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-30 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 464, "guid": "CONT1649-318335QR-N78VAWJJ-EMABPVEM", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "EXCEL_INTEGRATION", "created_date": "2022-04-07 10:58:55", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 132098, "currency": "ILS", "payme_signature": "338c72e92c0d8ffd45a52ceae091fb78", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "51512345", "email": "yelatir908@procowork.com", "phone": "0500000012" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-30 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 465, "guid": "CONT1649-318335XI-0K8D9P00-WMMDYEYH", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "EXCEL_INTEGRATION", "created_date": "2022-04-07 10:58:55", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 132098, "currency": "ILS", "payme_signature": "64034ebf0f4cc3df08b29f2b6b81b2b5", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "51512345", "email": "yelatir908@procowork.com", "phone": "0500000012" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-30 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 488, "guid": "CONT1649-75001512-ZWSBFGYD-EFH536A5", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "EXCEL_INTEGRATION", "created_date": "2022-04-12 10:53:35", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 132098, "currency": "ILS", "payme_signature": "6dc5452df11e8e5090272aafafee41af", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "51512345", "email": "yelatir908@procowork.com", "phone": "0500000012" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-30 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 495, "guid": "CONT1650-188329AZ-CSVK6ISL-PCXJMVMN", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-04-17 12:38:49", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1000, "currency": "ILS", "payme_signature": "fa3e0a7bf446d9b96866f8d7b95cf5dd", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Dana Cohen", "business_code": 123, "email": "user1@example.com", "phone": "0500000013", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-04-25 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 440, "guid": "CONT1648-730976KO-N3GCFMML-QDGZHDS2", "description": "dsa", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-03-31 15:49:36", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "b51108c20bd87e9079b8ad568ac5021f", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "John Smith", "business_code": 123, "email": "user1@example.com", "phone": "0500000001", "language": "he" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-04-24 09:00:00", "recurring": { "frequency_type": 2, "iterations": 16 } } }, { "id": 496, "guid": "CONT1650-188369AO-Q4M2XYVC-TAF4YIKK", "description": "תשלום תקופתי", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-04-17 12:39:29", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1000, "currency": "ILS", "payme_signature": "adfc22028c3030ac705969e183142dbd", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user10@example.com", "phone": "0500000014", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-04-18 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 490, "guid": "CONT1649-833544GF-QUIP3B1U-WWR2IZ07", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "EXCEL_INTEGRATION", "created_date": "2022-04-13 10:05:44", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 132098, "currency": "ILS", "payme_signature": "11550837f90f28b4eb1303856fa9465e", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "51512346", "email": "tihan33641@aikusy.com", "phone": "0500000012" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-14 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 491, "guid": "CONT1649-833893XY-RYURFLEC-TZ3M2VO1", "description": "subscription fee", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "EXCEL_INTEGRATION", "created_date": "2022-04-13 10:11:33", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 132098, "currency": "ILS", "payme_signature": "cd4972d7b6a007f5021df7214244fbf6", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "51512346", "email": "tihan33641@aikusy.com", "phone": "0500000012" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-14 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 492, "guid": "CONT1649-834084RA-OP6OGV0A-8ISZPVV6", "description": "subscription fee", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "EXCEL_INTEGRATION", "created_date": "2022-04-13 10:14:44", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 132098, "currency": "ILS", "payme_signature": "6e9ca178913d1343fd1cf1673889e93b", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "51512346", "email": "tihan33641@aikusy.com", "phone": "0500000012" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-14 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 493, "guid": "CONT1649-83424765-UT7RLX6Z-SJEGPIW1", "description": "subscription fee", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "EXCEL_INTEGRATION", "created_date": "2022-04-13 10:17:27", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 132098, "currency": "ILS", "payme_signature": "6eec1b70cec47fa94841d0ad2e43bb7e", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "51512346", "email": "wijon66125@bamibi.com", "phone": "0500000012" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-14 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 489, "guid": "CONT1649-777020IN-90S7HEK4-OIWY3N8X", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-04-12 18:23:40", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 123, "currency": "ILS", "payme_signature": "952adf1cb3a65d73762315c3d2315fab", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user1@example.com", "phone": "0500000001", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-04-13 09:00:00", "recurring": { "frequency_type": 2, "iterations": 2 } } }, { "id": 442, "guid": "CONT1649-06549228-JG4UMQA3-IDSAMSFF", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 12:44:52", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1234, "currency": "ILS", "payme_signature": "177822c32150bff25c57470c0bcd8a78", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": 654321, "email": "offer.peylan@paymeservice.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-06 09:09:59", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 450, "guid": "CONT1649-072562L5-HQJDWPWA-GZXFKRZK", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 14:42:42", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "699accae661912c3607548894029baa1", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "132321", "email": "yelatir908@procowork.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-06 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 451, "guid": "CONT1649-072565TO-VWXZSACD-QZ3VIRO1", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 14:42:45", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "aa6d38038e3a382d2ff73cfe96edbff7", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "132321", "email": "yelatir908@procowork.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-06 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 452, "guid": "CONT1649-0725659H-088IZPYV-SMAVXY1N", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 14:42:45", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "87fd652cc69e7c7d7cbb7a8900bd3066", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "132321", "email": "yelatir908@procowork.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-06 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 453, "guid": "CONT1649-072566D4-3X9ZYZIT-EJTQI54N", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 14:42:46", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "9f906ffb1cadc9134be6216f2c0fdd4a", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "132321", "email": "yelatir908@procowork.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-06 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 454, "guid": "CONT1649-072567XS-LBSYD6TL-IYRTHEGU", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 14:42:47", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "052aaf789c99ca56f045b34f0665a3c2", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "132321", "email": "yelatir908@procowork.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-06 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 443, "guid": "CONT1649-065640EV-GBZTUMIB-WXQKDN4D", "description": "Decemberpayment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 12:47:20", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "77f2e4357dbb25ccb36ddb30a178edba", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "132321", "email": "yelatir908@procowork.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-05 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 444, "guid": "CONT1649-0718036W-5VE92JD0-BPNZ3XBN", "description": "Decemberpayment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 14:30:03", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "f3b54b9327e55cad901a389981c6ec74", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "132321", "email": "yelatir908@procowork.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-05 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 445, "guid": "CONT1649-072012AA-2J2WA3YC-GRTYZO9W", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 14:33:32", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "d0f3838bfbb3fb86cdb1a23052e7c942", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "132321", "email": "yelatir908@procowork.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-05 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 446, "guid": "CONT1649-072093UK-N9QU4YFV-AJIZSAK5", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 14:34:53", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "74a0664bd35fc7f9819e71f29822c802", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "132321", "email": "yelatir908@procowork.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-05 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 447, "guid": "CONT1649-072215VR-8MQ1PJXM-LEN4XDWE", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 14:36:55", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "491cfd001fcdc559c3e522246b5849f0", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "132321", "email": "yelatir908@procowork.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-05 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 448, "guid": "CONT1649-072284YJ-LSWCJGMT-KRFUWDEL", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 14:38:04", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "9b4d64f797024ffe10a5d7b24f78f7d6", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "132321", "email": "yelatir908@procowork.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-05 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 449, "guid": "CONT1649-072441SK-KR9PWMBP-MKGVPSJ1", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 14:40:41", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "cc85571129d7a573dff2244ea57c4403", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "132321", "email": "yelatir908@procowork.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-05 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 459, "guid": "CONT1649-083563QD-ET4PMC7E-VTNOUT8J", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 17:46:03", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 132098, "currency": "ILS", "payme_signature": "166feeb3f962f760b689474d2dddf85b", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "51512345", "email": "yelatir908@procowork.com", "phone": "0500000012" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-05 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 460, "guid": "CONT1649-083564IF-7AWMPWPS-5DX58SVX", "description": "Your monthly income", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-04 17:46:04", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 132098, "currency": "ILS", "payme_signature": "23ff0cb869ec2e459fc08bd55b24b03e", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": "51512345", "email": "yelatir908@procowork.com", "phone": "0500000012" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-05 00:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 441, "guid": "CONT1648-991234KY-BHU1RCE8-GIFK6XSO", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2022-04-03 16:07:14", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1234, "currency": "ILS", "payme_signature": "67d5540e109bcb31431f66790baac9ae", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "en", "business_code": 654321, "email": "offer.peylan@paymeservice.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2022-04-04 09:09:59", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 430, "guid": "CONT1648-384254JZ-M10G16AL-KFUPMJ0L", "description": "Test", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-03-27 15:30:54", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "4c0cc3c9d295b265622c4df23e185c29", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Dana Cohen", "business_code": 123123, "email": "tonolo2500@jo6s.com", "phone": "0500000015", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-04-01 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 438, "guid": "CONT1648-657964GM-7DR3ZDNM-XJVENLMF", "description": "test", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-03-30 19:32:44", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 50000, "currency": "ILS", "payme_signature": "935323741d2a3ba89726d44165e32bb5", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Avi Levi", "business_code": 123123, "email": "user11@example.com", "phone": "0500000016", "language": "he" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-03-31 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 439, "guid": "CONT1648-658173UD-G2PTSURG-8REG0PZF", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-03-30 19:36:13", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "1ae280160b060d311f7d7356a8108e77", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user1@example.com", "phone": "0500000017", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-03-31 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 428, "guid": "CONT1648-0314218G-PLLL2EUG-C7DBXXDQ", "description": "asd", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-03-23 12:30:21", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "27dc4e045bd700e3648337f478154cf6", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Noa Mizrahi", "business_code": 123, "email": "user1@example.com", "phone": "0500000001", "language": "he" }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-03-28 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 423, "guid": "CONT1647-7851323N-T6BIPWQR-KQX6Y7VD", "description": "עבור חשבונית מס 5772", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-03-20 16:05:32", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "f8e087efccab5bb778cc87d2e2743e39", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Eli Katz", "business_code": 123, "email": "yarden.cohen@paymeservice.com", "phone": "0500000015", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-03-21 09:00:00", "recurring": { "frequency_type": 2, "iterations": 3 } } }, { "id": 420, "guid": "CONT1647-431542BC-QBG9HPQZ-81PRTRLG", "description": "תשלום תקופתי", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-03-16 13:52:22", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "8fe4ca1f8ebbb79e988dc179eeb72cfd", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user12@example.com", "phone": "0500000018", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-03-17 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 419, "guid": "CONT1646-838140KU-EQSAKCSA-BL9BQFNN", "description": "fdsf", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-03-09 17:02:20", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "USD", "payme_signature": "d85c484c03a24d59d07848323497309f", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user1@example.com", "phone": "0500000001", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-03-10 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 416, "guid": "CONT1645-534522RZ-VXNIDILB-UGOHDCOT", "description": "Eliran soft hands", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-02-22 14:55:22", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 242300, "currency": "ILS", "payme_signature": "daab6ee93f1f02231b5a7e070a908efd", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "eliran@payme.io", "phone": "0500000019", "language": "he" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-02-23 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 409, "guid": "CONT1645-0318109U-ZAN6BGU7-6MLHWMIV", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-02-16 19:16:50", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "7ce9c8f956732dc0d0c4fd2c07c12954", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "idan.abraham@paymeservice.com", "phone": "0500000001", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-02-17 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 396, "guid": "CONT1641-9156548Y-JOFYLTLF-ISQAMJTR", "description": "שירותי אינטרנט", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2022-01-11 17:40:54", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 50000000, "currency": "ILS", "payme_signature": "44aa5e60c2934a1f7bdc8223f8610d2b", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Maya Bar", "business_code": 12312312, "email": "david.kanitler@paymeservice.com", "phone": "0500000020", "language": "he" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2022-01-31 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 303, "guid": "CONT1639-398568PR-WONWZ6UF-RXMYXKSU", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-12-13 14:29:28", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "ba6b9f7029e7df8f56ed0763080a1c1f", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 1, "email": "user1@example.com", "phone": "0500000001", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-12-21 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 301, "guid": "CONT1639-3852843Q-CTHEWCZM-EY35BP8P", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-12-13 10:48:04", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "ab80aac4d7832fcfea571edde46ffb48", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user1@example.com", "phone": "0500000001", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-12-15 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 302, "guid": "CONT1639-387476UI-9MWQWNO5-TDYXUVCY", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-12-13 11:24:36", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "83b3a1df7bc21095ffb41947f8b99686", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user1@example.com", "phone": "0500000001", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-12-14 09:00:00", "recurring": { "frequency_type": 2, "iterations": 1 } } }, { "id": 271, "guid": "CONT1636-977229GC-1FH8UH8O-XGTW6IOR", "description": "תשלום תקופתי", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-11-15 13:53:49", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "6299a93c78f04db7f6183a01cfc94b7b", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user1@example.com", "phone": "0500000021", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-11-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 272, "guid": "CONT1636-977305WZ-GB0VD6NS-D66F4UJB", "description": "עבור חשבונית מס 5772", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-11-15 13:55:05", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 23400, "currency": "ILS", "payme_signature": "7c694dfa195b2998ed16d78b4c125120", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 234, "email": "user1@example.com", "phone": "0500000022", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-11-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 224, "guid": "CONT1635-849049GP-DG1P6PHH-6XYKEOP1", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-11-02 12:30:49", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "EUR", "payme_signature": "a944487132e0d4bc7b8b5343f2aecaa1", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Noa Mizrahi", "business_code": 123, "email": "user1@example.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-11-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 239, "guid": "CONT1636-2874002W-TOIAVEPP-ACZPFBOJ", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-11-07 14:16:40", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "1e73587ab0a190bba6f5f1819e8c64b3", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Tom Gil", "business_code": 234, "email": "user1@example.com", "phone": "0500000001", "language": "he" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-11-30 09:00:00", "recurring": { "frequency_type": 2, "iterations": 3 } } }, { "id": 241, "guid": "CONT1636-288796LG-YXV5LNYC-9O1YALDL", "description": "תשלום תקופתי", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-11-07 14:39:56", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "12213026476e851553a0ea2326dff4fd", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 516438207, "email": "adam.kima@paymeservice.com", "phone": "0500000023", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-11-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 249, "guid": "CONT1636-366691EF-WHNOHRUG-KIABF3I3", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-11-08 12:18:11", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "d3d6219ae16dbbfa4723967b92cab181", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 234, "email": "user1@example.com", "phone": "0500000001", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-11-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 244, "guid": "CONT1636-289616X8-KZSBPNRB-3WK59932", "description": "תשלום תקופתי", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-11-07 14:53:36", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "cecf4a9a4fd1418231e0c51eb331d00c", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123456, "email": "user1@example.com", "phone": "0500000001", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-11-10 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 240, "guid": "CONT1636-288511AA-PJAGLLXI-VIMJIFLU", "description": "עבור חשבונית מס 5772", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-11-07 14:35:11", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "990e76ad9fd519265e5ad16a3455b51c", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "John Smith", "business_code": 12345678, "email": "shuki.shua@icc.co.il", "phone": "0500000024", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-11-09 09:00:00", "recurring": { "frequency_type": 3, "iterations": 4 } } }, { "id": 243, "guid": "CONT1636-2892304W-VBWFEARH-43SIKRQZ", "description": "תשלום תקופתי", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-11-07 14:47:10", "confirmed_by_recipient_date": "2021-11-08 16:50:23", "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "530e43b98d283f2901a45c1bb4842a4b", "error_code": 11003, "error_note": "Initiator Confirmation Timeout", "error_text": "Initiator Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 516438207, "email": "Adam.kima@paymeservice.com", "phone": "0500000025", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-11-09 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 242, "guid": "CONT1636-2889978G-95R4VRLD-7P8COOOK", "description": "תשלום תקופתי", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-11-07 14:43:17", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "8fd68f9e4f6503518e0ca0a36747e302", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 516438207, "email": "adam.kima@paymeservice.com", "phone": "0500000025", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-11-08 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 245, "guid": "CONT1636-290287DC-4LS42MDE-9HQHCRWJ", "description": "תשלום תקופתי", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-11-07 15:04:47", "confirmed_by_recipient_date": "2021-11-07 15:09:07", "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "657751a86f5307d0c597d7a88042dc6f", "error_code": 11003, "error_note": "Initiator Confirmation Timeout", "error_text": "Initiator Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 516438207, "email": "Adam.kima@paymeservice.com", "phone": "0500000025", "language": "en" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-11-08 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 223, "guid": "CONT1635-848937XM-YHF4KFIT-ECFUGEOH", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-11-02 12:28:57", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "cf05cdae40570602a2a0598835e7cbc9", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Dana Cohen", "business_code": 123, "email": "user1@example.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-11-03 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 90, "guid": "CONT1630-502590KB-UQWKKMXW-OJUTO8RO", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-01 16:23:10", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "EUR", "payme_signature": "fde8f08861b08744cb26b3caadea9934", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 132, "email": "user13@example.com", "phone": "0500000026" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-10-31 09:00:00", "recurring": { "frequency_type": 2, "iterations": 4 } } }, { "id": 109, "guid": "CONT1632-992703WU-PMAXITMD-DY3Y5SJ8", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-30 12:05:03", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "958486dab1b4c68090bdf5fa38c1c099", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123123, "email": "user1@example.com", "phone": "0500000006" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-10-31 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 198, "guid": "CONT1635-147762GS-5DP6MMHK-WUYMAUAO", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-10-25 10:42:42", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 13400, "currency": "ILS", "payme_signature": "23317085effd9a301ff5ff626590a189", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user1@example.com", "phone": "0500000027" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-10-31 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 197, "guid": "CONT1635-147576X3-XKITYPJR-F93B01EW", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-10-25 10:39:36", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 15700, "currency": "ILS", "payme_signature": "59630e16db5cd7418e5d70cfe47c2cbc", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Avi Levi", "business_code": 12345, "email": "yarden.cohen@paymeservice.com", "phone": "0500000017" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-10-27 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 199, "guid": "CONT1635-147912IN-JUEMBGW5-XJIDRODQ", "description": "בדיקה", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-10-25 10:45:12", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "46c40ac20342dd28254f5514b20ee811", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "idan.abraham@paymeservice.com", "phone": "+97246454545" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-10-26 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 89, "guid": "CONT1630-502415JF-RYSFTTA0-4XKHNZ3L", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-01 16:20:15", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "01f5366a4133e1a610a7cbf89daedab7", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123123, "email": "user14@example.com", "phone": "0500000028" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-10-01 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 85, "guid": "CONT1630-495302GP-CSVWR116-LDTLUAYG", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-01 14:21:42", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "11ff05ac278dc1f4779437e6cc7b5bc9", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Noa Mizrahi", "business_code": 1, "email": "user15@example.com", "phone": "0500000022" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-09-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 93, "guid": "CONT1630-5893448L-CI8UVGD4-NOJRQY2Y", "description": "בדיקה", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-02 16:29:04", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "4241528f39841b1d2472168f9864ccb3", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Eli Katz", "business_code": 123123123, "email": "david.kanitler@paymeservice.com", "phone": "0500000022" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-09-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 95, "guid": "CONT1631-458505GH-5QBVSY3Y-POASMS0R", "description": "Test", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-12 17:55:05", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 99900, "currency": "ILS", "payme_signature": "276836471d11604adab5052a2b0b2b53", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Maya Bar", "business_code": 123456, "email": "amit.rosenberg@paymeservice.com", "phone": "0500000019" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-09-30 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 84, "guid": "CONT1630-495137VA-V4ZRAWLR-OENXDRVW", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-01 14:18:57", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 25400, "currency": "ILS", "payme_signature": "945e193092989d484adf7eb227d8750f", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123123213, "email": "yardenco@mail.com", "phone": "0500000029" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-09-29 21:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 104, "guid": "CONT1632-673978FL-WK3BLRGR-IJ0RYJSY", "description": "December payment", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": "RAN123", "created_date": "2021-09-26 19:32:58", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 500000, "currency": "ILS", "payme_signature": "759646a4ef1dd6e0e41e5b3deb179da3", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "language": "he", "business_code": 123456, "email": "yarden.cohen@paymeservice.com", "phone": "0500000001", "bank_account": { "code": "10", "branch": "942", "number": "26280232" } }, "payment": { "type": 2, "method": "funds-transfer", "guarantee_type": 1, "due_date": "2021-09-27 20:00:00", "recurring": { "frequency_type": 4, "iterations": 36 } } }, { "id": 100, "guid": "CONT1632-654043ZQ-GKELFRKN-OGDSTPFT", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-26 14:00:43", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1200, "currency": "ILS", "payme_signature": "5804a155e2d407bdccf68281df9ba160", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123456, "email": "user1@example.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-09-27 09:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 98, "guid": "CONT1632-3011643J-WSY5WRHK-PZFVVYRQ", "description": "**זה אמור להופיע בתיאור**", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-22 11:59:24", "confirmed_by_recipient_date": "2021-09-22 12:01:45", "confirmed_by_initiator_date": "2021-09-22 12:03:57", "resolution_date": null, "status": 4, "amount": 38037, "currency": "ILS", "payme_signature": "0759c05ed79fb1cd0c754e3ea39d632a", "error_code": null, "error_note": null, "error_text": null, "recipient": { "name": "Tom Gil", "business_code": 301369856, "email": "user1@example.com", "phone": "0500000011" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-09-22 13:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 97, "guid": "CONT1632-047865X8-IOMCB0OU-QHLZK61E", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-19 13:37:45", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "9ba6c9022b02023dbe5df2fbfd7180f3", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123, "email": "user1@example.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-09-20 09:00:00", "recurring": { "frequency_type": 2, "iterations": 1 } } }, { "id": 94, "guid": "CONT1631-43171857-YSMBVKOZ-EPE1PGEL", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-12 10:28:38", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "f4ff878e4f13f2967e569c32b1fdc5d7", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123456, "email": "user1@example.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-09-13 09:00:00", "recurring": { "frequency_type": 2, "iterations": 2 } } }, { "id": 83, "guid": "CONT1630-495019E3-NFDA9JIW-HTEUG3AO", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-01 14:16:59", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 10000, "currency": "ILS", "payme_signature": "c36fb34df8d4d1597fe1be88b63127c2", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123123123, "email": "user16@example.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-09-02 11:16:34", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 34, "guid": "CONT1628-670757J4-UIVW4FUI-XCIPS42L", "description": "gs==", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-08-11 11:32:37", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "f9f02b40c90a51a475b8614fca094c06", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123123123, "email": "yarden@g.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-08-31 08:30:27", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 38, "guid": "CONT1629-0175967F-HCA4PESE-M5L6PDWP", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-08-15 11:53:16", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "108b0ed14be866e5917730b35287c484", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 23, "email": "user1@example.com", "phone": "0500000022" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-08-30 21:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 39, "guid": "CONT1629-035555NI-7EVKWR7W-XF9OTCZE", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-08-15 16:52:35", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "8649a2b94c43c47805416319bc8feac7", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123123, "email": "user1@example.com", "phone": "0500000030" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-08-30 21:00:00", "recurring": { "frequency_type": 2, "iterations": 1 } } }, { "id": 40, "guid": "CONT1629-0356221J-VWKOWYAT-F9GJVIM5", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-08-15 16:53:42", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "fe80e2bd9c6de557056b9077ced8363b", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123456, "email": "user1@example.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-08-30 21:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 41, "guid": "CONT1629-036341EY-XCU5OCA8-EEXTJBGB", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-08-15 17:05:41", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 66600, "currency": "ILS", "payme_signature": "129ee4ebda233e56e11c25296d641094", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123123, "email": "user17@example.com", "phone": "0500000019" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-08-30 21:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 77, "guid": "CONT1630-224953IV-WWIIY8RE-RKKH1LDK", "description": "דגן", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-08-29 11:15:53", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 15000, "currency": "ILS", "payme_signature": "0ad2bcfda1909a474beee9a000531b74", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "John Smith", "business_code": 1231231, "email": "user1@example.com", "phone": "0500000031" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-08-30 21:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 78, "guid": "CONT1630-241575WT-XAKAXCKC-UG7MU1K8", "description": "check", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-08-29 15:52:55", "confirmed_by_recipient_date": "2021-08-29 15:55:24", "confirmed_by_initiator_date": "2021-08-29 15:56:17", "resolution_date": null, "status": 5, "amount": 15000, "currency": "ILS", "payme_signature": "1f50cadb46fb77be507ea990770ec9a5", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 123123123, "email": "adam.kima@paymeservice.com", "phone": "0500000032" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-08-30 21:00:00", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 79, "guid": "CONT1630-243804NT-GEYYESGA-WQY7FHVA", "description": "בדיקה", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-08-29 16:30:04", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 19389, "currency": "ILS", "payme_signature": "b7042df9e1a1d1e354b679f1825aa808", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 1232343, "email": "adam.kima@paymeservice.com", "phone": "0500000033" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-08-30 12:58:36", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 47, "guid": "CONT1629-369361OI-5HLIVSDO-9YOAA1IX", "description": "Fishes", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-08-19 13:36:01", "confirmed_by_recipient_date": "2021-08-19 13:42:38", "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 2000, "currency": "USD", "payme_signature": "14bcd834550b3882d26e4b90cb891aea", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Dana Cohen", "business_code": 123123, "email": "ohad@paymeservice.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-08-20 10:34:01", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 46, "guid": "CONT1629-2947017O-GRJQY8SF-UI0TZLMH", "description": "123", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-08-18 16:51:41", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 12300, "currency": "ILS", "payme_signature": "35b20e2fddaa96e05ed3f2ca8d8ff359", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Tom Gil", "business_code": 234, "email": "yarden@g.com", "phone": "0500000006" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-08-19 13:47:26", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 42, "guid": "CONT1629-127246TU-UTR6A2XJ-XATYY37E", "description": "בדיקה 150 שח", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-08-16 18:20:46", "confirmed_by_recipient_date": "2021-08-16 18:22:39", "confirmed_by_initiator_date": "2021-08-16 18:25:57", "resolution_date": null, "status": 5, "amount": 15000, "currency": "ILS", "payme_signature": "febbefa8f5e136e11164a0bdd1067d85", "error_code": null, "error_note": null, "error_text": null, "recipient": { "name": "Tom Gil", "business_code": 301369856, "email": "shir.ben.mordehay@paymeservice.com", "phone": "0500000011" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-08-18 18:00:36", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 31, "guid": "CONT1628-602258LW-XEYGDE9Y-71CTHKXA", "description": "tryrt 546", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-08-10 16:30:58", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 100000, "currency": "ILS", "payme_signature": "00c46e2857dfa3539c7bd3bcd87470a3", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Jane Doe", "business_code": 316112838, "email": "yarden.cohen@paymeservice.com", "phone": "0500000001" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "2021-08-11 13:28:21", "recurring": { "frequency_type": null, "iterations": null } } }, { "id": 99, "guid": "CONT1632-3094333R-GU6WF6XS-UCYRTWMX", "description": "test", "seller_payme_id": "MPL90013-90013EXM-EXAMPLE0-EXAMPLE9", "remote_id": null, "created_date": "2021-09-22 14:17:13", "confirmed_by_recipient_date": null, "confirmed_by_initiator_date": null, "resolution_date": null, "status": 5, "amount": 1200, "currency": "ILS", "payme_signature": "d364b6aa7fa5559d45a131bc9469b36a", "error_code": 11002, "error_note": "Recipient Confirmation Timeout", "error_text": "Recipient Confirmation Timeout", "recipient": { "name": "Avi Levi", "business_code": 12, "email": "test@test.com", "phone": "0500000034" }, "payment": { "type": 1, "method": "funds-transfer", "guarantee_type": 0, "due_date": "-0001-11-30 00:00:00", "recurring": { "frequency_type": 2, "iterations": 1 } } } ], "links": { "first": "https://sandbox.payme.io/api/payment-contracts?page=1", "last": "https://sandbox.payme.io/api/payment-contracts?page=1", "prev": null, "next": null }, "meta": { "current_page": 1, "from": 1, "last_page": 1, "links": [ { "url": null, "label": "« Previous", "active": false }, { "url": "https://sandbox.payme.io/api/payment-contracts?page=1", "label": "1", "active": true }, { "url": null, "label": "Next »", "active": false } ], "path": "https://sandbox.payme.io/api/payment-contracts", "per_page": 500, "to": 111, "total": 111 } } ``` ### 400 — Bad Request (error) - [Get Contract Related Files](https://docs-staging.payme.io/b2b-payments/contracts/get-contracts-files): GET /payment-contracts/CONT{GUID}/invoices — Get Contract Related Files # Get Contract Related Files - Sandbox: `GET https://sandbox.payme.io/api/payment-contracts/CONT{GUID}/invoices` - Production: `GET https://live.payme.io/api/payment-contracts/CONT{GUID}/invoices` ## Credentials - Header `PayMe-Merchant-Key` (API key) Allows receiving all files that are stored connected to a specific contract. We can use it to receive all files connected to a contract or just a specific file. To filter by various file types, we will use the following URL to receive the relevant file type - /CONT{GUID}/invoices?=Invoice Receipt ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Merchant-Key` | header | string | no | PayMe seller ID | | `GUID` | path | string | yes | Doc ID | ## Request body Content type: `application/json` No Body ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/payment-contracts/CONT/invoices' \ -H 'Content-Type: application/json' \ -H 'PayMe-Merchant-Key: ' \ --data-raw '{}' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/payment-contracts/CONT/invoices", { method: "GET", headers: { "Content-Type": "application/json", "PayMe-Merchant-Key": "", }, body: JSON.stringify({}), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/payment-contracts/CONT/invoices", headers={ "PayMe-Merchant-Key": "", }, json={}, ) print(response.text) ``` ### PHP ```php /invoices'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Merchant-Key: ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Will return the URL of the file. (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `invoices` | array | | | `invoices[].name` | string | | | `invoices[].mime_type` | string | | | `invoices[].type` | string | | | `invoices[].url` | string | A URL that will redirect to the file adderess | | `invoices[].id` | string | File ID | ```json { "status_code": 0, "invoices": [ { "name": "Tom Gil", "mime_type": "image/jpeg", "type": "Invoice Receipt", "url": "https://reparser2.paymeservice.com/external/files/3e8ce1bb-c6ff-4e05-94df-f24f30928180", "id": "INV16477-93808TWJ-IBTSRXKV-1HXJYFXV" } ] } ``` - [Upload Contract Related Files](https://docs-staging.payme.io/b2b-payments/contracts/post-contracts-files): POST /payment-contracts/CONT{GUID}/invoices — Upload Contract Related Files # Upload Contract Related Files - Sandbox: `POST https://sandbox.payme.io/api/payment-contracts/CONT{GUID}/invoices` - Production: `POST https://live.payme.io/api/payment-contracts/CONT{GUID}/invoices` ## Credentials - Header `PayMe-Merchant-Key` (API key) Upload a contract related file ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Merchant-Key` | header | string | no | PayMe seller ID | | `GUID` | path | string | yes | Doc ID | ## Request body Content type: `application/json` There is an option to upload bulk files. Optional file types - Invoice Receipt Invoice Transaction Invoice Receipt | Field | Type | Required | Description | | --- | --- | --- | --- | | `invoices` | array | yes | | | `invoices[].name` | string | yes | | | `invoices[].type` | string | yes | Optional file types - Invoice Receipt Deal invoice Invoice-Receipt | | `invoices[].base64` | string | yes | | | `invoices[].mime_type` | string | yes | | ### Request example ```json { "invoices": [ { "name": "Eli Katz", "type": "Invoice Receipt", "base64": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAARdQTFRFAAAAAAAAAAAAAAAAAQEBDAwMHBwcHx8fCwsLAwMDGRkZHh4eBAQEICAgtra2vb29pKSksLCwODg4FBQUh4eHtLS0m5ubISEh3NzciIiIERERwsLCnp6eAgICjIyMwMDAJycnDg4OBQUFEBAQ0NDQe3t7ycnJeXl5KCgo3d3daWlpCQkJDw8PzMzMmpqarKysyMjIOjo6kZGR9/f3sbGxnZ2dPDw8z8/Pfn5+FxcXjo6OsrKybm5u5ubmExMTBgYG1NTUiYmJCgoKTk5O39/fbGxs7OzsVFRUGhoa2tra9PT00dHRMTExzs7OhoaGhYWFLCwsIyMjuLi4xcXFUlJSRUVFvr6+2dnZoaGhFhYWBwcHFRUV////p5PkYgAAAAN0Uk5Tnvn4e+Nx/gAAAAFiS0dEXOrYAJcAAAAJcEhZcwAAAEgAAABIAEbJaz4AAACnSURBVBjTY2BgZEYCjAwMTMwogImBGQ0ABVhY2dg5gExOLm4esAAvH7+AoBCzsIiomDhYgEtCUkpaRlZOXkFRCSygrKIqrqauoamlqA0xQ0dXT9/A0MjYxNQMIqBsbmFpZW1ja2hnDxGwc3B0cnZxdXNnZmEBC3h4esmJefv4uvj5B4AFAoP0zINDmEPDwiMiwQJR0UrROkDFHNFREDPQnI7hOXTvAwCtbBUc7QjTawAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOS0wMS0yMFQwNjo1NTozNiswMDowMA0Ih5IAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTktMDEtMjBUMDY6NTU6MzYrMDA6MDB8VT8uAAAARnRFWHRzb2Z0d2FyZQBJbWFnZU1hZ2ljayA2LjcuOC05IDIwMTQtMDUtMTIgUTE2IGh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3Jn3IbtAAAAABh0RVh0VGh1bWI6OkRvY3VtZW50OjpQYWdlcwAxp/+7LwAAABh0RVh0VGh1bWI6OkltYWdlOjpoZWlnaHQAMTkyDwByhQAAABd0RVh0VGh1bWI6OkltYWdlOjpXaWR0aAAxOTLTrCEIAAAAGXRFWHRUaHVtYjo6TWltZXR5cGUAaW1hZ2UvcG5nP7JWTgAAABd0RVh0VGh1bWI6Ok1UaW1lADE1NDc5NjczMzaP/6esAAAAD3RFWHRUaHVtYjo6U2l6ZQAwQkKUoj7sAAAAVnRFWHRUaHVtYjo6VVJJAGZpbGU6Ly8vbW50bG9nL2Zhdmljb25zLzIwMTktMDEtMjAvMTVjOGNmYTk5NjBmYmJjOWUyY2NjNGI4MTY2YTI3NTQuaWNvLnBuZ0jyrXwAAAAASUVORK5CYII=", "mime_type": "image/png" } ] } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/payment-contracts/CONT/invoices' \ -H 'Content-Type: application/json' \ -H 'PayMe-Merchant-Key: ' \ --data-raw '{ "invoices": [ { "name": "Eli Katz", "type": "Invoice Receipt", "base64": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAARdQTFRFAAAAAAAAAAAAAAAAAQEBDAwMHBwcHx8fCwsLAwMDGRkZHh4eBAQEICAgtra2vb29pKSksLCwODg4FBQUh4eHtLS0m5ubISEh3NzciIiIERERwsLCnp6eAgICjIyMwMDAJycnDg4OBQUFEBAQ0NDQe3t7ycnJeXl5KCgo3d3daWlpCQkJDw8PzMzMmpqarKysyMjIOjo6kZGR9/f3sbGxnZ2dPDw8z8/Pfn5+FxcXjo6OsrKybm5u5ubmExMTBgYG1NTUiYmJCgoKTk5O39/fbGxs7OzsVFRUGhoa2tra9PT00dHRMTExzs7OhoaGhYWFLCwsIyMjuLi4xcXFUlJSRUVFvr6+2dnZoaGhFhYWBwcHFRUV////p5PkYgAAAAN0Uk5Tnvn4e+Nx/gAAAAFiS0dEXOrYAJcAAAAJcEhZcwAAAEgAAABIAEbJaz4AAACnSURBVBjTY2BgZEYCjAwMTMwogImBGQ0ABVhY2dg5gExOLm4esAAvH7+AoBCzsIiomDhYgEtCUkpaRlZOXkFRCSygrKIqrqauoamlqA0xQ0dXT9/A0MjYxNQMIqBsbmFpZW1ja2hnDxGwc3B0cnZxdXNnZmEBC3h4esmJefv4uvj5B4AFAoP0zINDmEPDwiMiwQJR0UrROkDFHNFREDPQnI7hOXTvAwCtbBUc7QjTawAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOS0wMS0yMFQwNjo1NTozNiswMDowMA0Ih5IAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTktMDEtMjBUMDY6NTU6MzYrMDA6MDB8VT8uAAAARnRFWHRzb2Z0d2FyZQBJbWFnZU1hZ2ljayA2LjcuOC05IDIwMTQtMDUtMTIgUTE2IGh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3Jn3IbtAAAAABh0RVh0VGh1bWI6OkRvY3VtZW50OjpQYWdlcwAxp/+7LwAAABh0RVh0VGh1bWI6OkltYWdlOjpoZWlnaHQAMTkyDwByhQAAABd0RVh0VGh1bWI6OkltYWdlOjpXaWR0aAAxOTLTrCEIAAAAGXRFWHRUaHVtYjo6TWltZXR5cGUAaW1hZ2UvcG5nP7JWTgAAABd0RVh0VGh1bWI6Ok1UaW1lADE1NDc5NjczMzaP/6esAAAAD3RFWHRUaHVtYjo6U2l6ZQAwQkKUoj7sAAAAVnRFWHRUaHVtYjo6VVJJAGZpbGU6Ly8vbW50bG9nL2Zhdmljb25zLzIwMTktMDEtMjAvMTVjOGNmYTk5NjBmYmJjOWUyY2NjNGI4MTY2YTI3NTQuaWNvLnBuZ0jyrXwAAAAASUVORK5CYII=", "mime_type": "image/png" } ] }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/payment-contracts/CONT/invoices", { method: "POST", headers: { "Content-Type": "application/json", "PayMe-Merchant-Key": "", }, body: JSON.stringify({ "invoices": [ { "name": "Eli Katz", "type": "Invoice Receipt", "base64": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAARdQTFRFAAAAAAAAAAAAAAAAAQEBDAwMHBwcHx8fCwsLAwMDGRkZHh4eBAQEICAgtra2vb29pKSksLCwODg4FBQUh4eHtLS0m5ubISEh3NzciIiIERERwsLCnp6eAgICjIyMwMDAJycnDg4OBQUFEBAQ0NDQe3t7ycnJeXl5KCgo3d3daWlpCQkJDw8PzMzMmpqarKysyMjIOjo6kZGR9/f3sbGxnZ2dPDw8z8/Pfn5+FxcXjo6OsrKybm5u5ubmExMTBgYG1NTUiYmJCgoKTk5O39/fbGxs7OzsVFRUGhoa2tra9PT00dHRMTExzs7OhoaGhYWFLCwsIyMjuLi4xcXFUlJSRUVFvr6+2dnZoaGhFhYWBwcHFRUV////p5PkYgAAAAN0Uk5Tnvn4e+Nx/gAAAAFiS0dEXOrYAJcAAAAJcEhZcwAAAEgAAABIAEbJaz4AAACnSURBVBjTY2BgZEYCjAwMTMwogImBGQ0ABVhY2dg5gExOLm4esAAvH7+AoBCzsIiomDhYgEtCUkpaRlZOXkFRCSygrKIqrqauoamlqA0xQ0dXT9/A0MjYxNQMIqBsbmFpZW1ja2hnDxGwc3B0cnZxdXNnZmEBC3h4esmJefv4uvj5B4AFAoP0zINDmEPDwiMiwQJR0UrROkDFHNFREDPQnI7hOXTvAwCtbBUc7QjTawAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOS0wMS0yMFQwNjo1NTozNiswMDowMA0Ih5IAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTktMDEtMjBUMDY6NTU6MzYrMDA6MDB8VT8uAAAARnRFWHRzb2Z0d2FyZQBJbWFnZU1hZ2ljayA2LjcuOC05IDIwMTQtMDUtMTIgUTE2IGh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3Jn3IbtAAAAABh0RVh0VGh1bWI6OkRvY3VtZW50OjpQYWdlcwAxp/+7LwAAABh0RVh0VGh1bWI6OkltYWdlOjpoZWlnaHQAMTkyDwByhQAAABd0RVh0VGh1bWI6OkltYWdlOjpXaWR0aAAxOTLTrCEIAAAAGXRFWHRUaHVtYjo6TWltZXR5cGUAaW1hZ2UvcG5nP7JWTgAAABd0RVh0VGh1bWI6Ok1UaW1lADE1NDc5NjczMzaP/6esAAAAD3RFWHRUaHVtYjo6U2l6ZQAwQkKUoj7sAAAAVnRFWHRUaHVtYjo6VVJJAGZpbGU6Ly8vbW50bG9nL2Zhdmljb25zLzIwMTktMDEtMjAvMTVjOGNmYTk5NjBmYmJjOWUyY2NjNGI4MTY2YTI3NTQuaWNvLnBuZ0jyrXwAAAAASUVORK5CYII=", "mime_type": "image/png" } ] }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/payment-contracts/CONT/invoices", headers={ "PayMe-Merchant-Key": "", }, json={ "invoices": [ { "name": "Eli Katz", "type": "Invoice Receipt", "base64": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAARdQTFRFAAAAAAAAAAAAAAAAAQEBDAwMHBwcHx8fCwsLAwMDGRkZHh4eBAQEICAgtra2vb29pKSksLCwODg4FBQUh4eHtLS0m5ubISEh3NzciIiIERERwsLCnp6eAgICjIyMwMDAJycnDg4OBQUFEBAQ0NDQe3t7ycnJeXl5KCgo3d3daWlpCQkJDw8PzMzMmpqarKysyMjIOjo6kZGR9/f3sbGxnZ2dPDw8z8/Pfn5+FxcXjo6OsrKybm5u5ubmExMTBgYG1NTUiYmJCgoKTk5O39/fbGxs7OzsVFRUGhoa2tra9PT00dHRMTExzs7OhoaGhYWFLCwsIyMjuLi4xcXFUlJSRUVFvr6+2dnZoaGhFhYWBwcHFRUV////p5PkYgAAAAN0Uk5Tnvn4e+Nx/gAAAAFiS0dEXOrYAJcAAAAJcEhZcwAAAEgAAABIAEbJaz4AAACnSURBVBjTY2BgZEYCjAwMTMwogImBGQ0ABVhY2dg5gExOLm4esAAvH7+AoBCzsIiomDhYgEtCUkpaRlZOXkFRCSygrKIqrqauoamlqA0xQ0dXT9/A0MjYxNQMIqBsbmFpZW1ja2hnDxGwc3B0cnZxdXNnZmEBC3h4esmJefv4uvj5B4AFAoP0zINDmEPDwiMiwQJR0UrROkDFHNFREDPQnI7hOXTvAwCtbBUc7QjTawAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOS0wMS0yMFQwNjo1NTozNiswMDowMA0Ih5IAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTktMDEtMjBUMDY6NTU6MzYrMDA6MDB8VT8uAAAARnRFWHRzb2Z0d2FyZQBJbWFnZU1hZ2ljayA2LjcuOC05IDIwMTQtMDUtMTIgUTE2IGh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3Jn3IbtAAAAABh0RVh0VGh1bWI6OkRvY3VtZW50OjpQYWdlcwAxp/+7LwAAABh0RVh0VGh1bWI6OkltYWdlOjpoZWlnaHQAMTkyDwByhQAAABd0RVh0VGh1bWI6OkltYWdlOjpXaWR0aAAxOTLTrCEIAAAAGXRFWHRUaHVtYjo6TWltZXR5cGUAaW1hZ2UvcG5nP7JWTgAAABd0RVh0VGh1bWI6Ok1UaW1lADE1NDc5NjczMzaP/6esAAAAD3RFWHRUaHVtYjo6U2l6ZQAwQkKUoj7sAAAAVnRFWHRUaHVtYjo6VVJJAGZpbGU6Ly8vbW50bG9nL2Zhdmljb25zLzIwMTktMDEtMjAvMTVjOGNmYTk5NjBmYmJjOWUyY2NjNGI4MTY2YTI3NTQuaWNvLnBuZ0jyrXwAAAAASUVORK5CYII=", "mime_type": "image/png", }, ], }, ) print(response.text) ``` ### PHP ```php /invoices'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Merchant-Key: ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `Invoices` | array | | | `Invoices[].name` | string | | | `Invoices[].mime_type` | string | | | `Invoices[].type` | string | | | `Invoices[].url` | string | | | `Invoices[].id` | string | | ```json { "status_code": 0, "Invoices": [ { "name": "Maya Bar", "mime_type": "image/png", "type": "Invoice Receipt", "url": "https://reparser2.paymeservice.com/external/files/b6b93415-174e-4e26-b725-90621ee50bd5", "id": "INV16477-93808TWJ-IBTSRXKV-1HXJYFXV" } ] } ``` - [Update Contract Related Files](https://docs-staging.payme.io/b2b-payments/contracts/put-contracts-files): PUT /payment-contracts/CONT{GUID}/invoices — Update Contract Related Files # Update Contract Related Files - Sandbox: `PUT https://sandbox.payme.io/api/payment-contracts/CONT{GUID}/invoices` - Production: `PUT https://live.payme.io/api/payment-contracts/CONT{GUID}/invoices` ## Credentials No credentials are documented for this endpoint. Add /INV{GUID} to the end of the URL to edit a document. Upadte a contract related file. It is possible to upload one file for another, should be the same type. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `GUID` | path | string | yes | Doc ID | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `name` | string | yes | | | `type` | string | yes | | | `base64` | string | yes | | | `mime_type` | string | yes | | ### Request example ```json { "name": "Dana Cohen", "type": "Invoice Receipt", "base64": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAG8AWcDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6n034JeJtF1mbxTcXEjXUgB2lOQRWvPcfEu9ZIL22uZ7dTh4yBgivR5JLq53R3F6ysRjJrkfEGo+JdM1FbLTpZZQ7YyK8tzQ3ApanqS6tZJotz4UdSqbef/11wXh/wJ468E6lPqqPNNA8pZbYLjANepW0NwcSXblZSMknqDVm", "mime_type": "image/png" } ``` ## Code samples ### curl ```bash curl -X PUT 'https://sandbox.payme.io/api/payment-contracts/CONT/invoices' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "Dana Cohen", "type": "Invoice Receipt", "base64": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAG8AWcDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6n034JeJtF1mbxTcXEjXUgB2lOQRWvPcfEu9ZIL22uZ7dTh4yBgivR5JLq53R3F6ysRjJrkfEGo+JdM1FbLTpZZQ7YyK8tzQ3ApanqS6tZJotz4UdSqbef/11wXh/wJ468E6lPqqPNNA8pZbYLjANepW0NwcSXblZSMknqDVm", "mime_type": "image/png" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/payment-contracts/CONT/invoices", { method: "PUT", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "name": "Dana Cohen", "type": "Invoice Receipt", "base64": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAG8AWcDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6n034JeJtF1mbxTcXEjXUgB2lOQRWvPcfEu9ZIL22uZ7dTh4yBgivR5JLq53R3F6ysRjJrkfEGo+JdM1FbLTpZZQ7YyK8tzQ3ApanqS6tZJotz4UdSqbef/11wXh/wJ468E6lPqqPNNA8pZbYLjANepW0NwcSXblZSMknqDVm", "mime_type": "image/png" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.put( "https://sandbox.payme.io/api/payment-contracts/CONT/invoices", json={ "name": "Dana Cohen", "type": "Invoice Receipt", "base64": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAG8AWcDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6n034JeJtF1mbxTcXEjXUgB2lOQRWvPcfEu9ZIL22uZ7dTh4yBgivR5JLq53R3F6ysRjJrkfEGo+JdM1FbLTpZZQ7YyK8tzQ3ApanqS6tZJotz4UdSqbef/11wXh/wJ468E6lPqqPNNA8pZbYLjANepW0NwcSXblZSMknqDVm", "mime_type": "image/png", }, ) print(response.text) ``` ### PHP ```php /invoices'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'PUT', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) - [Delete Contract Related Files](https://docs-staging.payme.io/b2b-payments/contracts/delete-contracts-files): DELETE /payment-contracts/CONT{GUID}/invoices — Delete Contract Related Files # Delete Contract Related Files - Sandbox: `DELETE https://sandbox.payme.io/api/payment-contracts/CONT{GUID}/invoices` - Production: `DELETE https://live.payme.io/api/payment-contracts/CONT{GUID}/invoices` ## Credentials No credentials are documented for this endpoint. Add /INV{GUID} to the end of the URL to delete a document. Delete a contract related file. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `GUID` | path | string | yes | Doc ID | ## Code samples ### curl ```bash curl -X DELETE 'https://sandbox.payme.io/api/payment-contracts/CONT/invoices' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/payment-contracts/CONT/invoices", { method: "DELETE", }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.delete( "https://sandbox.payme.io/api/payment-contracts/CONT/invoices", ) print(response.text) ``` ### PHP ```php /invoices'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'DELETE', CURLOPT_RETURNTRANSFER => true, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) - [Get Recipient](https://docs-staging.payme.io/b2b-payments/contracts/get-recipient): GET /payment-contracts/recipients — Get Recipient # Get Recipient - Sandbox: `GET https://sandbox.payme.io/api/payment-contracts/recipients` - Production: `GET https://live.payme.io/api/payment-contracts/recipients` ## Credentials - Header `PayMe-Merchant-Key` (API key) That endpoint will return recipients that were already paid by the payment contract initiator. **Only recipients that received the payment will return in the response. If the recipient doesn't approve the payment, his data won't return. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Merchant-Key` | header | string | no | Seller's MPL | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/payment-contracts/recipients' \ -H 'PayMe-Merchant-Key: ' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/payment-contracts/recipients", { method: "GET", headers: { "PayMe-Merchant-Key": "", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/payment-contracts/recipients", headers={ "PayMe-Merchant-Key": "", }, ) print(response.text) ``` ### PHP ```php 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'PayMe-Merchant-Key: ', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `page` | integer | | | `items_per_page` | integer | | | `items_total` | integer | | | `items` | array | | | `items[].name` | string | | | `items[].phone` | string | | | `items[].business_code` | integer | | | `items[].email` | string | | | `items[].seller_payme_id_checksum` | string | Use that value when creating a new contract. Use it in the recipient.payme_id | ```json { "status_code": 0, "page": 1, "items_per_page": 8, "items_total": 8, "items": [ { "name": "Jane Doe", "phone": "0500000011", "business_code": 123456, "email": "user1@example.com", "seller_payme_id_checksum": "eyJpdiI6ImNqUEYzR3M5S051Q2tqeGdVYnJlb3c9PSIsInZhbHVlIjoiVFQ2Zit3bzhaU2JHWnJyUzRtYnNwWUhvT1hTTGJRUXhnWC9kTUxKQ0JwV3NrY1RDQ3M4aGFvZ3BNVXUyU0tOMyIsIm1hYyI6IjcwNDgxZWJmZGEzYThlN2E3MDFhMmUyOTU5YzFkNmEzODc0YjJiNDE2OTExMDY2YjU0ZjEzYTM2NTk4MTJlODIiLCJ0YWciOiIifQ==" }, { "name": "Dana Cohen", "phone": "0500000001", "business_code": 123123, "email": "ohad@paymeservice.com", "seller_payme_id_checksum": "eyJpdiI6Iks1SStGRmJtbnNSQUp3a0dydEdyZ2c9PSIsInZhbHVlIjoiNFo0RWRmT25FS0E3SHo2UXZjb296eU5FSEoyblFscHlBOUZWaGJFUWpLdTNIR1VRUEcyOUlxWWtYdnV5NGVYbSIsIm1hYyI6ImI4ODY5NjFjNDIxYjU5NTc2OWQ4ZWUyNDU0ZjdiZmI3YzFhZTJmYWNjNzZjNzYwYzQ5MTQ1ZjU5ZjFjMDFlZDciLCJ0YWciOiIifQ==" }, { "name": "Jane Doe", "phone": "0500000032", "business_code": 123123123, "email": "adam.kima@paymeservice.com", "seller_payme_id_checksum": "eyJpdiI6IjY3M0hDSVhzVDh3NlA2aENxWUNObXc9PSIsInZhbHVlIjoiWHdRUVVGN2Y2aFJ0Nlo1cDREUzRkWVR0WXhOVHZIUXN6QTJsdHFrdUx3dUpzckQwVm1iWkoyajZ4ZFlUK1pCRSIsIm1hYyI6IjY1ZmY2Y2EwNzA0YTNlNDhlN2M2ZTdkYTNkMzQ3Njk3Nzc4MTg0ZjQwOGE4MTBjZTI5NDQxZjdlZDUyMjZmMDIiLCJ0YWciOiIifQ==" }, { "name": "Jane Doe", "phone": "0500000025", "business_code": 516438207, "email": "Adam.kima@paymeservice.com", "seller_payme_id_checksum": "eyJpdiI6Iis0UUN1TEZVblBpSzlrUlBEN3VRWnc9PSIsInZhbHVlIjoiT2RUTjZ3dy90ZUdGZzVwdmNKMGZ5QXYzUlg4ejZNeU1HZ1F4WCtVZkQ4Q2JZbFZKZzNkL1FHRnR3QXI1WWZBeCIsIm1hYyI6IjExMzZlN2Y0ZDkzMjZhZDIzNDA2ZWJkYjcxZjViZDEwYjk2OTNiNDZjNzE1NTg2NGY4NTg2ZDM5ZWI3YjdlMDgiLCJ0YWciOiIifQ==" }, { "name": null, "phone": null, "business_code": 123456, "email": null, "seller_payme_id_checksum": "eyJpdiI6ImFvMmtRSVJud1V3bzllUmhVSC9TS3c9PSIsInZhbHVlIjoiQjFIekMzS3hJamNRSGtsMk93VG1xZ0J2cFdzcDl4S0xnaXluZVZRSW9wZGNvNzNtYkhzNjE4TEhqa3Q0UWN3cSIsIm1hYyI6IjNkMDRhMjU3ODc3ZDY2MjJhMzc0Njg4M2MxNjQ3Mzg1MmJmY2NmY2IwMmVlOGVlZjA2YzVjOTc5NzUwYWVkYzkiLCJ0YWciOiIifQ==" }, { "name": null, "phone": "0500000003", "business_code": 123456, "email": "user2@example.com", "seller_payme_id_checksum": "eyJpdiI6IndwUEZScVRMZlZOVHc1dDJLSnlralE9PSIsInZhbHVlIjoieUlucWNWN3NYRWZBbEVnbVdKMnpxdStGRitBcVFPY3l3cTNCUDN5cjZqVW9wcmlLa0hOSUhOQloySDFLZ1VrWSIsIm1hYyI6Ijc4ZWQ1NDkyNDAwN2I5ZThiNjNiMGVjZjFiZjU4NTdiZDYzODE1MjZhNzdjMjkxMTZjMTBhMWEzNTRmMzgwMGQiLCJ0YWciOiIifQ==" }, { "name": "Jane Doe", "phone": "0500000035", "business_code": 123123, "email": "maayan.bauman@payme.io", "seller_payme_id_checksum": "eyJpdiI6IkxjUTJjWTRsaUFLY1ZRUzRUY3BQdWc9PSIsInZhbHVlIjoiOE4veUkvdUZUSjAvaGp4VkJ5U3RUUUtodE5iY2U3WWgxNFZ1UlZNcUpYQmtqQkNEb21VVU5KNFRxci9KcmlYTSIsIm1hYyI6IjkyMTNmZjllNjZkY2MxYjdmZDNiYTNjYWVmY2NhMzAxMGJmMTM5N2UzZDkzZjI1NDU3ZWY4Y2IwYjRiZThmOTMiLCJ0YWciOiIifQ==" }, { "name": "John Smith", "phone": "0500000036", "business_code": 123456798, "email": "maayan.bauman@payme.io", "seller_payme_id_checksum": "eyJpdiI6InNhMUVjR1hmeXV1bC9DQnh4OWhVOVE9PSIsInZhbHVlIjoiQVg5YkNWTi9uVGZxc21STEduUmpnR3Jlbm9IeUNnTFJDMzJmTnVNRXJXRmtNS1JZN0hXb2dEYnJqd3YvMzArcSIsIm1hYyI6ImExYjg2NGJlOTM2ZmQ4ODg1OTE1N2I5NmJjNjdmNTYzZThlYzE1NzJhYjY3MmJkYmQ0ZDIwNzE1NmIxYmJkMmMiLCJ0YWciOiIifQ==" } ] } ``` ### 500 — Internal Server Error (error) - [Generate Transfer](https://docs-staging.payme.io/b2b-payments/wallets/post-generate-transfer): POST /sales — Generate Transfer # Generate Transfer - Sandbox: `POST https://sandbox.payme.io/api/sales` - Production: `POST https://live.payme.io/api/sales` ## Credentials - Request body field `seller_payme_id` (optional): Seller unique ID This endpoint can be used in order to transfer funds between different wallets in our system. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `payment` | object | yes | | | `payment.method` | string | yes | Default value - 'Funds Transfer' | | `payment.origin_seller_id` | string | yes | The unique PayMe seller ID | | `currency` | string | yes | The currency used for the transfer | | `sale_price` | number | yes | The transfer amount | | `product_name` | string | no | What is the transfer paid for | | `seller_payme_id` | string | no | Seller unique ID | ### Request example ```json { "payment": { "method": "funds-transfer", " origin_seller_id": "MPL15814-XXXXXXXXX-XXXXXXXXX-XXXXXXXXX" }, "currency": "ILS", "sale_price": 150, "product_name": "ddd", "seller_payme_id": "MPL15855-XXXXXXXXX-XXXXXXXXX-XXXXXXXXX" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/sales' \ -H 'Content-Type: application/json' \ --data-raw '{ "payment": { "method": "funds-transfer", " origin_seller_id": "MPL15814-XXXXXXXXX-XXXXXXXXX-XXXXXXXXX" }, "currency": "ILS", "sale_price": 150, "product_name": "ddd", "seller_payme_id": "MPL15855-XXXXXXXXX-XXXXXXXXX-XXXXXXXXX" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/sales", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "payment": { "method": "funds-transfer", " origin_seller_id": "MPL15814-XXXXXXXXX-XXXXXXXXX-XXXXXXXXX" }, "currency": "ILS", "sale_price": 150, "product_name": "ddd", "seller_payme_id": "MPL15855-XXXXXXXXX-XXXXXXXXX-XXXXXXXXX" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/sales", json={ "payment": { "method": "funds-transfer", " origin_seller_id": "MPL15814-XXXXXXXXX-XXXXXXXXX-XXXXXXXXX", }, "currency": "ILS", "sale_price": 150, "product_name": "ddd", "seller_payme_id": "MPL15855-XXXXXXXXX-XXXXXXXXX-XXXXXXXXX", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — User Created (success) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `payme_status` | string | | | `status_error_code` | number | | | `payme_sale_id` | string | | | `payme_sale_code` | number | | | `sale_created` | string | | | `payme_sale_status` | string | | | `sale_status` | string | | | `currency` | string | | | `transaction_id` | string | | | `is_token_sale` | boolean | | | `price` | number | | | `payme_signature` | string | | | `payme_transaction_id` | string | | | `payme_transaction_total` | number | | | `payme_transaction_card_brand` | string | | | `payme_transaction_auth_number` | string | | | `payme_transaction_voucher` | string | | | `buyer_name` | string | | | `buyer_email` | string | | | `buyer_phone` | string | | | `buyer_card_mask` | string | | | `buyer_card_exp` | string | | | `buyer_card_is_foreign` | boolean | | | `buyer_social_id` | string | | | `installments` | number | | | `sale_paid_date` | string | | | `sale_release_date` | string | | | `redirect_url` | string | | ```json { "status_code": 0, "payme_status": "success", "status_error_code": 0, "payme_sale_id": "SALE1597-XXXXXXXXX-XXXXXXXXX-XXXXXXXXX", "payme_sale_code": 8965519, "sale_created": "2020-08-11 16:28:08", "payme_sale_status": "completed", "sale_status": "completed", "currency": "ILS", "transaction_id": "", "is_token_sale": false, "price": 600, "payme_signature": "XXXXXXXXXXXX", "payme_transaction_id": "TRAN1597-XXXXXXXXX-XXXXXXXXX-XXXXXXXXX", "payme_transaction_total": 600, "payme_transaction_card_brand": "PrivateLabel", "payme_transaction_auth_number": null, "payme_transaction_voucher": null, "buyer_name": "Avi Levi", "buyer_email": "test@example.com", "buyer_phone": "0500000037", "buyer_card_mask": null, "buyer_card_exp": null, "buyer_card_is_foreign": false, "buyer_social_id": "123456782", "installments": 1, "sale_paid_date": "2020-08-11 16:28:08", "sale_release_date": "2020-08-11 16:28:09", "redirect_url": null } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | number | | | `status_error_details` | string | | | `status_additional_info` | string | | | `status_error_code` | number | | ```json { "status_code": 1, "status_error_details": "השירות לא הופעל בחשבון", "status_additional_info": "funds-transfer", "status_error_code": 720 } ``` ## Keep - [Prerequisites](https://docs-staging.payme.io/keep/partner-authorization/prerequisites): Partner authorization layer protects the Partner's data on the Keep domain against unauthorized access and mutation. # Prerequisites Partner authorization layer protects the Partner's data on the Keep domain against unauthorized access and mutation. The Keep API uses API keys to authenticate requests. Before starting integration you must receive your Partner API keys from your Account Manager: - `Client ID` - `Client Secret` Your API keys carry many privileges, so be sure to keep them **secure**! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth. The API keys must be provided during any interactions via [OAuth2 Access and Refresh Tokens](https://docs-staging.payme.io/docs/keep/b3A6Mjg1MjU2MTQ) endpoint. All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail. - [Authorization Flow](https://docs-staging.payme.io/keep/partner-authorization/authorization-flow): This document provides a high-level overview of the Keep API authentication system. # Authorization Overview This document provides a high-level overview of the Keep API authentication system. --- ## Introduction The PayMe API uses OAuth 2.0 for secure authentication. API integrators authenticate using the **Client Credentials** flow, which is designed for server-to-server communication where no user interaction is required. --- ## How It Works > **Authentication Flow** > 1. Your server requests an access token using your client credentials > 2. The API returns an access token and refresh token > 3. Use the access token to make authorized API requests > 4. When the access token expires, use the refresh token to obtain a new one > 5. When the refresh token expires, repeat from step 1 --- ## Authentication Methods ### Client Credentials This is the primary authentication method for API integrators. Your server authenticates directly with the PayMe API using a client ID and client secret provided during onboarding. > **When to use:** Server-to-server integrations, backend services, automated processes ### Refresh Token Used to obtain a new access token without re-authenticating with credentials. This ensures continuous API access without storing sensitive credentials for repeated use. > **When to use:** When your current access token has expired or is about to expire --- ## Tokens ### Access Token - Used to authenticate API requests - Short-lived (typically 1 hour) - Must be included in the `Authorization` header of every API request - Format: `Bearer ` ### Refresh Token - Used to obtain new access tokens - Long-lived (typically 30 days) - Should be stored securely - Cannot be used to make API requests directly --- ## Scopes Scopes define what resources and actions your integration can access. | Scope | Description | |-------|-------------| | `partner-api` | Access to partner-level endpoints and resources | | `seller-api` | Access to seller-level endpoints and resources | Request only the scopes your integration needs to follow the principle of least privilege. --- ## Security Considerations > **Important Security Practices** > - Never expose your client secret in client-side code > - Always use HTTPS for all API communications > - Store tokens securely using encryption > - Implement token refresh before expiration > - Rotate credentials periodically --- ## Getting Started 1. **Obtain Credentials** - Contact Keep to receive your `client_id` and `client_secret` 2. **Request Access Token** - Use the Client Credentials flow to obtain tokens 3. **Make API Requests** - Include the access token in your API calls 4. **Handle Token Refresh** - Implement logic to refresh tokens before they expire --- ## Next Steps For detailed implementation instructions including request/response formats and code examples, see the [Authorization Flow](authorization-flow.md) documentation. - [List income documents](https://docs-staging.payme.io/keep/seller-api/listsellerincomedocuments): GET /seller/api/documents/income — List income documents # List income documents - Sandbox: `GET https://sandbox.payme.io/api/seller/api/documents/income` - Production: `GET https://live.payme.io/api/seller/api/documents/income` ## Credentials - Header `Authorization: Bearer ` Retrieve a list of income documents for the authenticated seller. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `page` | query | integer | no | Page number | | `limit` | query | integer | no | Items per page | | `docType` | query | string | no | Filter by document type | | `fromDate` | query | string | no | Filter documents from this date | | `toDate` | query | string | no | Filter documents until this date | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/seller/api/documents/income' \ -H 'Authorization: Bearer ' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/seller/api/documents/income", { method: "GET", headers: { "Authorization": "Bearer ", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/seller/api/documents/income", headers={ "Authorization": "Bearer ", }, ) print(response.text) ``` ### PHP ```php 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Successful response (success) | Field | Type | Description | | --- | --- | --- | | `payload` | object | | | `payload.page` | integer | | | `payload.limit` | integer | | | `payload.total` | integer | | | `payload.items` | array | | | `payload.items[].id` | string | | | `payload.items[].docType` | string | | | `payload.items[].docNumber` | string | Document number | | `payload.items[].docRegulationNumber` | string | Tax authority regulation number | | `payload.items[].valueDate` | string | | | `payload.items[].dueDate` | string | | | `payload.items[].client` | object | | | `payload.items[].client.name` | string | Client/customer name | | `payload.items[].client.email` | string | Client email address | | `payload.items[].client.phone` | string | Client phone number | | `payload.items[].client.socialId` | string | Client's social/business ID number (ת.ז. / ח.פ.) | | `payload.items[].totalWithoutVat` | number | | | `payload.items[].vatAmount` | number | | | `payload.items[].totalAmount` | number | | | `payload.items[].currency` | string | | | `payload.items[].status` | string | | | `payload.items[].url` | string | Document download URL | | `payload.items[].createdAt` | string | | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 401, "message": "Unauthorized", "error": "Unauthorized" } ``` - [Seller API](https://docs-staging.payme.io/keep/seller-api/overview): The Seller API lets accounting integrations create, retrieve, cancel, and preview seller income documents such as invoices and receipts. This page is the editable landing for the Seller API category. # Seller API The Seller API lets you create and manage **seller income documents** — invoices, receipts, and previews — within the Keep accounting service. Use it to: - List a seller's income documents - Create a new income document - Retrieve a single income document - Cancel an income document - Generate a document preview The available endpoints are listed below. Edit this page to add your own introduction, prerequisites, and examples. - [Create income document](https://docs-staging.payme.io/keep/seller-api/createsellerincomedocument): POST /seller/api/documents/income — Create income document # Create income document - Sandbox: `POST https://sandbox.payme.io/api/seller/api/documents/income` - Production: `POST https://live.payme.io/api/seller/api/documents/income` ## Credentials - Header `Authorization: Bearer ` Create a new income document (invoice, receipt, deal, etc.) using the new invoicing service. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | string | yes | Document type | | `client` | object | yes | | | `client.name` | string | yes | Client/customer name | | `client.email` | string | no | Client email address | | `client.phone` | string | no | Client phone number | | `client.socialId` | string | no | Client's social/business ID number (ת.ז. / ח.פ.) | | `currency` | string | yes | Document currency (currently only ILS supported) | | `docValueDate` | string | yes | Document value date | | `dueDate` | string | no | Payment due date (required for invoice, deal, offer) | | `title` | string | no | Document title (optional) | | `docLang` | string | yes | Document language | | `items` | array | yes | Document line items | | `items[].name` | string | yes | Item name/description | | `items[].quantity` | number | yes | Item quantity | | `items[].itemNetPrice` | number | yes | Item net price (before VAT) | | `items[].itemTotalPrice` | number | no | Item total price (calculated) | | `items[].itemSumNetTotalPrice` | number | no | Item sum net total price (quantity * itemNetPrice) | | `items[].itemCurrency` | string | yes | Item currency | | `items[].isNoItemVat` | boolean | no | VAT exempt flag (true = no VAT for this item) | | `bankDetails` | object | no | Bank account details for payment | | `bankDetails.bankName` | string | no | Bank name | | `bankDetails.branchNumber` | string | no | Branch number | | `bankDetails.accountNumber` | string | no | Account number | | `bankDetails.accountName` | string | no | Account holder name | | `bankDetails.IBAN` | string | no | IBAN number | | `subTotal` | number | no | Subtotal before discount | | `discount` | number | no | Discount amount | | `totalWithoutVatAmount` | number | no | Total amount without VAT | | `vatAmount` | number | no | VAT amount | | `totalAmount` | number | yes | Total amount including VAT | | `totalPaid` | number | no | Total amount paid (required for receipts) | | `originTaxDeduction` | number | no | Tax deduction at source (ניכוי מס במקור) | | `comment` | string | no | Document comments/notes | | `paymentCash` | object | no | Cash payment details | | `paymentCash.date` | string | yes | Payment date | | `paymentCash.amount` | number | yes | Payment amount | | `paymentCreditCard` | object | no | Credit card payment details | | `paymentCreditCard.date` | string | yes | Payment date | | `paymentCreditCard.amount` | number | yes | Payment amount | | `paymentCreditCard.last4Digits` | string | no | Last 4 digits of card | | `paymentBankTransfer` | object | no | Bank transfer payment details | | `paymentBankTransfer.date` | string | yes | Payment date | | `paymentBankTransfer.amount` | number | yes | Payment amount | | `paymentBankTransfer.bankNumber` | integer | no | Bank code | | `paymentBankTransfer.branchNumber` | integer | no | Branch number | | `paymentBankTransfer.accountNumber` | integer | no | Account number | | `paymentCheque` | object | no | Cheque payment details | | `paymentCheque.date` | string | yes | Cheque date | | `paymentCheque.receivedDate` | string | yes | Date cheque was received | | `paymentCheque.amount` | number | yes | Payment amount | | `paymentCheque.chequeNumber` | string | yes | Cheque number | | `paymentCheque.bankNumber` | integer | no | Bank code | | `paymentCheque.branchNumber` | integer | no | Branch number | | `paymentCheque.accountNumber` | integer | no | Account number | | `paymentEWallet` | object | no | E-wallet payment details (PayPal, Bit, etc.) | | `paymentEWallet.date` | string | yes | Payment date | | `paymentEWallet.amount` | number | yes | Payment amount | | `paymentEWallet.walletType` | string | yes | E-wallet type | | `payment` | object | no | Payment link settings (for invoice/deal) | | `payment.isEnabled` | boolean | no | Enable payment link | | `payment.clientEmail` | string | no | Email to send payment link to | | `payment.clientPhone` | string | no | Phone to send payment link to | | `callbacks` | object | no | Callback URLs for async notifications | | `callbacks.success` | array | no | URLs to call on success | | `callbacks.error` | array | no | URLs to call on error | ### Request example ```json { "type": "invoice", "client": { "name": "John Doe", "email": "john@example.com", "phone": "0500000002", "socialId": "123456789" }, "currency": "ILS", "docValueDate": "2024-01-15", "dueDate": "2024-02-15", "docLang": "he", "items": [ { "name": "Consulting Service", "quantity": 1, "itemNetPrice": 1000, "itemCurrency": "ILS", "isNoItemVat": false } ], "subTotal": 1000, "totalWithoutVatAmount": 1000, "vatAmount": 170, "totalAmount": 1170, "comment": "Thank you for your business" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/seller/api/documents/income' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw '{ "type": "invoice", "client": { "name": "John Doe", "email": "john@example.com", "phone": "0500000002", "socialId": "123456789" }, "currency": "ILS", "docValueDate": "2024-01-15", "dueDate": "2024-02-15", "docLang": "he", "items": [ { "name": "Consulting Service", "quantity": 1, "itemNetPrice": 1000, "itemCurrency": "ILS", "isNoItemVat": false } ], "subTotal": 1000, "totalWithoutVatAmount": 1000, "vatAmount": 170, "totalAmount": 1170, "comment": "Thank you for your business" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/seller/api/documents/income", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer ", }, body: JSON.stringify({ "type": "invoice", "client": { "name": "John Doe", "email": "john@example.com", "phone": "0500000002", "socialId": "123456789" }, "currency": "ILS", "docValueDate": "2024-01-15", "dueDate": "2024-02-15", "docLang": "he", "items": [ { "name": "Consulting Service", "quantity": 1, "itemNetPrice": 1000, "itemCurrency": "ILS", "isNoItemVat": false } ], "subTotal": 1000, "totalWithoutVatAmount": 1000, "vatAmount": 170, "totalAmount": 1170, "comment": "Thank you for your business" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/seller/api/documents/income", headers={ "Authorization": "Bearer ", }, json={ "type": "invoice", "client": { "name": "John Doe", "email": "john@example.com", "phone": "0500000002", "socialId": "123456789", }, "currency": "ILS", "docValueDate": "2024-01-15", "dueDate": "2024-02-15", "docLang": "he", "items": [ { "name": "Consulting Service", "quantity": 1, "itemNetPrice": 1000, "itemCurrency": "ILS", "isNoItemVat": False, }, ], "subTotal": 1000, "totalWithoutVatAmount": 1000, "vatAmount": 170, "totalAmount": 1170, "comment": "Thank you for your business", }, ) print(response.text) ``` ### PHP ```php 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 201 — Document created successfully (success) | Field | Type | Description | | --- | --- | --- | | `id` | string | Created document ID | | `url` | string | URL to download/view the document | | `docRegulationNumber` | string | Tax authority regulation number (מספר אסמכתא) | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 401, "message": "Unauthorized", "error": "Unauthorized" } ``` - [Get income document](https://docs-staging.payme.io/keep/seller-api/getsellerincomedocument): GET /seller/api/documents/income/{id} — Get income document # Get income document - Sandbox: `GET https://sandbox.payme.io/api/seller/api/documents/income/{id}` - Production: `GET https://live.payme.io/api/seller/api/documents/income/{id}` ## Credentials - Header `Authorization: Bearer ` Retrieve a specific income document by ID. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | string | yes | Document ID | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/seller/api/documents/income/' \ -H 'Authorization: Bearer ' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/seller/api/documents/income/", { method: "GET", headers: { "Authorization": "Bearer ", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/seller/api/documents/income/", headers={ "Authorization": "Bearer ", }, ) print(response.text) ``` ### PHP ```php '); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Successful response (success) | Field | Type | Description | | --- | --- | --- | | `id` | string | | | `docType` | string | | | `docNumber` | string | Document number | | `docRegulationNumber` | string | Tax authority regulation number | | `valueDate` | string | | | `dueDate` | string | | | `client` | object | | | `client.name` | string | Client/customer name | | `client.email` | string | Client email address | | `client.phone` | string | Client phone number | | `client.socialId` | string | Client's social/business ID number (ת.ז. / ח.פ.) | | `totalWithoutVat` | number | | | `vatAmount` | number | | | `totalAmount` | number | | | `currency` | string | | | `status` | string | | | `url` | string | Document download URL | | `createdAt` | string | | ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 401, "message": "Unauthorized", "error": "Unauthorized" } ``` ### 404 — Not Found (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 404, "message": "Document not found", "error": "Not Found" } ``` - [Cancel income document](https://docs-staging.payme.io/keep/seller-api/cancelsellerincomedocument): POST /seller/api/documents/income/{id}/cancel — Cancel income document # Cancel income document - Sandbox: `POST https://sandbox.payme.io/api/seller/api/documents/income/{id}/cancel` - Production: `POST https://live.payme.io/api/seller/api/documents/income/{id}/cancel` ## Credentials - Header `Authorization: Bearer ` Cancel an existing income document. This will create a cancellation record. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | string | yes | Document ID to cancel | ## Request body Content type: `application/json` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/seller/api/documents/income//cancel' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw '{}' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/seller/api/documents/income//cancel", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer ", }, body: JSON.stringify({}), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/seller/api/documents/income//cancel", headers={ "Authorization": "Bearer ", }, json={}, ) print(response.text) ``` ### PHP ```php /cancel'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer ', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Document cancelled successfully (success) ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 401, "message": "Unauthorized", "error": "Unauthorized" } ``` ### 404 — Not Found (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 404, "message": "Document not found", "error": "Not Found" } ``` - [Generate document preview](https://docs-staging.payme.io/keep/seller-api/previewsellerincomedocument): POST /seller/api/documents/income/preview — Generate document preview # Generate document preview - Sandbox: `POST https://sandbox.payme.io/api/seller/api/documents/income/preview` - Production: `POST https://live.payme.io/api/seller/api/documents/income/preview` ## Credentials - Header `Authorization: Bearer ` Generate a preview of an income document without saving it. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | string | yes | Document type | | `client` | object | yes | | | `client.name` | string | yes | Client/customer name | | `client.email` | string | no | Client email address | | `client.phone` | string | no | Client phone number | | `client.socialId` | string | no | Client's social/business ID number (ת.ז. / ח.פ.) | | `currency` | string | yes | Document currency (currently only ILS supported) | | `docValueDate` | string | yes | Document value date | | `dueDate` | string | no | Payment due date (required for invoice, deal, offer) | | `title` | string | no | Document title (optional) | | `docLang` | string | yes | Document language | | `items` | array | yes | Document line items | | `items[].name` | string | yes | Item name/description | | `items[].quantity` | number | yes | Item quantity | | `items[].itemNetPrice` | number | yes | Item net price (before VAT) | | `items[].itemTotalPrice` | number | no | Item total price (calculated) | | `items[].itemSumNetTotalPrice` | number | no | Item sum net total price (quantity * itemNetPrice) | | `items[].itemCurrency` | string | yes | Item currency | | `items[].isNoItemVat` | boolean | no | VAT exempt flag (true = no VAT for this item) | | `bankDetails` | object | no | Bank account details for payment | | `bankDetails.bankName` | string | no | Bank name | | `bankDetails.branchNumber` | string | no | Branch number | | `bankDetails.accountNumber` | string | no | Account number | | `bankDetails.accountName` | string | no | Account holder name | | `bankDetails.IBAN` | string | no | IBAN number | | `subTotal` | number | no | Subtotal before discount | | `discount` | number | no | Discount amount | | `totalWithoutVatAmount` | number | no | Total amount without VAT | | `vatAmount` | number | no | VAT amount | | `totalAmount` | number | yes | Total amount including VAT | | `totalPaid` | number | no | Total amount paid (required for receipts) | | `originTaxDeduction` | number | no | Tax deduction at source (ניכוי מס במקור) | | `comment` | string | no | Document comments/notes | | `paymentCash` | object | no | Cash payment details | | `paymentCash.date` | string | yes | Payment date | | `paymentCash.amount` | number | yes | Payment amount | | `paymentCreditCard` | object | no | Credit card payment details | | `paymentCreditCard.date` | string | yes | Payment date | | `paymentCreditCard.amount` | number | yes | Payment amount | | `paymentCreditCard.last4Digits` | string | no | Last 4 digits of card | | `paymentBankTransfer` | object | no | Bank transfer payment details | | `paymentBankTransfer.date` | string | yes | Payment date | | `paymentBankTransfer.amount` | number | yes | Payment amount | | `paymentBankTransfer.bankNumber` | integer | no | Bank code | | `paymentBankTransfer.branchNumber` | integer | no | Branch number | | `paymentBankTransfer.accountNumber` | integer | no | Account number | | `paymentCheque` | object | no | Cheque payment details | | `paymentCheque.date` | string | yes | Cheque date | | `paymentCheque.receivedDate` | string | yes | Date cheque was received | | `paymentCheque.amount` | number | yes | Payment amount | | `paymentCheque.chequeNumber` | string | yes | Cheque number | | `paymentCheque.bankNumber` | integer | no | Bank code | | `paymentCheque.branchNumber` | integer | no | Branch number | | `paymentCheque.accountNumber` | integer | no | Account number | | `paymentEWallet` | object | no | E-wallet payment details (PayPal, Bit, etc.) | | `paymentEWallet.date` | string | yes | Payment date | | `paymentEWallet.amount` | number | yes | Payment amount | | `paymentEWallet.walletType` | string | yes | E-wallet type | | `payment` | object | no | Payment link settings (for invoice/deal) | | `payment.isEnabled` | boolean | no | Enable payment link | | `payment.clientEmail` | string | no | Email to send payment link to | | `payment.clientPhone` | string | no | Phone to send payment link to | | `callbacks` | object | no | Callback URLs for async notifications | | `callbacks.success` | array | no | URLs to call on success | | `callbacks.error` | array | no | URLs to call on error | ### Request example No example is documented; this template is generated from the fields — replace the placeholder values. ```json { "type": "", "client": { "name": "" }, "currency": "", "docValueDate": "", "dueDate": "", "title": "", "docLang": "<docLang>", "items": [], "bankDetails": {}, "subTotal": 0, "discount": 0, "totalWithoutVatAmount": 0, "vatAmount": 0, "totalAmount": 0, "totalPaid": 0, "originTaxDeduction": 0, "comment": "<comment>", "paymentCash": { "date": "<date>", "amount": 0 }, "paymentCreditCard": { "date": "<date>", "amount": 0 }, "paymentBankTransfer": { "date": "<date>", "amount": 0 }, "paymentCheque": { "date": "<date>", "receivedDate": "<receivedDate>", "amount": 0, "chequeNumber": "<chequeNumber>" }, "paymentEWallet": { "date": "<date>", "amount": 0, "walletType": "<walletType>" }, "payment": {}, "callbacks": {} } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/seller/api/documents/income/preview' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "type": "<type>", "client": { "name": "<name>" }, "currency": "<currency>", "docValueDate": "<docValueDate>", "docLang": "<docLang>", "items": [], "totalAmount": 0 }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/seller/api/documents/income/preview", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "type": "<type>", "client": { "name": "<name>" }, "currency": "<currency>", "docValueDate": "<docValueDate>", "docLang": "<docLang>", "items": [], "totalAmount": 0 }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/seller/api/documents/income/preview", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "type": "<type>", "client": { "name": "<name>", }, "currency": "<currency>", "docValueDate": "<docValueDate>", "docLang": "<docLang>", "items": [], "totalAmount": 0, }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "type": "<type>", "client": { "name": "<name>" }, "currency": "<currency>", "docValueDate": "<docValueDate>", "docLang": "<docLang>", "items": [], "totalAmount": 0 } BODY; $ch = curl_init('https://sandbox.payme.io/api/seller/api/documents/income/preview'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Preview generated successfully (success) | Field | Type | Description | | --- | --- | --- | | `previewUrl` | string | URL to preview the document (temporary) | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 401, "message": "Unauthorized", "error": "Unauthorized" } ``` - [Obtain access token](https://docs-staging.payme.io/keep/partners-api/gettoken): POST /oauth2/token — Obtain access token # Obtain access token - Sandbox: `POST https://sandbox.payme.io/api/oauth2/token` - Production: `POST https://live.payme.io/api/oauth2/token` ## Credentials - Request body field `client_secret` (required): Your client secret - Request body field `refresh_token` (optional): Required when grant_type is refresh_token Use this endpoint to obtain an access token using Client Credentials or to refresh an existing token. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/x-www-form-urlencoded` | Field | Type | Required | Description | | --- | --- | --- | --- | | `grant_type` | string | yes | The grant type | | `scope` | string | no | Space-separated scopes | | `client_id` | string | yes | Your client ID | | `client_secret` | string | yes | Your client secret | | `refresh_token` | string | no | Required when grant_type is refresh_token | ### Request example ```json { "grant_type": "client_credentials", "scope": "partner-api", "client_id": "your-client-id", "client_secret": "your-client-secret" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/oauth2/token' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'scope=partner-api' \ --data-urlencode 'client_id=your-client-id' \ --data-urlencode 'client_secret=your-client-secret' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/oauth2/token", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", }, body: new URLSearchParams({ "grant_type": "client_credentials", "scope": "partner-api", "client_id": "your-client-id", "client_secret": "your-client-secret" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/oauth2/token", data={ "grant_type": "client_credentials", "scope": "partner-api", "client_id": "your-client-id", "client_secret": "your-client-secret", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/oauth2/token'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/x-www-form-urlencoded', ], CURLOPT_POSTFIELDS => http_build_query([ 'grant_type' => 'client_credentials', 'scope' => 'partner-api', 'client_id' => 'your-client-id', 'client_secret' => 'your-client-secret', ]), ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Successful authentication (success) | Field | Type | Description | | --- | --- | --- | | `token_type` | string | | | `access_token` | string | JWT access token | | `refresh_token` | string | Refresh token | | `expires_in` | integer | Access token lifetime in seconds | | `refresh_expires_in` | integer | Refresh token lifetime in seconds | | `scope` | string | Granted scopes | ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | - [Create seller](https://docs-staging.payme.io/keep/partners-api/createseller): POST /public/sellers/create — Create seller # Create seller - Sandbox: `POST https://sandbox.payme.io/api/public/sellers/create` - Production: `POST https://live.payme.io/api/public/sellers/create` ## Credentials - Header `Authorization: Bearer <token>` Register a new seller account with Israeli business compliance validation. Includes validation for Israeli ID numbers, business registration, and bank account details. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `firstName` | string | yes | Seller's first name | | `lastName` | string | yes | Seller's last name | | `email` | string | yes | Seller's primary email address (used for login) | | `contactEmail` | string | no | Business contact email address | | `password` | string | yes | Account password | | `phone` | string | yes | Phone number in international format | | `businessName` | string | yes | Legal business name | | `businessType` | integer | yes | Israeli business type classification | | `businessNumber` | string | yes | Israeli business registration number (ח.פ. / עוסק מורשה) | | `socialId` | string | yes | Israeli ID number (תעודת זהות) | | `industryClassification` | string | no | Industry classification code (optional) | | `bankId` | string | no | Israeli bank code (optional) | | `accountNumber` | string | no | Bank account number (optional) | | `branchNumber` | string | no | Bank branch number (optional) | | `logo` | string | no | Business logo as base64 encoded data URI (optional) | ### Request example ```json { "firstName": "David", "lastName": "Cohen", "email": "david.cohen@example.com", "contactEmail": "business@cohenelectronics.co.il", "password": "securePassword123", "phone": "0500000009", "businessName": "Cohen Electronics Ltd", "businessType": 1, "businessNumber": "330988015", "socialId": "336907282", "industryClassification": "12", "bankId": "12", "accountNumber": "123456789012345", "branchNumber": "123", "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/public/sellers/create' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "firstName": "David", "lastName": "Cohen", "email": "david.cohen@example.com", "contactEmail": "business@cohenelectronics.co.il", "password": "securePassword123", "phone": "0500000009", "businessName": "Cohen Electronics Ltd", "businessType": 1, "businessNumber": "330988015", "socialId": "336907282", "industryClassification": "12", "bankId": "12", "accountNumber": "123456789012345", "branchNumber": "123", "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/public/sellers/create", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "firstName": "David", "lastName": "Cohen", "email": "david.cohen@example.com", "contactEmail": "business@cohenelectronics.co.il", "password": "securePassword123", "phone": "0500000009", "businessName": "Cohen Electronics Ltd", "businessType": 1, "businessNumber": "330988015", "socialId": "336907282", "industryClassification": "12", "bankId": "12", "accountNumber": "123456789012345", "branchNumber": "123", "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/public/sellers/create", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "firstName": "David", "lastName": "Cohen", "email": "david.cohen@example.com", "contactEmail": "business@cohenelectronics.co.il", "password": "securePassword123", "phone": "0500000009", "businessName": "Cohen Electronics Ltd", "businessType": 1, "businessNumber": "330988015", "socialId": "336907282", "industryClassification": "12", "bankId": "12", "accountNumber": "123456789012345", "branchNumber": "123", "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...", }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "firstName": "David", "lastName": "Cohen", "email": "david.cohen@example.com", "contactEmail": "business@cohenelectronics.co.il", "password": "securePassword123", "phone": "0500000009", "businessName": "Cohen Electronics Ltd", "businessType": 1, "businessNumber": "330988015", "socialId": "336907282", "industryClassification": "12", "bankId": "12", "accountNumber": "123456789012345", "branchNumber": "123", "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." } BODY; $ch = curl_init('https://sandbox.payme.io/api/public/sellers/create'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 201 — Seller created successfully (success) | Field | Type | Description | | --- | --- | --- | | `payload` | object | | | `payload.sellerId` | string | Newly created seller's UUID | ```json { "payload": { "sellerId": "9a5e7898-067e-4c0c-a50f-5f8d83e7c686" } } ``` ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` - [Get seller](https://docs-staging.payme.io/keep/partners-api/getsellerbyid): GET /public/sellers/{sellerId} — Get seller # Get seller - Sandbox: `GET https://sandbox.payme.io/api/public/sellers/{sellerId}` - Production: `GET https://live.payme.io/api/public/sellers/{sellerId}` ## Credentials - Header `Authorization: Bearer <token>` Retrieve seller information by UUID. Returns seller details including business information and timestamps. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sellerId` | path | string | yes | Seller UUID | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/public/sellers/<sellerId>' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/public/sellers/<sellerId>", { method: "GET", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/public/sellers/<sellerId>", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/public/sellers/<sellerId>'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Seller retrieved successfully (success) | Field | Type | Description | | --- | --- | --- | | `payload` | object | | | `payload.id` | string | Seller UUID | | `payload.firstName` | string | Seller's first name | | `payload.lastName` | string | Seller's last name | | `payload.email` | string | Primary email address | | `payload.contactEmail` | string | Business contact email | | `payload.phone` | string | Phone number | | `payload.businessName` | string | Legal business name | | `payload.businessType` | integer | Israeli business type classification | | `payload.businessNumber` | string | Israeli business registration number | | `payload.socialId` | string | Israeli ID number | | `payload.createdAt` | string | Account creation timestamp | | `payload.updatedAt` | string | Last update timestamp | ```json { "payload": { "id": "97bdce55-b2a2-450d-8d29-1dcf6bbcc419", "firstName": "David", "lastName": "Cohen", "email": "david.cohen@example.com", "contactEmail": "business@cohenelectronics.co.il", "phone": "0500000009", "businessName": "Cohen Electronics Ltd", "businessType": 1, "businessNumber": "330988015", "socialId": "336907282", "createdAt": "2026-01-22T09:19:54.264Z", "updatedAt": "2026-01-22T09:19:54.403Z" } } ``` ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` ### 404 — Seller not found (error) - [Get available plans](https://docs-staging.payme.io/keep/partners-api/getpartnerplans): GET /public/plans — Get available plans # Get available plans - Sandbox: `GET https://sandbox.payme.io/api/public/plans` - Production: `GET https://live.payme.io/api/public/plans` ## Credentials - Header `Authorization: Bearer <token>` Retrieve all available plans for the authenticated partner. Free trial and No Cost plans are excluded. ## Parameters This endpoint takes no path, query or header parameters. ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/public/plans' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/public/plans", { method: "GET", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/public/plans", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/public/plans'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Plans retrieved successfully (success) | Field | Type | Description | | --- | --- | --- | | `payload` | object | | | `payload.items` | array | | | `payload.items[].id` | string | Unique identifier for the plan | | `payload.items[].name` | string | Display name of the plan | | `payload.items[].price` | number | Plan price in the partner's currency | ```json { "payload": { "items": [ { "id": "90abd0eb-c374-4a2b-829e-681fba0cdbee", "name": "PaturBasic", "price": 39.9 }, { "id": "29b1f228-c779-4de3-bb99-aa8e34f29ddc", "name": "PaturPremium", "price": 105 }, { "id": "3d653770-6376-40a5-b98e-17c598f1d7d8", "name": "MursheBasic", "price": 39.9 }, { "id": "c2249657-fe98-49ae-950a-3bdf28cdbfee", "name": "MurshePremium", "price": 228 } ] } } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` - [List expenses](https://docs-staging.payme.io/keep/partners-api/listpublicexpenses): GET /public/expenses — List expenses # List expenses - Sandbox: `GET https://sandbox.payme.io/api/public/expenses` - Production: `GET https://live.payme.io/api/public/expenses` ## Credentials - Header `Authorization: Bearer <token>` Retrieve expense records for a seller with optional date filtering and pagination. **Seller identification:** Same rules as the upload endpoint — provide `sellerId` alone, or `socialId` + `email`. **Date filtering:** `valueDateStart` and `valueDateEnd` filter on the expense value date (not creation date). Dates must be ISO format (`YYYY-MM-DD`) and `valueDateStart` must be ≤ `valueDateEnd`. **Pagination:** Defaults to `page=0`, `limit=10`. Maximum `limit=500`. Expenses not found are silently omitted. Order of returned items is not guaranteed. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sellerId` | query | string | no | Seller UUID (use this OR socialId + email) | | `socialId` | query | string | no | Seller social/business ID number (must be paired with email) | | `email` | query | string | no | Seller email address (must be paired with socialId) | | `valueDateStart` | query | string | no | Filter expenses from this value date (inclusive, YYYY-MM-DD) | | `valueDateEnd` | query | string | no | Filter expenses up to this value date (inclusive, YYYY-MM-DD) | | `page` | query | integer | no | Page number (zero-based) | | `limit` | query | integer | no | Items per page | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/public/expenses' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/public/expenses", { method: "GET", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/public/expenses", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/public/expenses'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Expenses retrieved successfully (success) | Field | Type | Description | | --- | --- | --- | | `payload` | object | | | `payload.total` | integer | Total number of matching expenses | | `payload.page` | integer | Current page number | | `payload.limit` | integer | Items per page | | `payload.items` | array | | | `payload.items[].id` | string | Expense record UUID | | `payload.items[].capturedDate` | string | Timestamp when the expense was captured | | `payload.items[].valueDate` | string | Expense value date | | `payload.items[].sellerId` | string | Seller UUID | | `payload.items[].totalAmount` | number | Total expense amount | | `payload.items[].vatAmount` | number | VAT amount | | `payload.items[].currency` | string | Currency code | | `payload.items[].bookkeeperRevisionStatus` | string | Bookkeeper revision status | | `payload.items[].docRegulationId` | string | Document regulation ID | | `payload.items[].docType` | string | Document type | ```json { "payload": { "total": 1, "page": 0, "limit": 10, "items": [ { "id": "50c6b740-874a-4f54-9669-9a60024be4ed", "capturedDate": "2024-06-20T09:35:36.326Z", "valueDate": "2024-06-20T00:00:00.000Z", "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "totalAmount": 15200, "vatAmount": 2209, "currency": "ILS", "bookkeeperRevisionStatus": "approved-and-classified", "docRegulationId": "1262", "docType": "invrec" } ] } } ``` ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` ### 422 — Unprocessable Entity (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 422, "message": "Bad seller configuration. Please contact support!", "error": "Unprocessable Entity" } ``` - [Upload expense document](https://docs-staging.payme.io/keep/partners-api/uploadpublicexpense): POST /public/expenses — Upload expense document # Upload expense document - Sandbox: `POST https://sandbox.payme.io/api/public/expenses` - Production: `POST https://live.payme.io/api/public/expenses` ## Credentials - Header `Authorization: Bearer <token>` Upload an expense document for a seller via a publicly accessible file URL. **Seller identification:** Exactly one method must be used per request: - **Option A:** `sellerId` (UUID) - **Option B:** `socialId` + `email` Providing both or neither returns HTTP 400. **Supported file formats:** PDF, JPG, PNG. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `sellerId` | string | no | Seller UUID (use this OR socialId + email, not both) | | `socialId` | string | no | Seller social/business ID number (must be paired with email) | | `email` | string | no | Seller email address (must be paired with socialId) | | `file` | string | yes | Publicly accessible URL of the expense document (PDF, JPG, or PNG) | ### Request example ```json { "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "file": "https://i0.wp.com/avatar-management--avatars.us-west-2.prod.public.atl-paas.net/initials/AK-3.png?ssl=1" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/public/expenses' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "file": "https://i0.wp.com/avatar-management--avatars.us-west-2.prod.public.atl-paas.net/initials/AK-3.png?ssl=1" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/public/expenses", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "file": "https://i0.wp.com/avatar-management--avatars.us-west-2.prod.public.atl-paas.net/initials/AK-3.png?ssl=1" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/public/expenses", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "file": "https://i0.wp.com/avatar-management--avatars.us-west-2.prod.public.atl-paas.net/initials/AK-3.png?ssl=1", }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "file": "https://i0.wp.com/avatar-management--avatars.us-west-2.prod.public.atl-paas.net/initials/AK-3.png?ssl=1" } BODY; $ch = curl_init('https://sandbox.payme.io/api/public/expenses'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Expense document uploaded successfully (success) | Field | Type | Description | | --- | --- | --- | | `payload` | object | | | `payload.id` | string | Unique identifier for the created expense record | | `payload.capturedDate` | string | Timestamp when the expense was captured | | `payload.sellerId` | string | Resolved seller UUID | ```json { "payload": { "id": "a3504d9d-c187-48a0-8274-bea3b48e5663", "capturedDate": "2026-02-02T13:05:54.170Z", "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982" } } ``` ### 400 — Validation error (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "socialId must be a number conforming to the specified constraints", "socialId should not be empty", "email must be an email", "email should not be empty", "sellerId must be a UUID", "sellerId should not be empty" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` ### 422 — Unprocessable entity — seller not resolved or file URL unreachable (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 422, "message": "Could not resolve seller", "error": "Unprocessable Entity" } ``` - [Update expense](https://docs-staging.payme.io/keep/partners-api/updatepublicexpense): PATCH /public/expenses/{expenseId} — Update expense # Update expense - Sandbox: `PATCH https://sandbox.payme.io/api/public/expenses/{expenseId}` - Production: `PATCH https://live.payme.io/api/public/expenses/{expenseId}` ## Credentials - Header `Authorization: Bearer <token>` Partially update an existing expense document. Only expenses with `pending` status can be updated. The partner can only update expenses within their own scope, and the expense must belong to the provided `sellerId`. **Immutable fields** (rejected if provided): `id`, `uid`, `partnerId`, `createdAt`, `updatedAt`, `updatedBy`, `seller`, `supplierSnapshot`, `vatReportSnapshot`, `isAbleToAutoApprove`, `status`. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `expenseId` | path | string | yes | Expense UUID to update | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `sellerId` | string | no | Seller UUID the expense belongs to | | `valueDate` | string | no | Expense value date (ISO 8601 UTC) | | `totalAmount` | number | no | Total expense amount | | `vatAmount` | number | no | VAT amount (must be ≤ totalAmount) | | `currency` | string | no | Currency code | | `captureMethod` | string | no | How the expense was captured (e.g., 'manual') | | `docType` | string | no | Document type | | `docRegulationId` | string | no | Document regulation ID | | `docLocatorNumber` | string | no | Document locator number | | `classification` | integer | no | Classification ID (must be valid for seller/partner context) | | `deductibleIncomeTaxPercent` | integer | no | Deductible income tax percentage (0–100) | | `deductibleVatPercent` | integer | no | Deductible VAT percentage (0–100) | | `assetVatRefundPercent` | integer | no | Asset VAT refund percentage (0–100) | | `comment` | string | no | Optional partner note | | `supplierName` | string | no | Supplier name | | `supplierVatId` | string | no | Supplier VAT ID | | `vatAllocationNumber` | string | no | VAT allocation number (nullable) | | `isExcludeFromPCN` | boolean | no | Whether to exclude from PCN report | ### Request example ```json { "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "valueDate": "2025-10-28T00:00:00.000Z", "totalAmount": 15000, "vatAmount": 2288, "currency": "ILS", "captureMethod": "manual", "docType": "invrec", "docRegulationId": "5132277", "docLocatorNumber": "85712", "classification": 6, "deductibleIncomeTaxPercent": 100, "deductibleVatPercent": 100, "assetVatRefundPercent": 0, "comment": "Optional partner note", "supplierName": "Supplier Ltd", "supplierVatId": "123456789", "vatAllocationNumber": null, "isExcludeFromPCN": false } ``` ## Code samples ### curl ```bash curl -X PATCH 'https://sandbox.payme.io/api/public/expenses/<expenseId>' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "valueDate": "2025-10-28T00:00:00.000Z", "totalAmount": 15000, "vatAmount": 2288, "currency": "ILS", "captureMethod": "manual", "docType": "invrec", "docRegulationId": "5132277", "docLocatorNumber": "85712", "classification": 6, "deductibleIncomeTaxPercent": 100, "deductibleVatPercent": 100, "assetVatRefundPercent": 0, "comment": "Optional partner note", "supplierName": "Supplier Ltd", "supplierVatId": "123456789", "vatAllocationNumber": null, "isExcludeFromPCN": false }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/public/expenses/<expenseId>", { method: "PATCH", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "valueDate": "2025-10-28T00:00:00.000Z", "totalAmount": 15000, "vatAmount": 2288, "currency": "ILS", "captureMethod": "manual", "docType": "invrec", "docRegulationId": "5132277", "docLocatorNumber": "85712", "classification": 6, "deductibleIncomeTaxPercent": 100, "deductibleVatPercent": 100, "assetVatRefundPercent": 0, "comment": "Optional partner note", "supplierName": "Supplier Ltd", "supplierVatId": "123456789", "vatAllocationNumber": null, "isExcludeFromPCN": false }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.patch( "https://sandbox.payme.io/api/public/expenses/<expenseId>", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "valueDate": "2025-10-28T00:00:00.000Z", "totalAmount": 15000, "vatAmount": 2288, "currency": "ILS", "captureMethod": "manual", "docType": "invrec", "docRegulationId": "5132277", "docLocatorNumber": "85712", "classification": 6, "deductibleIncomeTaxPercent": 100, "deductibleVatPercent": 100, "assetVatRefundPercent": 0, "comment": "Optional partner note", "supplierName": "Supplier Ltd", "supplierVatId": "123456789", "vatAllocationNumber": None, "isExcludeFromPCN": False, }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "valueDate": "2025-10-28T00:00:00.000Z", "totalAmount": 15000, "vatAmount": 2288, "currency": "ILS", "captureMethod": "manual", "docType": "invrec", "docRegulationId": "5132277", "docLocatorNumber": "85712", "classification": 6, "deductibleIncomeTaxPercent": 100, "deductibleVatPercent": 100, "assetVatRefundPercent": 0, "comment": "Optional partner note", "supplierName": "Supplier Ltd", "supplierVatId": "123456789", "vatAllocationNumber": null, "isExcludeFromPCN": false } BODY; $ch = curl_init('https://sandbox.payme.io/api/public/expenses/<expenseId>'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Expense updated successfully (success) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | 0 for success | | `payload` | object | | | `payload.expenseId` | string | Expense UUID | | `payload.sellerId` | string | Seller UUID | | `payload.valueDate` | string | Expense value date | | `payload.totalAmount` | number | Total expense amount | | `payload.vatAmount` | number | VAT amount | | `payload.currency` | string | Currency code | | `payload.docType` | string | Document type | | `payload.docRegulationId` | string | Document regulation ID | | `payload.docLocatorNumber` | string | Document locator number | | `payload.classification` | integer | Classification ID | | `payload.capturedDate` | string | Timestamp when expense was captured | | `payload.updatedAt` | string | Last update timestamp | ```json { "statusCode": 0, "payload": { "expenseId": "edc855f7-cb7c-4d82-8c26-baf5c296d391", "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "valueDate": "2025-10-28T00:00:00.000Z", "totalAmount": 15000, "vatAmount": 2288, "currency": "ILS", "docType": "invrec", "docRegulationId": "5132277", "docLocatorNumber": "85712", "classification": 6, "capturedDate": "2025-10-28T09:13:37.423Z", "updatedAt": "2025-10-28T09:16:33.795Z" } } ``` ### 400 — Validation error (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | 1 for error | | `payload` | object | | | `payload.message` | string | Error message | | `payload.additionalInfo` | object | Field-level validation details | ```json { "statusCode": 1, "payload": { "message": "Invalid request", "additionalInfo": { "valueDate": "Must be a valid ISO datetime", "totalAmount": "Must be >= 0" } } } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` ### 403 — Partner is not authorized to update this expense (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | 1 for error | | `payload` | object | | | `payload.message` | string | Error message | | `payload.additionalInfo` | object | Field-level validation details | ```json { "statusCode": 1, "payload": { "message": "Not allowed" } } ``` ### 404 — Expense or seller not found (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | 1 for error | | `payload` | object | | | `payload.message` | string | Error message | | `payload.additionalInfo` | object | Field-level validation details | ```json { "statusCode": 1, "payload": { "message": "Expense not found" } } ``` ### 409 — Update conflict (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | 1 for error | | `payload` | object | | | `payload.message` | string | Error message | | `payload.additionalInfo` | object | Field-level validation details | ```json { "statusCode": 1, "payload": { "message": "Update conflict" } } ``` ### 429 — Rate limit exceeded (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | 1 for error | | `payload` | object | | | `payload.message` | string | Error message | | `payload.additionalInfo` | object | Field-level validation details | ```json { "statusCode": 1, "payload": { "message": "Rate limit exceeded" } } ``` - [Update seller](https://docs-staging.payme.io/keep/partners-api/updatesellerbyid): PUT /public/sellers/{sellerId}/update — Update seller # Update seller - Sandbox: `PUT https://sandbox.payme.io/api/public/sellers/{sellerId}/update` - Production: `PUT https://live.payme.io/api/public/sellers/{sellerId}/update` ## Credentials - Header `Authorization: Bearer <token>` Update existing seller details. Supports partial updates with Israeli compliance re-validation for modified fields. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sellerId` | path | string | yes | Seller UUID | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `firstName` | string | no | Seller's first name | | `lastName` | string | no | Seller's last name | | `email` | string | no | Primary email address | | `contactEmail` | string | no | Business contact email | | `phone` | string | no | Phone number in international format | | `businessName` | string | no | Legal business name | | `businessType` | integer | no | Israeli business type classification | | `businessNumber` | string | no | Israeli business registration number | | `socialId` | string | no | Israeli ID number | | `bankId` | string | no | Israeli bank code | | `accountNumber` | string | no | Bank account number | | `branchNumber` | string | no | Bank branch number | | `logo` | string | no | Business logo as base64 encoded data URI | ### Request example ```json { "firstName": "David", "lastName": "Cohen", "email": "david.cohen1115@example.com", "contactEmail": "business@cohenelectronics.co.il", "phone": "0500000008", "businessName": "Cohen Electronics", "businessType": 2, "businessNumber": "330988015", "socialId": "336907282", "bankId": "12", "accountNumber": "123456789012345", "branchNumber": "123", "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." } ``` ## Code samples ### curl ```bash curl -X PUT 'https://sandbox.payme.io/api/public/sellers/<sellerId>/update' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "firstName": "David", "lastName": "Cohen", "email": "david.cohen1115@example.com", "contactEmail": "business@cohenelectronics.co.il", "phone": "0500000008", "businessName": "Cohen Electronics", "businessType": 2, "businessNumber": "330988015", "socialId": "336907282", "bankId": "12", "accountNumber": "123456789012345", "branchNumber": "123", "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/public/sellers/<sellerId>/update", { method: "PUT", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "firstName": "David", "lastName": "Cohen", "email": "david.cohen1115@example.com", "contactEmail": "business@cohenelectronics.co.il", "phone": "0500000008", "businessName": "Cohen Electronics", "businessType": 2, "businessNumber": "330988015", "socialId": "336907282", "bankId": "12", "accountNumber": "123456789012345", "branchNumber": "123", "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.put( "https://sandbox.payme.io/api/public/sellers/<sellerId>/update", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "firstName": "David", "lastName": "Cohen", "email": "david.cohen1115@example.com", "contactEmail": "business@cohenelectronics.co.il", "phone": "0500000008", "businessName": "Cohen Electronics", "businessType": 2, "businessNumber": "330988015", "socialId": "336907282", "bankId": "12", "accountNumber": "123456789012345", "branchNumber": "123", "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...", }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "firstName": "David", "lastName": "Cohen", "email": "david.cohen1115@example.com", "contactEmail": "business@cohenelectronics.co.il", "phone": "0500000008", "businessName": "Cohen Electronics", "businessType": 2, "businessNumber": "330988015", "socialId": "336907282", "bankId": "12", "accountNumber": "123456789012345", "branchNumber": "123", "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." } BODY; $ch = curl_init('https://sandbox.payme.io/api/public/sellers/<sellerId>/update'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'PUT', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Seller updated successfully (success) ```json {} ``` ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` ### 404 — Seller not found (error) - [Get external URLs for seller](https://docs-staging.payme.io/keep/partners-api/getsellerexternalurls): GET /partner/api/sellers/external-urls — Get external URLs for seller # Get external URLs for seller - Sandbox: `GET https://sandbox.payme.io/api/partner/api/sellers/external-urls` - Production: `GET https://live.payme.io/api/partner/api/sellers/external-urls` ## Credentials - Header `Authorization: Bearer <token>` Retrieve external URLs for a seller by ID, social ID, or email ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | query | string | no | Seller ID (MPL format) | | `socialId` | query | string | no | Seller social/business ID number | | `email` | query | string | no | Seller email address | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/partner/api/sellers/external-urls' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/partner/api/sellers/external-urls", { method: "GET", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/partner/api/sellers/external-urls", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/partner/api/sellers/external-urls'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Successful response (success) | Field | Type | Description | | --- | --- | --- | | `creditCardUrl` | string | | | `financeProfileUrl` | string | | | `paymentsOnboardingUrl` | string | | | `documentsUploadUrl` | string | | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` - [Get finance profile URL](https://docs-staging.payme.io/keep/partners-api/getsellerfinanceprofile): GET /partner/api/sellers/finance-profile — Get finance profile URL # Get finance profile URL - Sandbox: `GET https://sandbox.payme.io/api/partner/api/sellers/finance-profile` - Production: `GET https://live.payme.io/api/partner/api/sellers/finance-profile` ## Credentials - Header `Authorization: Bearer <token>` Retrieve the finance profile URL for a seller ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | query | string | no | Seller ID (MPL format) | | `socialId` | query | string | no | Seller social/business ID number | | `email` | query | string | no | Seller email address | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/partner/api/sellers/finance-profile' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/partner/api/sellers/finance-profile", { method: "GET", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/partner/api/sellers/finance-profile", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/partner/api/sellers/finance-profile'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Successful response (success) | Field | Type | Description | | --- | --- | --- | | `url` | string | | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` - [Set seller billing plan](https://docs-staging.payme.io/keep/partners-api/setsellerplan): POST /partner/api/sellers/set-plan — Set seller billing plan # Set seller billing plan - Sandbox: `POST https://sandbox.payme.io/api/partner/api/sellers/set-plan` - Production: `POST https://live.payme.io/api/partner/api/sellers/set-plan` ## Credentials - Header `Authorization: Bearer <token>` Assign a billing plan to a seller with payer-based activation flow. **Payer modes:** - `partner` — Plan is activated immediately (no credit card required). - `seller` — If the seller already has a credit card on file, the plan is activated immediately. If not, a credit card URL is returned and the plan activates once the seller completes payment. > **Note:** `callBackUrl` is not yet implemented and will be ignored. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `sellerId` | string | yes | Seller identifier (UUID, MPL ID, email, or socialId) | | `planId` | string | yes | Plan identifier to assign | | `payer` | string | yes | Who pays for the plan. 'partner' = immediate activation, 'seller' = may require credit card. | ### Request example ```json { "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "planId": "3d653770-6376-40a5-b98e-17c598f1d7d8", "payer": "partner" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/partner/api/sellers/set-plan' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "planId": "3d653770-6376-40a5-b98e-17c598f1d7d8", "payer": "partner" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/partner/api/sellers/set-plan", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "planId": "3d653770-6376-40a5-b98e-17c598f1d7d8", "payer": "partner" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/partner/api/sellers/set-plan", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "planId": "3d653770-6376-40a5-b98e-17c598f1d7d8", "payer": "partner", }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "sellerId": "a6a9700f-8571-4f9b-bfae-ba943fb96982", "planId": "3d653770-6376-40a5-b98e-17c598f1d7d8", "payer": "partner" } BODY; $ch = curl_init('https://sandbox.payme.io/api/partner/api/sellers/set-plan'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Plan set successfully (success) | Field | Type | Description | | --- | --- | --- | | `payload` | object | | | `payload.status` | string | 'activated' when plan is active immediately, 'pending' when seller must complete payment first. | | `payload.message` | string | Human-readable message (present when status is 'pending') | | `payload.creditCardUrl` | string | URL for seller to submit credit card details (present when status is 'pending') | ```json { "payload": { "status": "activated" } } ``` ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` ### 404 — Seller or plan not found (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 404, "message": "Seller not found", "error": "Not Found" } ``` ### 422 — Unprocessable Entity (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 422, "message": "Bad seller configuration. Please contact support!", "error": "Unprocessable Entity" } ``` - [Create seller comment](https://docs-staging.payme.io/keep/partners-api/createsellercomment): POST /partner/api/sellers/comment — Create seller comment # Create seller comment - Sandbox: `POST https://sandbox.payme.io/api/partner/api/sellers/comment` - Production: `POST https://live.payme.io/api/partner/api/sellers/comment` ## Credentials - Header `Authorization: Bearer <token>` Add a comment to a seller's record ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `sellerId` | string | yes | Seller ID | | `commentCategory` | string | no | Comment category | | `commentText` | string | yes | Comment text | ### Request example No example is documented; this template is generated from the fields — replace the placeholder values. ```json { "sellerId": "<sellerId>", "commentCategory": "<commentCategory>", "commentText": "<commentText>" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/partner/api/sellers/comment' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "sellerId": "<sellerId>", "commentText": "<commentText>" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/partner/api/sellers/comment", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "sellerId": "<sellerId>", "commentText": "<commentText>" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/partner/api/sellers/comment", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "sellerId": "<sellerId>", "commentText": "<commentText>", }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "sellerId": "<sellerId>", "commentText": "<commentText>" } BODY; $ch = curl_init('https://sandbox.payme.io/api/partner/api/sellers/comment'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 201 — Comment created successfully (success) ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` - [List income documents](https://docs-staging.payme.io/keep/partners-api/listincomedocuments): GET /partner/api/documents/income — List income documents # List income documents - Sandbox: `GET https://sandbox.payme.io/api/partner/api/documents/income` - Production: `GET https://live.payme.io/api/partner/api/documents/income` ## Credentials - Header `Authorization: Bearer <token>` Retrieve a list of income documents for a seller ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sellerPaymeId` | query | string | no | Seller PayMe ID | | `sellerId` | query | string | no | Seller ID | | `docNum` | query | string | no | Document number filter | | `page` | query | integer | no | Page number | | `limit` | query | integer | no | Items per page | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/partner/api/documents/income' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/partner/api/documents/income", { method: "GET", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/partner/api/documents/income", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/partner/api/documents/income'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Successful response (success) | Field | Type | Description | | --- | --- | --- | | `payload` | object | | | `payload.page` | integer | | | `payload.limit` | integer | | | `payload.total` | integer | | | `payload.items` | array | | | `payload.items[].id` | string | | | `payload.items[].docType` | string | | | `payload.items[].docNumber` | string | | | `payload.items[].valueDate` | string | | | `payload.items[].totalAmount` | number | | | `payload.items[].vatAmount` | number | | | `payload.items[].currency` | string | | | `payload.items[].status` | string | | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` - [Create manual income document](https://docs-staging.payme.io/keep/partners-api/createmanualincomedocument): POST /partner/api/documents/income/manual — Create manual income document # Create manual income document - Sandbox: `POST https://sandbox.payme.io/api/partner/api/documents/income/manual` - Production: `POST https://live.payme.io/api/partner/api/documents/income/manual` ## Credentials - Header `Authorization: Bearer <token>` Create a new income document manually ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_email` | string | no | Seller's email address | | `seller_social_id_number` | string | no | Seller's social/business ID number | | `doc_type` | string | yes | Document type | | `value_date` | string | yes | Document value date | | `due_date` | string | no | Payment due date (required for invoice, deal, offer) | | `currency` | string | yes | Document currency | | `doc_language` | string | yes | Document language | | `client_name` | string | no | Client/customer name | | `client_email` | string | no | Client email | | `client_phone` | string | no | Client phone | | `items` | array | yes | Document line items | | `items[].name` | string | yes | Item name | | `items[].quantity` | number | yes | Item quantity | | `items[].item_net_price` | number | yes | Item net price (before VAT) | | `items[].item_currency` | string | yes | Item currency | | `items[].item_total_price` | number | no | Item total price | | `items[].is_no_item_vat` | boolean | no | VAT exempt flag (true = no VAT) | | `total_amount` | number | yes | Total amount including VAT | | `vat_amount` | number | no | VAT amount | | `total_without_vat` | number | no | Total amount without VAT | | `discount` | number | no | Discount amount | | `comment` | string | no | Document comments | | `origin_tax_deduction` | number | no | Tax deduction at source | | `callbacks` | object | no | Callback URLs for async notifications | | `callbacks.success` | array | no | URLs to call on success | | `callbacks.error` | array | no | URLs to call on error | | `payment_cash` | object | no | | | `payment_cash.date` | string | yes | Payment date | | `payment_cash.amount` | number | yes | Payment amount | | `payment_credit_card` | object | no | | | `payment_credit_card.date` | string | yes | Payment date | | `payment_credit_card.amount` | number | yes | Payment amount | | `payment_credit_card.last4Digits` | string | no | Last 4 digits of card | | `payment_bank_transfer` | object | no | | | `payment_bank_transfer.date` | string | yes | Payment date | | `payment_bank_transfer.amount` | number | yes | Payment amount | | `payment_bank_transfer.bankNumber` | integer | no | Bank code | | `payment_bank_transfer.branchNumber` | integer | no | Branch number | | `payment_bank_transfer.accountNumber` | integer | yes | Account number | | `payment_cheque` | object | no | | | `payment_cheque.date` | string | yes | Payment date | | `payment_cheque.receivedDate` | string | yes | Cheque received date | | `payment_cheque.amount` | number | yes | Payment amount | | `payment_cheque.chequeNumber` | number | yes | Cheque number | | `payment_cheque.bankNumber` | integer | no | Bank code | | `payment_cheque.branchNumber` | integer | no | Branch number | | `payment_cheque.accountNumber` | integer | no | Account number | ### Request example ```json { "seller_email": "seller@example.com", "seller_social_id_number": "123456789", "doc_type": "deal", "value_date": "2024-01-15 00:00:00", "currency": "ILS", "doc_language": "he", "client_name": "John Doe", "client_email": "john@example.com", "items": [ { "name": "Service", "quantity": 1, "item_net_price": 1000, "item_currency": "ILS", "is_no_item_vat": false } ], "total_amount": 1170, "vat_amount": 170, "total_without_vat": 1000 } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/partner/api/documents/income/manual' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "seller_email": "seller@example.com", "seller_social_id_number": "123456789", "doc_type": "deal", "value_date": "2024-01-15 00:00:00", "currency": "ILS", "doc_language": "he", "client_name": "John Doe", "client_email": "john@example.com", "items": [ { "name": "Service", "quantity": 1, "item_net_price": 1000, "item_currency": "ILS", "is_no_item_vat": false } ], "total_amount": 1170, "vat_amount": 170, "total_without_vat": 1000 }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/partner/api/documents/income/manual", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "seller_email": "seller@example.com", "seller_social_id_number": "123456789", "doc_type": "deal", "value_date": "2024-01-15 00:00:00", "currency": "ILS", "doc_language": "he", "client_name": "John Doe", "client_email": "john@example.com", "items": [ { "name": "Service", "quantity": 1, "item_net_price": 1000, "item_currency": "ILS", "is_no_item_vat": false } ], "total_amount": 1170, "vat_amount": 170, "total_without_vat": 1000 }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/partner/api/documents/income/manual", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "seller_email": "seller@example.com", "seller_social_id_number": "123456789", "doc_type": "deal", "value_date": "2024-01-15 00:00:00", "currency": "ILS", "doc_language": "he", "client_name": "John Doe", "client_email": "john@example.com", "items": [ { "name": "Service", "quantity": 1, "item_net_price": 1000, "item_currency": "ILS", "is_no_item_vat": False, }, ], "total_amount": 1170, "vat_amount": 170, "total_without_vat": 1000, }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "seller_email": "seller@example.com", "seller_social_id_number": "123456789", "doc_type": "deal", "value_date": "2024-01-15 00:00:00", "currency": "ILS", "doc_language": "he", "client_name": "John Doe", "client_email": "john@example.com", "items": [ { "name": "Service", "quantity": 1, "item_net_price": 1000, "item_currency": "ILS", "is_no_item_vat": false } ], "total_amount": 1170, "vat_amount": 170, "total_without_vat": 1000 } BODY; $ch = curl_init('https://sandbox.payme.io/api/partner/api/documents/income/manual'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 201 — Document created (success) | Field | Type | Description | | --- | --- | --- | | `id` | string | Document ID | | `url` | string | Document URL | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` - [Setup tax authority for seller](https://docs-staging.payme.io/keep/partners-api/setuptaxauthority): POST /partner/api/tax-authority/setup — Setup tax authority for seller # Setup tax authority for seller - Sandbox: `POST https://sandbox.payme.io/api/partner/api/tax-authority/setup` - Production: `POST https://live.payme.io/api/partner/api/tax-authority/setup` ## Credentials - Header `Authorization: Bearer <token>` Configure tax authority integration for a seller ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `seller_email` | string | yes | Seller email | | `seller_id_number` | string | yes | Seller ID number | | `osek_type` | string | yes | Business type (osek) | | `file_name` | string | no | Authorization file name | | `file_path` | string | no | Authorization file path | ### Request example No example is documented; this template is generated from the fields — replace the placeholder values. ```json { "seller_email": "<seller_email>", "seller_id_number": "<seller_id_number>", "osek_type": "<osek_type>", "file_name": "<file_name>", "file_path": "<file_path>" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/partner/api/tax-authority/setup' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "seller_email": "<seller_email>", "seller_id_number": "<seller_id_number>", "osek_type": "<osek_type>" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/partner/api/tax-authority/setup", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "seller_email": "<seller_email>", "seller_id_number": "<seller_id_number>", "osek_type": "<osek_type>" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/partner/api/tax-authority/setup", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "seller_email": "<seller_email>", "seller_id_number": "<seller_id_number>", "osek_type": "<osek_type>", }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "seller_email": "<seller_email>", "seller_id_number": "<seller_id_number>", "osek_type": "<osek_type>" } BODY; $ch = curl_init('https://sandbox.payme.io/api/partner/api/tax-authority/setup'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Tax authority setup successful (success) ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` - [Set VAT balance](https://docs-staging.payme.io/keep/partners-api/setvatbalance): POST /partner/api/sellers/vat-balance — Set VAT balance # Set VAT balance - Sandbox: `POST https://sandbox.payme.io/api/partner/api/sellers/vat-balance` - Production: `POST https://live.payme.io/api/partner/api/sellers/vat-balance` ## Credentials - Header `Authorization: Bearer <token>` Set VAT balance for a seller ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `socialId` | string | no | Seller social ID | | `email` | string | no | Seller email | | `id` | string | no | Seller ID | | `balance` | number | yes | Balance amount | | `reportingYear` | integer | no | Reporting year | | `reportingMonth` | integer | no | Reporting month | ### Request example No example is documented; this template is generated from the fields — replace the placeholder values. ```json { "socialId": "<socialId>", "email": "<email>", "id": "<id>", "balance": 0, "reportingYear": 0, "reportingMonth": 0 } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/partner/api/sellers/vat-balance' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "balance": 0 }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/partner/api/sellers/vat-balance", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "balance": 0 }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/partner/api/sellers/vat-balance", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "balance": 0, }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "balance": 0 } BODY; $ch = curl_init('https://sandbox.payme.io/api/partner/api/sellers/vat-balance'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — VAT balance updated (success) ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` - [Set tax balance](https://docs-staging.payme.io/keep/partners-api/settaxbalance): POST /partner/api/sellers/tax-balance — Set tax balance # Set tax balance - Sandbox: `POST https://sandbox.payme.io/api/partner/api/sellers/tax-balance` - Production: `POST https://live.payme.io/api/partner/api/sellers/tax-balance` ## Credentials - Header `Authorization: Bearer <token>` Set tax balance for a seller ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `socialId` | string | no | Seller social ID | | `email` | string | no | Seller email | | `id` | string | no | Seller ID | | `balance` | number | yes | Balance amount | | `reportingYear` | integer | no | Reporting year | | `reportingMonth` | integer | no | Reporting month | ### Request example No example is documented; this template is generated from the fields — replace the placeholder values. ```json { "socialId": "<socialId>", "email": "<email>", "id": "<id>", "balance": 0, "reportingYear": 0, "reportingMonth": 0 } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/partner/api/sellers/tax-balance' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "balance": 0 }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/partner/api/sellers/tax-balance", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "balance": 0 }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/partner/api/sellers/tax-balance", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "balance": 0, }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "balance": 0 } BODY; $ch = curl_init('https://sandbox.payme.io/api/partner/api/sellers/tax-balance'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Tax balance updated (success) ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` - [Get financial checkpoints](https://docs-staging.payme.io/keep/partners-api/getcheckpoints): GET /partner/api/statistic/checkpoints — Get financial checkpoints # Get financial checkpoints - Sandbox: `GET https://sandbox.payme.io/api/partner/api/statistic/checkpoints` - Production: `GET https://live.payme.io/api/partner/api/statistic/checkpoints` ## Credentials - Header `Authorization: Bearer <token>` Retrieve financial checkpoints for a seller ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `socialId` | query | string | yes | Seller social/business ID | | `reportingYear` | query | integer | yes | Reporting year | | `reportingMonths` | query | string | no | Reporting months array | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/partner/api/statistic/checkpoints?socialId=<socialId>&reportingYear=<reportingYear>' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/partner/api/statistic/checkpoints?socialId=<socialId>&reportingYear=<reportingYear>", { method: "GET", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/partner/api/statistic/checkpoints?socialId=<socialId>&reportingYear=<reportingYear>", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/partner/api/statistic/checkpoints?socialId=<socialId>&reportingYear=<reportingYear>'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Successful response (success) | Field | Type | Description | | --- | --- | --- | | `checkpoints` | array | | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` - [Get tax predictions](https://docs-staging.payme.io/keep/partners-api/gettaxpredictions): GET /partner/api/statistic/tax-predictions — Get tax predictions # Get tax predictions - Sandbox: `GET https://sandbox.payme.io/api/partner/api/statistic/tax-predictions` - Production: `GET https://live.payme.io/api/partner/api/statistic/tax-predictions` ## Credentials - Header `Authorization: Bearer <token>` Retrieve tax predictions for a seller ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `socialId` | query | string | yes | Seller social/business ID | | `reportingYear` | query | integer | yes | Reporting year | | `reportingMonths` | query | string | no | Reporting months array | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/partner/api/statistic/tax-predictions?socialId=<socialId>&reportingYear=<reportingYear>' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/partner/api/statistic/tax-predictions?socialId=<socialId>&reportingYear=<reportingYear>", { method: "GET", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/partner/api/statistic/tax-predictions?socialId=<socialId>&reportingYear=<reportingYear>", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/partner/api/statistic/tax-predictions?socialId=<socialId>&reportingYear=<reportingYear>'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Successful response (success) | Field | Type | Description | | --- | --- | --- | | `predictions` | array | | | `predictions[].reportingYear` | string | | | `predictions[].reportingMonth` | string | | | `predictions[].totalIncomesWithoutVat` | number | | | `predictions[].totalIncomesOriginTaxDeduction` | number | | | `predictions[].totalDeductibleExpenses` | number | | | `predictions[].yearlyPredictedProfit` | number | | | `predictions[].predictedTaxAmount` | number | | | `predictions[].paychecksPredictedSalary` | number | | | `predictions[].paychecksPredictedTax` | number | | | `predictions[].refundPointsValue` | number | | | `predictions[].predictedTaxRateADV` | number | | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `statusCode` | integer | HTTP status code | | `message` | string | Error message(s) | | `error` | string | Error type | ```json { "statusCode": 400, "message": [ "Validation failed" ], "error": "Bad Request" } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `error` | string | | | `error_description` | string | | ```json { "error": "unauthorized_client", "error_description": "Client authentication failed" } ``` ## Products and Customers - [Generate JWT Token](https://docs-staging.payme.io/products-and-customers/authentication/post-auth-token): POST /auth/token — Generate JWT Token # Generate JWT Token - Sandbox: `POST https://sandbox.payme.io/api/auth/token` - Production: `POST https://live.payme.io/api/auth/token` ## Credentials No credentials are documented for this endpoint. Generates a new JWT token using the client key and seller key. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `mpl` | string | no | | | `key` | string | no | | ### Request example ```json { "mpl": "MPLMPL", "key": "clientkey" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/auth/token' \ -H 'Content-Type: application/json' \ --data-raw '{ "mpl": "MPLMPL", "key": "clientkey" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/auth/token", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "mpl": "MPLMPL", "key": "clientkey" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/auth/token", json={ "mpl": "MPLMPL", "key": "clientkey", }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "mpl": "MPLMPL", "key": "clientkey" } BODY; $ch = curl_init('https://sandbox.payme.io/api/auth/token'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Token generated successfully. (success) | Field | Type | Description | | --- | --- | --- | | `access_token` | string | The generated JWT token. | | `refresh_token` | string | The type of the token, typically 'Bearer'. | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `message` | string | | | `status_error_code` | integer | | ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `message` | string | | | `status_error_code` | integer | | ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `message` | string | | | `status_error_code` | integer | | - [Refresh JWT Token](https://docs-staging.payme.io/products-and-customers/authentication/post-auth-refresh): POST /auth/refresh — Refresh JWT Token # Refresh JWT Token - Sandbox: `POST https://sandbox.payme.io/api/auth/refresh` - Production: `POST https://live.payme.io/api/auth/refresh` ## Credentials - Header `PayMe-Partner-Key` (API key) and Header `PayMe-Merchant-Key` (API key) - Request body field `refresh_token` (required): The refresh token. Refreshes an existing JWT token using the refresh token. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `PayMe-Partner-Key` | header | string | yes | The unique Partner identifier. | | `PayMe-Merchant-Key` | header | string | yes | The unique Seller identifier. | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `refresh_token` | string | yes | The refresh token. | ### Request example No example is documented; this template is generated from the fields — replace the placeholder values. ```json { "refresh_token": "<refresh_token>" } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/auth/refresh' \ -H 'Content-Type: application/json' \ -H 'PayMe-Partner-Key: <PayMe-Partner-Key>' \ -H 'PayMe-Merchant-Key: <PayMe-Merchant-Key>' \ --data-raw '{ "refresh_token": "<refresh_token>" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/auth/refresh", { method: "POST", headers: { "Content-Type": "application/json", "PayMe-Partner-Key": "<PayMe-Partner-Key>", "PayMe-Merchant-Key": "<PayMe-Merchant-Key>", }, body: JSON.stringify({ "refresh_token": "<refresh_token>" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/auth/refresh", headers={ "PayMe-Partner-Key": "<PayMe-Partner-Key>", "PayMe-Merchant-Key": "<PayMe-Merchant-Key>", }, json={ "refresh_token": "<refresh_token>", }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "refresh_token": "<refresh_token>" } BODY; $ch = curl_init('https://sandbox.payme.io/api/auth/refresh'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'PayMe-Partner-Key: <PayMe-Partner-Key>', 'PayMe-Merchant-Key: <PayMe-Merchant-Key>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Token refreshed successfully. (success) | Field | Type | Description | | --- | --- | --- | | `access_token` | string | The new JWT token. | | `expires_in` | integer | The expiration time of the token in seconds. | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `message` | string | | | `status_error_code` | integer | | ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `message` | string | | | `status_error_code` | integer | | ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `message` | string | | | `status_error_code` | integer | | - [Get Products](https://docs-staging.payme.io/products-and-customers/products/get-products): GET /products — Get Products # Get Products - Sandbox: `GET https://sandbox.payme.io/api/products` - Production: `GET https://live.payme.io/api/products` ## Credentials - Header `Authorization: Bearer <token>` The GET /products endpoint provides access to product data, enabling clients to filter and sort through available products. Clients can specify parameters such as product status, creation date range, currency, description, order columns, and directions. Additionally, the endpoint allows for pagination and setting price ranges. The response will include a list of products that match the specified query parameters, along with metadata such as the total number of products available and pagination details. This endpoint is essential for applications that require dynamic and flexible product searches. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `status` | query | string | yes | The product status - indicates if the product is available or not. | | `created_at[]` | query | string | no | Common date range. Use [min] / [max] on query parameters. | | `due_date` | query | string | no | Common date range. Use [min] / [max] on query parameters. | | `items_per_page` | query | integer | no | The count of items returned under the page, up to 500 per page. | | `page` | query | integer | no | The page number | | `name` | query | string | no | The product name. | | `description` | query | string | no | The product description. | | `currency` | query | string | no | The product currency - ISO 3 letters. | | `price_inc_vat_min` | query | number | no | The minimum price include VAT -> Store Price only. (store_configuration) | | `price_inc_vat_max` | query | number | no | The maximum price include VAT -> Store price only. (store_configuration) | | `sort_by` | query | string | no | The column name that will be used for ordering the results. | | `sort_direction` | query | string | no | The direction of ordering. | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/products?status=<status>' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/products?status=<status>", { method: "GET", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/products?status=<status>", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/products?status=<status>'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Request validated. (success) | Field | Type | Description | | --- | --- | --- | | `guid` | string | | | `product_remote_id` | string | | | `name` | string | | | `status` | integer | | | `category` | string | | | `description` | string | | | `store_prices` | object | | | `store_prices.currency` | string | | | `store_prices.vat_free` | boolean | | | `store_prices.price_without_vat` | number | | | `store_prices.price_include_vat` | number | | | `costs` | object | | | `costs.currency` | string | | | `costs.vat_free` | boolean | | | `costs.price_without_vat` | integer | | | `costs.price_include_vat` | number | | ```json { "guid": "PRODUCT123-123-123-123", "product_code": "PROD001", "name": "Example Product", "status": 1, "category": 3, "description": "This is a description of the example product.", "store_configuration": { "currency": "USD", "vat_free": false, "Price_without_vat": 99.99, "Price_include_vat": 117.99 }, "costs_details": { "currency": "USD", "vat_free": false, "Price_without_vat": 50, "Price_include_vat": 58.5 } } ``` ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `message` | object | | | `message.error_text` | string | | | `message.error_code` | string | | ```json { "status_code": 1, "message": "Bad Request", "status_error_code": 400 } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `message` | string | | | `status_error_code` | integer | | ```json { "status_code": 1, "message": "unauthorized request", "status_error_code": 401 } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `message` | string | | | `status_error_code` | integer | | ```json { "status_code": 1, "message": "Internal Server Error", "status_error_code": 500 } ``` - [Get by Product Guid](https://docs-staging.payme.io/products-and-customers/products/get-products-guid): GET /products/{guid} — Get by Product Guid # Get by Product Guid - Sandbox: `GET https://sandbox.payme.io/api/products/{guid}` - Production: `GET https://live.payme.io/api/products/{guid}` ## Credentials - Header `Authorization: Bearer <token>` The `GET /products/guid` endpoint provides access to product data, enabling clients to filter and sort through available products. Clients can specify parameters such as product status, creation date range, currency, description, order columns, and directions. Additionally, the endpoint allows for pagination and setting price ranges. The response will include a list of products that match the specified query parameters, along with metadata such as the total number of products available and pagination details. This endpoint is essential for applications that require dynamic and flexible product searches. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `guid` | path | string | yes | | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/products/<guid>' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/products/<guid>", { method: "GET", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/products/<guid>", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/products/<guid>'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `guid` | string | The Product unique identifier. | | `product_remote_id` | string | | | `name` | string | The product name. | | `status` | integer | The status of the product. Options: 1 = `Available`, 0 = `Not Available` | | `description` | string | The product description. | | `store_configuration` | object | | | `store_configuration.currency` | string | The product store currency. 3 Letter ISO Format | | `store_configuration.vat_free` | boolean | The VAT Indicator of the product. | | `store_configuration.price_without_vat` | number | The price of the product, excluding VAT. | | `store_configuration.price_include_vat` | number | The price of the product, including VAT. | | `costs_details` | object | | | `costs_details.currency` | string | The product store currency. 3 Letter ISO Format | | `costs_details.vat_free` | boolean | The VAT Indicator of the product. | | `costs_details.price_without_vat` | number | The price of the product, excluding VAT. | | `costs_details.price_include_vat` | number | The price of the product, including VAT. | ```json { "guid": "string", "product_code": "string", "name": "string", "status": 0, "category": 0, "description": "string", "store_configuration": { "currency": "string", "vat_free": true, "Price_without_vat": 0, "Price_include_vat": 0 }, "costs_details": { "currency": "string", "vat_free": true, "Price_without_vat": 0, "Price_include_vat": 0 } } ``` ### 400 — Bad Request (error) ### 401 — Unauthorized (error) ### 500 — Internal Server Error (error) - [Update Product](https://docs-staging.payme.io/products-and-customers/products/patch-products-product-id): PATCH /products/{guid} — Update Product # Update Product - Sandbox: `PATCH https://sandbox.payme.io/api/products/{guid}` - Production: `PATCH https://live.payme.io/api/products/{guid}` ## Credentials - Header `Authorization: Bearer <token>` The patch-product endpoint allows for partial updates to an existing product's details using `guid` as the identifier. Below is an example JSON payload for a PATCH request to update various fields of a product. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `guid` | path | string | yes | | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `name` | string | no | The name of the product. | | `status` | integer | no | The status of the product. Options: 1 = `Available`, 0 = `Not Available` | | `description` | string | no | The description of the product. | | `store_configuration` | object | no | The item store configurations object. | | `store_configuration.currency` | string | no | The currency of the item in the store. 3 Letter ISO | | `store_configuration.is_vat_free` | boolean | no | The item VAT indicator. | | `store_configuration.price_without_vat` | number | no | The price without VAT. | | `store_configuration.price_include_vat` | number | no | The price including VAT. | | `costs_details` | object | no | The item costs object. | | `costs_details.currency` | string | no | The currency of the item in the store. 3 Letter ISO | | `costs_details.is_vat_free` | boolean | no | The item VAT indicator. | | `costs_details.price_without_vat` | number | no | The price without VAT. | | `costs_details.price_include_vat` | number | no | The price including VAT. | ### Request example ```json { "payme_client_key": "your_payme_client_key", "seller_payme_id": "seller123", "guid": "PRDCT001-123-123", "name": "Example Product", "status": 1, "category": 3, "description": "This is a description of the example product.", "item_sale_details": { "currency": "USD", "vat_free": false, "Price_without_vat": 99.99, "Price_include_vat": 117.99 }, "item_costs_details": { "currency": "USD", "vat_free": false, "Price_without_vat": 50, "Price_include_vat": 58.5 } } ``` ## Code samples ### curl ```bash curl -X PATCH 'https://sandbox.payme.io/api/products/<guid>' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "payme_client_key": "your_payme_client_key", "seller_payme_id": "seller123", "guid": "PRDCT001-123-123", "name": "Example Product", "status": 1, "category": 3, "description": "This is a description of the example product.", "item_sale_details": { "currency": "USD", "vat_free": false, "Price_without_vat": 99.99, "Price_include_vat": 117.99 }, "item_costs_details": { "currency": "USD", "vat_free": false, "Price_without_vat": 50, "Price_include_vat": 58.5 } }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/products/<guid>", { method: "PATCH", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "payme_client_key": "your_payme_client_key", "seller_payme_id": "seller123", "guid": "PRDCT001-123-123", "name": "Example Product", "status": 1, "category": 3, "description": "This is a description of the example product.", "item_sale_details": { "currency": "USD", "vat_free": false, "Price_without_vat": 99.99, "Price_include_vat": 117.99 }, "item_costs_details": { "currency": "USD", "vat_free": false, "Price_without_vat": 50, "Price_include_vat": 58.5 } }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.patch( "https://sandbox.payme.io/api/products/<guid>", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "payme_client_key": "your_payme_client_key", "seller_payme_id": "seller123", "guid": "PRDCT001-123-123", "name": "Example Product", "status": 1, "category": 3, "description": "This is a description of the example product.", "item_sale_details": { "currency": "USD", "vat_free": False, "Price_without_vat": 99.99, "Price_include_vat": 117.99, }, "item_costs_details": { "currency": "USD", "vat_free": False, "Price_without_vat": 50, "Price_include_vat": 58.5, }, }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "payme_client_key": "your_payme_client_key", "seller_payme_id": "seller123", "guid": "PRDCT001-123-123", "name": "Example Product", "status": 1, "category": 3, "description": "This is a description of the example product.", "item_sale_details": { "currency": "USD", "vat_free": false, "Price_without_vat": 99.99, "Price_include_vat": 117.99 }, "item_costs_details": { "currency": "USD", "vat_free": false, "Price_without_vat": 50, "Price_include_vat": 58.5 } } BODY; $ch = curl_init('https://sandbox.payme.io/api/products/<guid>'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `guid` | string | | | `created_at` | string | | | `updated_at` | string | | ### 400 — Bad Request (error) ### 401 — Unauthorized (error) ### 500 — Internal Server Error (error) - [Delete Product](https://docs-staging.payme.io/products-and-customers/products/delete-products-guid): DELETE /products/{guid} — Delete Product # Delete Product - Sandbox: `DELETE https://sandbox.payme.io/api/products/{guid}` - Production: `DELETE https://live.payme.io/api/products/{guid}` ## Credentials - Header `Authorization: Bearer <token>` The delete-product endpoint is a critical component of the product management system. It allows clients to remove products from the available products list based on specific identifiers. This operation is essential for maintaining an up-to-date and accurate product catalog, ensuring that obsolete or discontinued items are no longer available in the inventory. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `guid` | path | string | yes | | ## Request body Content type: `application/json` ### Request example ```json { "payme_client_key": "360_project_client_key", "seller_payme_id": "seller_identifier", "guid": "guid value" } ``` ## Code samples ### curl ```bash curl -X DELETE 'https://sandbox.payme.io/api/products/<guid>' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "payme_client_key": "360_project_client_key", "seller_payme_id": "seller_identifier", "guid": "guid value" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/products/<guid>", { method: "DELETE", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "payme_client_key": "360_project_client_key", "seller_payme_id": "seller_identifier", "guid": "guid value" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.delete( "https://sandbox.payme.io/api/products/<guid>", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "payme_client_key": "360_project_client_key", "seller_payme_id": "seller_identifier", "guid": "guid value", }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "payme_client_key": "360_project_client_key", "seller_payme_id": "seller_identifier", "guid": "guid value" } BODY; $ch = curl_init('https://sandbox.payme.io/api/products/<guid>'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'DELETE', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `message` | string | The text indicator of the action requested to delete the product. | | `guid` | string | The unique PayMe Product identifier. | ```json { "status_code": 0, "message": "Product deleted successfully", "guid": "PRDCT123-123-123" } ``` ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | ```1 = Failure, 0 = Sucess ``` | | `message` | string | The error text message. | | `status_error_code` | integer | The error code. | ```json { "status_code": 1, "message": "Bad Request", "status_error_code": 400 } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | ```1 = Failure, 0 = Sucess ``` | | `message` | string | The error text message. | | `status_error_code` | integer | The error code. | ```json { "status_code": 1, "message": "Unauthorized request", "status_error_code": 401 } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | ```1 = Failure, 0 = Sucess ``` | | `message` | string | The error text message. | | `status_error_code` | integer | The error code. | ```json { "status_code": 1, "message": "Internal Server Error", "status_error_code": 500 } ``` - [Create New Product](https://docs-staging.payme.io/products-and-customers/products/post-user): POST /products — Create New Product # Create New Product - Sandbox: `POST https://sandbox.payme.io/api/products` - Production: `POST https://live.payme.io/api/products` ## Credentials - Header `Authorization: Bearer <token>` This endpoint is an essential part of the product management system. The endpoint allows clients to add new products to the system by sending the necessary information in the request. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` Post the necessary fields for the API to create a new user. | Field | Type | Required | Description | | --- | --- | --- | --- | | `product_remote_id` | string | no | The extneral product identifier. | | `name` | string | yes | The name of the product. | | `status` | integer | yes | The status of the product. Options: 1 = `Available`, 0 = `Not Available` | | `description` | string | yes | The product description. Maximum Length = 75 Characters. | | `store_prices` | object | no | The item store configuration. | | `store_prices.currency` | string | no | 3 Letter ISO. | | `store_prices.is_vat_free` | boolean | no | The VAT indicator. | | `store_prices.price_without_vat` | number | no | Price without VAT. | | `store_prices.price_include_vat` | number | no | Price with VAT. | | `costs` | object | no | The item costs object. | | `costs.currency` | string | no | 3 Letter ISO. | | `costs.is_vat_free` | boolean | no | The VAT indicator. | | `costs.price_without_vat` | number | no | The price without VAT. | | `costs.price_include_vat` | number | no | The price including VAT. | ### Request example ```json { "payme_client_key": "your_payme_client_key", "seller_payme_id": "seller789", "product_code": "PROD003", "name": "Detailed Costs Product", "status": 0, "category": 2, "description": "This product includes detailed cost information.", "item_sale_details": { "currency": "GBP", "vat_free": false, "Price_without_vat": 150, "Price_include_vat": 180 }, "item_costs_details": { "currency": "GBP", "vat_free": false, "Price_without_vat": 70, "Price_include_vat": 84 } } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/products' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "payme_client_key": "your_payme_client_key", "seller_payme_id": "seller789", "product_code": "PROD003", "name": "Detailed Costs Product", "status": 0, "category": 2, "description": "This product includes detailed cost information.", "item_sale_details": { "currency": "GBP", "vat_free": false, "Price_without_vat": 150, "Price_include_vat": 180 }, "item_costs_details": { "currency": "GBP", "vat_free": false, "Price_without_vat": 70, "Price_include_vat": 84 } }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/products", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "payme_client_key": "your_payme_client_key", "seller_payme_id": "seller789", "product_code": "PROD003", "name": "Detailed Costs Product", "status": 0, "category": 2, "description": "This product includes detailed cost information.", "item_sale_details": { "currency": "GBP", "vat_free": false, "Price_without_vat": 150, "Price_include_vat": 180 }, "item_costs_details": { "currency": "GBP", "vat_free": false, "Price_without_vat": 70, "Price_include_vat": 84 } }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/products", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "payme_client_key": "your_payme_client_key", "seller_payme_id": "seller789", "product_code": "PROD003", "name": "Detailed Costs Product", "status": 0, "category": 2, "description": "This product includes detailed cost information.", "item_sale_details": { "currency": "GBP", "vat_free": False, "Price_without_vat": 150, "Price_include_vat": 180, }, "item_costs_details": { "currency": "GBP", "vat_free": False, "Price_without_vat": 70, "Price_include_vat": 84, }, }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "payme_client_key": "your_payme_client_key", "seller_payme_id": "seller789", "product_code": "PROD003", "name": "Detailed Costs Product", "status": 0, "category": 2, "description": "This product includes detailed cost information.", "item_sale_details": { "currency": "GBP", "vat_free": false, "Price_without_vat": 150, "Price_include_vat": 180 }, "item_costs_details": { "currency": "GBP", "vat_free": false, "Price_without_vat": 70, "Price_include_vat": 84 } } BODY; $ch = curl_init('https://sandbox.payme.io/api/products'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Product created successfully. (success) | Field | Type | Description | | --- | --- | --- | | `created_at` | string | The timestamp of the creation. | | `guid` | integer | The unique PayMe product identifier. | ```json { "status_code": 0, "message": "OK", "Created_date": "2024-05-16T00:00:00Z", "Payme_product_id": 1234567890 } ``` ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `message` | string | The error text message. | | `status_error_code` | integer | The error code. | ```json { "status_code": 1, "message": "Bad Request", "status_error_code": 400 } ``` ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `message` | string | The error text message. | | `status_error_code` | integer | The error code. | ```json { "status_code": 1, "message": "Unauthorized request", "status_error_code": 401 } ``` ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `message` | string | The error text message. | | `status_error_code` | integer | | ```json { "status_code": 1, "message": "Internal Server Error", "status_error_code": 500 } ``` - [Get Customers](https://docs-staging.payme.io/products-and-customers/customers/get-customers): GET /customers — Get Customers # Get Customers - Sandbox: `GET https://sandbox.payme.io/api/customers` - Production: `GET https://live.payme.io/api/customers` ## Credentials - Header `Authorization: Bearer <token>` The GET /customers endpoint provides access to customer data, enabling clients to filter and sort through available customers. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `status` | query | boolean | no | The customer status - indicates if the customer is available or not. 0 - Deacativated, 1 - Active, 2 - Draft | | `created_at` | query | string | no | Common date range. Use [min] / [max] on query parameters. | | `due_date` | query | string | no | Common date range. Use [min] / [max] on query parameters. | | `items_per_page` | query | integer | no | The number of items per page. | | `page` | query | integer | no | The page number. | | `first_name` | query | string | no | The customer's first name. | | `last_name` | query | string | no | The customer's last name. | | `email` | query | string | no | The customer's email. | | `phone_number` | query | string | no | The customer's phone number. | | `description` | query | string | no | The customer description. | | `sort_by` | query | string | no | The column name for ordering results. | | `sort_direction` | query | string | no | The direction for ordering results. | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/customers' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/customers", { method: "GET", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/customers", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/customers'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — User Found (success) | Field | Type | Description | | --- | --- | --- | | `items_count` | integer | | | `items` | array | | | `items[].guid` | string | | | `items[].first_name` | string | | | `items[].last_name` | string | | | `items[].email` | string | | | `items[].phone_number` | string | | | `items[].additional_phone_number` | string | | | `items[].country` | string | | | `items[].city` | string | | | `items[].street` | string | | | `items[].building_number` | string | | | `items[].floor` | string | | | `items[].zip` | string | | | `items[].middle_name` | string | | | `items[].company_name` | string | | | `items[].gender` | string | | | `items[].description` | string | | | `items[].birthday` | string | | | `items[].created_at` | string | | | `items[].updated_at` | string | | | `items[].status` | integer | The status of the product. Options: 1 = `Available`, 0 = `Not Available` | | `items[].payment_tokens` | object | | | `items[].payment_tokens.payment_method` | string | The payment method of the token. Allowed values: 1. `Credit Card` 2. `IL Direct Debit` | | `items[].payment_tokens.token_guid` | string | The unique identifier of the token in PayMe. | ```json { "items_count": 1, "items": [ { "guid": "string", "first_name": "string", "last_name": "string", "email": "string", "phone_number": "string", "additional_phone_number": "string", "country": "string", "city": "string", "street": "string", "building_number": "string", "floor": "string", "zip": "string", "middle_name": "string", "company_name": "string", "gender": "string", "description": "string", "birthday": "2019-08-24", "created_date": "2019-08-24", "update_date": "2019-08-24", "status": 0, "payment_tokens": { "payment_method": "string", "token_guid": "string" } } ] } ``` ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `message` | string | | | `status_error_code` | integer | | ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `message` | string | | | `status_error_code` | integer | | ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `message` | string | | | `status_error_code` | integer | | - [Create New Customer](https://docs-staging.payme.io/products-and-customers/customers/post-customers): POST /customers — Create New Customer # Create New Customer - Sandbox: `POST https://sandbox.payme.io/api/customers` - Production: `POST https://live.payme.io/api/customers` ## Credentials - Header `Authorization: Bearer <token>` This endpoint allows clients to add new customers to the system by sending the necessary information in the request. ## Parameters This endpoint takes no path, query or header parameters. ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `customer_remote_id` | string | no | The customer's first name. | | `first_name` | string | yes | The customer's first name. | | `last_name` | string | yes | The customer's last name. | | `email` | string | yes | The customer's email. | | `phone_number` | string | yes | The customer's mobile number. | | `country` | string | no | The customer's country. | | `city` | string | no | The customer's city. | | `street` | string | no | The customer's street. | | `building_number` | string | no | The customer's building number. | | `floor` | string | no | The customer's floor. | | `zip` | string | no | The customer's ZIP code. | | `middle_name` | string | no | The customer's middle name. | | `company_name` | string | no | The customer's company name. | | `gender` | string | no | The customer's gender. Allowed values: 1. `Male` 2. `Female` 3. `Other` | | `description` | string | no | The customer description. | | `birthday` | string | no | The customer's birthday. MM-DD-YYYY Format | | `additional_phone` | string | no | Additional phone number of the customer. | | `payment_tokens` | object | no | | | `payment_tokens.payment_method` | string | no | The payment method of the token. Allowed values: 1. `Credit Card` 2. `IL Direct Debit` | | `payment_tokens.token_guid` | string | no | The unique identifier of the token in PayMe. | ### Request example No example is documented; this template is generated from the fields — replace the placeholder values. ```json { "customer_remote_id": "<customer_remote_id>", "first_name": "<first_name>", "last_name": "<last_name>", "email": "<email>", "phone_number": "<phone_number>", "country": "<country>", "city": "<city>", "street": "<street>", "building_number": "<building_number>", "floor": "<floor>", "zip": "<zip>", "middle_name": "<middle_name>", "company_name": "<company_name>", "gender": "<gender>", "description": "<description>", "birthday": "<birthday>", "additional_phone": "<additional_phone>", "payment_tokens": {} } ``` ## Code samples ### curl ```bash curl -X POST 'https://sandbox.payme.io/api/customers' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{ "first_name": "<first_name>", "last_name": "<last_name>", "email": "<email>", "phone_number": "<phone_number>" }' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/customers", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({ "first_name": "<first_name>", "last_name": "<last_name>", "email": "<email>", "phone_number": "<phone_number>" }), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.post( "https://sandbox.payme.io/api/customers", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={ "first_name": "<first_name>", "last_name": "<last_name>", "email": "<email>", "phone_number": "<phone_number>", }, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' { "first_name": "<first_name>", "last_name": "<last_name>", "email": "<email>", "phone_number": "<phone_number>" } BODY; $ch = curl_init('https://sandbox.payme.io/api/customers'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Customer created successfully. (success) | Field | Type | Description | | --- | --- | --- | | `guid` | integer | The unique PayMe customer identifier. | | `created_at` | string | The timestamp of the creation. | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `message` | string | | | `status_error_code` | integer | | ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `message` | string | | | `status_error_code` | integer | | ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `message` | string | | | `status_error_code` | integer | | - [Get by Customer Guid](https://docs-staging.payme.io/products-and-customers/customers/get-customers-guid): GET /customers/{guid} — Get by Customer Guid # Get by Customer Guid - Sandbox: `GET https://sandbox.payme.io/api/customers/{guid}` - Production: `GET https://live.payme.io/api/customers/{guid}` ## Credentials - Header `Authorization: Bearer <token>` ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `guid` | path | string | yes | The unique PayMe customer identifier. | ## Code samples ### curl ```bash curl -X GET 'https://sandbox.payme.io/api/customers/<guid>' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/customers/<guid>", { method: "GET", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.get( "https://sandbox.payme.io/api/customers/<guid>", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/customers/<guid>'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — OK (success) | Field | Type | Description | | --- | --- | --- | | `items_count` | integer | | | `items` | array | | | `items[].guid` | string | | | `items[].first_name` | string | | | `items[].last_name` | string | | | `items[].email` | string | | | `items[].phone_number` | string | | | `items[].additional_phone_number` | string | | | `items[].country` | string | | | `items[].city` | string | | | `items[].street` | string | | | `items[].building_number` | string | | | `items[].floor` | string | | | `items[].zip` | string | | | `items[].middle_name` | string | | | `items[].company_name` | string | | | `items[].gender` | string | | | `items[].description` | string | | | `items[].birthday` | string | | | `items[].created_at` | string | | | `items[].updated_at` | string | | | `items[].status` | integer | | | `items[].payment_tokens` | object | | | `items[].payment_tokens.payment_method` | string | | | `items[].payment_tokens.token_guid` | string | | ```json { "items_count": 1, "items": [ { "guid": "string", "first_name": "string", "last_name": "string", "email": "string", "phone_number": "string", "additional_phone_number": "string", "country": "string", "city": "string", "street": "string", "building_number": "string", "floor": "string", "zip": "string", "middle_name": "string", "company_name": "string", "gender": "string", "description": "string", "birthday": "2019-08-24", "created_date": "2019-08-24", "update_date": "2019-08-24", "status": 0, "payment_tokens": { "payment_method": "string", "token_guid": "string" } } ] } ``` ### 400 — Bad Request (error) ### 401 — Unauthorized (error) ### 500 — Internal Server Error (error) - [Update Customer](https://docs-staging.payme.io/products-and-customers/customers/patch-customers): PATCH /customers/{guid} — Update Customer # Update Customer - Sandbox: `PATCH https://sandbox.payme.io/api/customers/{guid}` - Production: `PATCH https://live.payme.io/api/customers/{guid}` ## Credentials - Header `Authorization: Bearer <token>` Update customer details. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `guid` | path | string | yes | The unique PayMe customer identifier. | ## Request body Content type: `application/json` | Field | Type | Required | Description | | --- | --- | --- | --- | | `customer_remote_id` | string | no | The unique identifier for the customer. | | `first_name` | string | no | The customer's first name. | | `middle_name` | string | no | The customer's middle name. | | `last_name` | string | no | The customer's last name. | | `email` | string | no | The customer's email. | | `phone_number` | string | no | The customer's mobile number. | | `additional_phone_number` | string | no | Additional phone number of the customer. | | `country` | string | no | The customer's country. | | `city` | string | no | The customer's city. | | `street` | string | no | The customer's street. | | `building_number` | string | no | The customer's building number. | | `floor` | string | no | The customer's floor. | | `zip` | string | no | The customer's ZIP code. | | `company_name` | string | no | The customer's company name. | | `gender` | string | no | The customer's gender. | | `description` | string | no | The customer description. | | `birthday` | string | no | The customer's birthday. | | `payment_tokens` | object | no | | | `payment_tokens.payment_method` | string | no | The payment method of the token. Allowed values: 1. `Credit Card` 2. `IL Direct Debit` | | `payment_tokens.token_guid` | string | no | The unique identifier of the token in PayMe. | ### Request example No example is documented; this template is generated from the fields — replace the placeholder values. ```json { "customer_remote_id": "<customer_remote_id>", "first_name": "<first_name>", "middle_name": "<middle_name>", "last_name": "<last_name>", "email": "<email>", "phone_number": "<phone_number>", "additional_phone_number": "<additional_phone_number>", "country": "<country>", "city": "<city>", "street": "<street>", "building_number": "<building_number>", "floor": "<floor>", "zip": "<zip>", "company_name": "<company_name>", "gender": "<gender>", "description": "<description>", "birthday": "<birthday>", "payment_tokens": {} } ``` ## Code samples ### curl ```bash curl -X PATCH 'https://sandbox.payme.io/api/customers/<guid>' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_TOKEN>' \ --data-raw '{}' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/customers/<guid>", { method: "PATCH", headers: { "Content-Type": "application/json", "Authorization": "Bearer <YOUR_TOKEN>", }, body: JSON.stringify({}), }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.patch( "https://sandbox.payme.io/api/customers/<guid>", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, json={}, ) print(response.text) ``` ### PHP ```php <?php $body = <<<'BODY' {} BODY; $ch = curl_init('https://sandbox.payme.io/api/customers/<guid>'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer <YOUR_TOKEN>', ], CURLOPT_POSTFIELDS => $body, ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Customer updated successfully. (success) | Field | Type | Description | | --- | --- | --- | | `created_at` | string | The timestamp of the update. | | `updated_at` | string | The timestamp of the update. | | `guid` | integer | The unique PayMe customer identifier. | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `message` | string | | | `status_error_code` | integer | | ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `message` | string | | | `status_error_code` | integer | | ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `status_code` | integer | | | `message` | string | | | `status_error_code` | integer | | - [Delete Customer](https://docs-staging.payme.io/products-and-customers/customers/delete-customers): DELETE /customers/{guid} — Delete Customer # Delete Customer - Sandbox: `DELETE https://sandbox.payme.io/api/customers/{guid}` - Production: `DELETE https://live.payme.io/api/customers/{guid}` ## Credentials - Header `Authorization: Bearer <token>` Delete a customer by their unique PayMe identifier. ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `guid` | path | string | yes | The unique PayMe customer identifier. | ## Code samples ### curl ```bash curl -X DELETE 'https://sandbox.payme.io/api/customers/<guid>' \ -H 'Authorization: Bearer <YOUR_TOKEN>' ``` ### Node.js ```javascript const response = await fetch("https://sandbox.payme.io/api/customers/<guid>", { method: "DELETE", headers: { "Authorization": "Bearer <YOUR_TOKEN>", }, }); console.log(await response.text()); ``` ### Python ```python import requests response = requests.delete( "https://sandbox.payme.io/api/customers/<guid>", headers={ "Authorization": "Bearer <YOUR_TOKEN>", }, ) print(response.text) ``` ### PHP ```php <?php $ch = curl_init('https://sandbox.payme.io/api/customers/<guid>'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'DELETE', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer <YOUR_TOKEN>', ], ]); $response = curl_exec($ch); curl_close($ch); echo $response; ``` ## Responses ### 200 — Customer deleted successfully. (success) | Field | Type | Description | | --- | --- | --- | | `message` | string | The success message. | | `payme_guid` | string | The unique customer identifier. | ### 400 — Bad Request (error) | Field | Type | Description | | --- | --- | --- | | `message` | string | | | `status_error_code` | integer | | ### 401 — Unauthorized (error) | Field | Type | Description | | --- | --- | --- | | `message` | string | | | `status_error_code` | integer | | ### 500 — Internal Server Error (error) | Field | Type | Description | | --- | --- | --- | | `message` | string | | | `status_error_code` | integer | | ## eCommerce - [Page 1](https://docs-staging.payme.io/ecommerce/category-1/page-1)